Endowsの日記: Endows の へっぽこプログラマ日誌 第17回
日記 by
Endows
SH のプログラミングの話。
Flash ROM の書き換えをしたいのだけれど、プログラム自身が Flash 上に乗っていて、書き換え中は Flash にアクセスできないので一旦関数をまるごと SRAM 上にコピーして SRAM 上で実行する、ということをしたいのだけれど、どうも途中で止まってしまう。
で、止まる箇所を調べたところ、どうも普通に見て問題があるとは思えないようなところ。で、 C のソースとアセンブラ出力を比較しながら調べたところ、原因発見。
ビットシフトを行おうとして、 JSR 命令で Flash 上へ飛んでました。
なんとなくそんな気はしていたけど、まさかこんな理由で引っかかっていたとは。 C のソースレベルで見ると関数呼び出しとかをしているわけではないので、なかなか気づきにくいところだと思う。以前、割算が命令数にしてどのくらいになるのか調べてみようと思ったときに、割算も同じようにサブルーチンに飛んでいるのを見ていたから気づいたようなもの。半日とかからずに気づいたのは運が良かった。ハマってたら今ごろは…。
う~む、プログラミングも奥が深い。
Endows の へっぽこプログラマ日誌 第17回 More ログイン