アセンブリ言語TIPS
仕事が忙しくて空挺団をアップデートできるのがいつかわからないため、BlackfinのTIPSをちょっとメモしておきます。
SPに即値を書いてはいけない
以下のようにSPに直接値を書き込んではいけません。
sp.L = lo(stacktop); sp.H = hi(stacktop);
この2行の間で割り込みが入るとプログラムが暴走します。SPに値を設定するときには次のように書きます。
r0.L = lo(stacktop); r0.H = hi(stacktop); sp=r0;
アプリケーション・プログラマには関係ない話です。OSを書く人は注意。私は割り込みハンドラの頭でスタックをタスク・スタックから割り込みスタックに切り替えるときに足をとられました。