STACKPとSTACKAはPCスタック用の一時レジスタです。この二本のレジスタは組で使います。
HR A-19にはこの二本がPCスタックのスタックトップであると書いていますが、大間違いです。
STACKPとSTACKAはPUSH/POP命令を使ってPCスタックにアクセスする際に一時的に値をおくためのレジスタです。STACKPとSTACKAの値はコール/RTS/RTI/割り込みには影響されません。高級言語からこのレジスタにアクセスすることはまずありません。
STACKPは8ビット長、STACKAは16ビット長です。PCスタックには24ビットアドレスが格納されており、STACKPはページ部分(上位8ビット)、STACKAはオフセット部分(下位16ビット)と対応します。STACKPは16ビットレジスタとデータをやり取りする場合、右詰で上位は0フィル扱いになります。
図1 レジスタの構造
このレジスタの初期値は不定です。
VisualDSP++3.0 for 21xxはSTACKP/STACKPに対するC/C++のAPIを用意していません(sysreg.h 1.7.4.1)。どうしても高級言語からアクセスしたい場合にはインライン・アセンブラを使ってください。
特に記されていないため、STACKA/STACKPへの書き込みの次のサイクルにはデータが確定していると予想されます。
項目 | マニュアルのページ等 |
---|---|
解説 | HR A-19 |
スタックのデータの流れ | HR 3-35 |
PUSH/POP命令 | ISR 8-8 |