-(sp)
是什麼意思?unix v6 Assembly中 - (sp)是什麼意思?
我正在讀取Unix V6的代碼,PDP-11是舊的操作系統。
我已經知道了sp
的含義,這是堆棧指針。 與-1(sp)
相同嗎?
-(sp)
是什麼意思?unix v6 Assembly中 - (sp)是什麼意思?
我正在讀取Unix V6的代碼,PDP-11是舊的操作系統。
我已經知道了sp
的含義,這是堆棧指針。 與-1(sp)
相同嗎?
這個答案是在問題被澄清到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(後遞增堆棧指針)一樣工作。
-(sp)
表示在使用之前將寄存器sp
減1。
由於sp
是堆棧指針,這是要寫入到堆棧通常的方式
mov r0,-(sp)
將例如保存(或推)堆棧上的寄存器R0,和
mov (sp)+,r0
將彈出該值並重新恢復寄存器。
您需要提供更多的上下文。另外,請說明你在問什麼架構。 – icecreamsword
我拿出了我的舊PDP-11彙編語言書(托馬斯弗蘭克)。這已經有一段時間了,但我可以證實SP(又名R3)支持前遞減和遞減。 (以及增量變量)。它支持1和2字節增量/減量。 - (sp)將以與m68k中描述的peter類似的方式預先減量。例如, –
,在m40.s中有' - (sp)',其中定義了_idle。 – KiYugadgeter