PICのスタックメモリの構造

【スタックメモリとは?】

スタックメモリとは独立に備えられている小さなメモリで、何に
使われるかというと、サブルーチンをCALL命令で呼んだ時と、
割り込みが入った時の戻り番地の格納用として使われます。


【スタックメモリの構造と動作】

スタックメモリは13ビット幅のPCレジスタ格納用のメモリが
8個だけで出来ています。
その構造は下図のようになっていて、今格納されている場所
をスタックポインターと呼ばれるポインターレジスタが指して
います。このスタックポインターは内部だけで使われ命令で
読み書きすることはできません。




動作はまず、CALL命令が実行された時と、割り込みが受け
付けられて強制的に4番地にジャンプする時、PUSH動作
いって戻る場所(CALL命令の次、割り込みの入った次)のアド
レスをスタックポインターが指しているスタックメモリの場所に
書込みます。そしてスタックポインターは+1されます。

その後、POP動作といって、サブルーチンや割り込み処理の
最後でRETURNする時、スタックポインターを−1することで、
直前のスタックから戻りアドレスを取り出しPCレジスタに上書
きします。これで元の場所に戻ることが出来ます。

<注意>
 ここで、スタックの深さは8レベル(8このメモリしかない)なの
 で、サブルーチンの中でまたサブルーチンを呼ぶ(ネスティン
 グと呼ぶ)ということを繰り返すと、スタックメモリが足りなく
 なってしまいます。
 その時は、スタックポインターはサイクリックに回るので、古い
 戻り番地は上書きされてしまい、もう元に戻ることは出来なく
 なってしまいます。
 従って、
  《サブルーチンのネスティングは余り多用してはダメ》
 ということになります。せいぜい3回程度のネスティングに
 抑えておくのが安全。




   次のページへ        目次ページへ