アセンブリ言語 (Motorola 68k) でのスタックの使用法と実装を理解しようとしています。
MC 68k には 8 つのアドレス レジスタがあり、A7 は特別なものです。2 つのスタック ポインタであるため、「システム スタック ポインタ」の名前を共有します。
また、ユーザー状態とスーパーバイザー状態の 2 つの状態があります。どこ:
user state-
certain system resources are blocked and A7 accesses the user stack pointer.
supervisor state-
all system resources are available and A7 accesses the supervisor stack pointer
今、これらの2つの質問に答える方法がわかりません:
68000 に 2 つのハードウェア スタック ポインタがあるのはなぜですか?
コードを書く
レジスタ D1、D3、A2 ~ A6 のロングワード値をランタイムスタックに保存します。
MOVEM D1-D3/A2-A6, -(A7)
これは正しいでしょうか?
ここで、「runtimestack」と呼ばれるものが何であるかわかりません。また、(SP) と (A7) の実際の違いが何であるかもわかりません。どんな助けでも大歓迎です。