STACKP & STACKA

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 レジスタの構造

このレジスタの初期値は不定です。

API

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
2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |