unix v6 Assembly中 - (sp)的含义是什么?

时间:2016-09-19 00:42:12

标签: unix assembly pdp-11

-(sp)的含义是什么?

我正在阅读Unix V6的代码,在PDP-11旧操作系统上。

我已经知道sp的含义,这是堆栈指针。 这与-1(sp)相同吗?

2 个答案:

答案 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

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