2016-09-19 36 views
0

-(sp)是什麼意思?unix v6 Assembly中 - (sp)是什麼意思?

我正在讀取Unix V6的代碼,PDP-11是舊的操作系統。

我已經知道了sp的含義,這是堆棧指針。 與-1(sp)相同嗎?

+0

您需要提供更多的上下文。另外,請說明你在問什麼架構。 – icecreamsword

+2

我拿出了我的舊PDP-11彙編語言書(托馬斯弗蘭克)。這已經有一段時間了,但我可以證實SP(又名R3)支持前遞減和遞減。 (以及增量變量)。它支持1和2字節增量/減量。 - (sp)將以與m68k中描述的peter類似的方式預先減量。例如, –

+0

,在m40.s中有' - (sp)',其中定義了_idle。 – KiYugadgeter

回答

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(後遞增堆棧指針)一樣工作。

0

-(sp)表示在使用之前將寄存器sp減1。

由於sp是堆棧指針,這是要寫入到堆棧通常的方式

mov r0,-(sp) 

將例如保存(或推)堆棧上的寄存器R0,和

mov (sp)+,r0 

將彈出該值並重新恢復寄存器。