私は MSP430 マイクロコントローラーに取り組んでおり、そのアーキテクチャーを調べていました。ユーザー ガイドの機能タブの下に、「プログラム カウンター (PC)、ステータス レジスター (SR)、およびスタック ポインター (SP) を含むフル レジスター アクセス」のような記述があります。アーキテクチャに関係なく、CPU は常にすべてのレジスタにアクセスできるという印象を受けました。
発言に対する私の理解は間違っているかもしれません。誰かがそれが正確に何を意味するのか説明できますか?
私は MSP430 マイクロコントローラーに取り組んでおり、そのアーキテクチャーを調べていました。ユーザー ガイドの機能タブの下に、「プログラム カウンター (PC)、ステータス レジスター (SR)、およびスタック ポインター (SP) を含むフル レジスター アクセス」のような記述があります。アーキテクチャに関係なく、CPU は常にすべてのレジスタにアクセスできるという印象を受けました。
発言に対する私の理解は間違っているかもしれません。誰かがそれが正確に何を意味するのか説明できますか?
ウィキペディアのページによると:
プロセッサには 16 個の 16 ビット レジスタがあり、そのうち 4 個は特別な目的専用です。R0 はプログラム カウンタ、R1 はスタック ポインタ、R2 はステータス レジスタ、R3 は定数ジェネレータと呼ばれる特殊なレジスタで、追加のオペランドを必要としない、一般的に使用される 6 つの定数値。R3 は常に 0 として読み取られ、R3 への書き込みは無視されます。R4 から R15 までは、一般的に使用できます。
言い換えれば、この場合の「フル アクセス」とは、jmp-type 命令を使用して新しい場所にジャンプできるようにするだけでなくxor r0, #1234、プログラム カウンターを直接 (そしておそらく致命的に) 変更できるようにすることも意味します。
R3、定数ジェネレーター、および引用に記載されていない4つのうちの1つを除いて、他の特殊レジスターについても同様です。すべての命令がそのレジスタで動作する可能性がありますが、使用するアドレッシング モードに応じて、書き込みを無視し、読み取り時にさまざまな固定値を生成します (-1..2を使用すると、 およびR2も得られます)。48
少し奇妙に思えるかもしれませんが、私が今まで見た中で最も奇妙ではありません。そのためには、MPS430のように特定の機能用の「汎用」レジスタを持っているRCA1802A CPUを調査する必要がありますが、実際には実行時にプログラムカウンターまたはスタックポインターであるべきものを選択できます。実際にはcallor命令はありませんでしたがret、代わりに標準の呼び出しと戻りの手法 (SCRT) を使用してエミュレートしました。