[H8-ML(2263)] Re: 例外処理でのスタックポインタ
From: "K.miyamae" <m_vega@xxxxxxxxxxxxx>
Date: 2002年10月06日(日)16時41分50秒
藤原さん

>基本的には、最初偶数に設定すると、奇数になることはありません。
サブルーチン内でのローカル変数の必要バイトサイズが奇数でも、
SPは偶数になるように調整されるのでしょうか(C言語で)?
基本的でないときは、どのような場合ですか?

>この時の基本的なテクニックとして、変数はすべてスタック上に確
>するというのがあります。
>・・・(途中省略)
> このときに、基本的には「サブルーチンで使う変数の大きさ」だけ
>スタックポインタから引き算して、そこに変数を確保します。

staticを使用しなければ自動的にスタックにエリアに確保さ
れるのでこのようなこのとは不要なのですよね。

廣田さん
>  MOV.L #(偶数):32,SP
>です。この命令がリセット例外処理の最初の命令になります。
3、4回読み直して自分なりに納得したのですが
奇数の状態で割込みが発生したとき、CCRを破壊する前に
スタックを変更しておくのですね。
最後はこれを元の戻すのが必要ですね。

でも(バグ、意図的に変更される場合は除いて)スタックの偶数アドレスが保証
されるなら(ここが気がかりですが)、不要ですね。

宮前








スレッド概略
[2260(R)](起点)
 └[表示中]
   ├[2264(1)]
   └[2265(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]