我正在尝试以汇编语言(摩托罗拉 68k)了解堆栈的使用和实现。
我知道 MC 68k 有 8 个地址寄存器,A7 是特殊的。由于它是两个堆栈指针,因此共享“系统堆栈指针”的名称。
我们有两种状态用户状态和主管状态。在哪里:
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
现在我不确定如何回答这两个问题:
为什么68000有两个硬件堆栈指针?
写代码到
将寄存器 D1、D3、A2-A6 的长字值保存在运行时堆栈上。
MOVEM D1-D3/A2-A6, -(A7)
这是正确的吗?
在这里,我不确定所谓的“运行时堆栈”是什么,我不确定 (SP) 和 (A7) 的真正区别是什么。任何帮助将非常感激。