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

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

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

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

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

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

怪談前夜

LD「まどか、君はセクションっていう言葉を知ってるかい?   簡単に言うと、リンカがメモリ配置をするときの基準さ」意外と知らない人が多いかもしれませんが、リンカの仕事は基本的にはメモリ配置の決定とシンボルの名前解決、そし … “怪談前夜”の続きを読む

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

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

定義済みマクロの表示

CやC++のプログラムを書くときには環境依存が出てくるときがあります。たとえばMacでもWindowsでも同一のソースから動かしたいとなると場合によっては#ifdefを用いて分岐をさせる必要が出てきます。しかし、コンパイ … “定義済みマクロの表示”の続きを読む

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

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

alignの罠

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