0

What's the meaning of -(sp)?

I am reading code of Unix V6, on PDP-11 the old OS.

I already know the meaning of sp, this is stack pointer. Is this same as -1(sp)?

4

2 回答 2

3

此答案是在向 PDP-11 澄清问题之前编写的。我猜它看起来像一个 m68k 预递减寻址模式。

Michael Petch 证实 PDP-11 的-(SP)语法根据操作数大小减少 1 或 2 个字节,因此几乎可以肯定它是摩托罗拉语法的灵感来源。


本页解释了-(A0)语法意味着将指针预减操作数的宽度。

  • 在 aMOVE.L中,它递减 4。(如 C *(sp-=4)
  • 在 aMOVE.W中,它递减 2。
  • 在 aMOVE.B中,它递减 1。(除非地址寄存器是 A7,也就是 SP,在这种情况下它仍然递减 2,因此它保持对齐!)

同样,+(A0)它的工作方式与后增量运算符相同。

它们的工作方式类似于 x86 的 PUSH(预先递减堆栈指针)和 POP(后递增堆栈指针)

于 2016-09-19T01:03:26.660 回答
0

-(sp)表示在使用之前减少寄存器sp

因为sp是堆栈指针,这是写入堆栈的常用方法

mov r0,-(sp)

例如将寄存器 r0 保存(或推送)到堆栈上,并且

mov (sp)+,r0

将弹出该值并再次恢复寄存器。

于 2016-12-12T20:13:11.257 回答