AVRはAVRはmain関数を抜け出してみる

main関数を抜け出したらどこに行くんだろう?、ってミサカはミサカはAVRを心配してみたり。前回の記事に書きましたがmain関数の最後にはret命令があります。パソコン上のプログラムであればこの後に少し処理を行ってから( … “AVRはAVRはmain関数を抜け出してみる”の続きを読む

こんなかたちで終わることしかできない私を許して下さい

今 万感の思いを込めて 命令が実行される今 万感の思いを込めて PC(プログラムカウンタ)が進むひとつのプログラムは終わり また新しいプログラムが始まるさらばAVRさらばmain関数さらば少年の日よ(十分な間を置く)(G … “こんなかたちで終わることしかできない私を許して下さい”の続きを読む

怪談:初期化されない.dataセクション

これは本当にあった話ですが…その日、私はいつも通りにプログラムを書いていたんですよ。すると、.dataセクションに置く必要のあるデータがあったので、.section .dataFOO: .byte 0x01, 0x02, … “怪談:初期化されない.dataセクション”の続きを読む

命令セットに騙される前のバカな私を、助けてあげてくれないかな?

AS「騙すという行為自体、僕たちには理解できない。仕様の理解不足から生じた判断ミスを後悔する時、何故か人間は、アセンブラを憎悪するんだよね」16ビットのデータに1を加算するとき、AVRでは一気に16ビットデータを扱うこと … “命令セットに騙される前のバカな私を、助けてあげてくれないかな?”の続きを読む

アライメントのなく頃に 目明し編

AS「君の速さに対する情熱は、保守性を凌駕した。さあ、解き放ってごらん。その新しい技術を!」 通常、.alignというPseudo命令はバイト境界を調整するために使います。例えば、32ビットのデータを4の倍数のアドレスに … “アライメントのなく頃に 目明し編”の続きを読む

alignの罠

あ…ありのまま 今 起こった事を話すぜ!『データのアライメントをしようと思ったらいつのまにかメモリを大量消費していた』コンパイルミスだとかリンカのバグだとかそんなチャチなもんじゃあ 断じてねえもっと恐ろしいものの片鱗を味 … “alignの罠”の続きを読む

1の個数を数える(in assembler)

マイコンなどの低レベル処理をしているとビットを意識した処理を行うことが多いです。パリティ、CRCなどが代表的です。 今回はその仲間である「1となっているビットの個数を数える」方法の高速化を紹介します。 通常は1ビットずつ … “1の個数を数える(in assembler)”の続きを読む