-(sp)
的含义是什么?
我正在阅读Unix V6的代码,在PDP-11旧操作系统上。
我已经知道sp
的含义,这是堆栈指针。
这与-1(sp)
相同吗?
答案 0 :(得分:3)
这个答案是在向PDP-11澄清问题之前写的。我猜这看起来像是一个m68k预递减寻址模式。
Michael Petch确认PDP-11的-(SP)
语法会减少1或2个字节,具体取决于操作数大小,因此几乎可以肯定它是摩托罗拉语法的灵感来源。
This page解释-(A0)
语法意味着将指针预先递减操作数的宽度。
MOVE.L
中,它递减4.(如C *(sp-=4)
)MOVE.W
中,它递减2。MOVE.B
中,它递减1.(除非地址寄存器是A7,即SP,在这种情况下它仍然递减2,所以它保持对齐!)同样,+(A0)
的工作方式与后增量运算符相同。
它们的工作方式类似于x86的PUSH(预先递减堆栈指针)和POP(堆栈指针的后递增)。
答案 1 :(得分:0)
-(sp)
表示在使用之前递减寄存器sp
。
因为sp
是堆栈指针,这是写入堆栈的常用方法
mov r0,-(sp)
例如,将保存(或推送)堆栈中的寄存器r0,并且
mov (sp)+,r0
将弹出该值并再次恢复该寄存器。