我知道類似的問題已被詢問,但無論如何聽。Easy68k大會ORG指令
我已經寫了不少Easy68k計劃這學期,我也很好奇,爲什麼ORG指令總是被設置爲1000 $,或者$ 2000或$ 2500
雖然答案是「個人公約」,我更感興趣的是瞭解以下內容:
- 什麼是設置ORG指令的好處,CPU可以從爲0x0執行什麼爲0xffffffff,那麼什麼是需要將程序開始一路偏移到0x1000?
例如:
org $1000
start:
moveq #9, d0
trap #15
end start
作品,而是由4096個字節下來
start:
moveq #9, d0
trap #15
end start
作品也偏移,但在所有
不偏移那麼,爲什麼是這個指令需要?我沒有爲任何特定目的保留[0x0,0x1000],那麼保留這個偏移量的意義是什麼?
結論到目前爲止
- Easy68k不具有全局變量的缺省位置,它們被放置在個人電腦(通常在程序按照慣例年底)。
- Easy68k的默認堆棧指針爲0,成長downwords到0xffffffe,並向下(這是字對齊):這意味着有是[0,0x1000)區域沒有衝突。事實上,它會在破壞[0,0x1000)區域之前破壞代碼。
我真的很好奇。
提前致謝!
〜梅德
它確實聽起來像一個常規生長,其允許保留堆棧,命令行參數,在固定位置處的一些全局存儲器等。我只寫過幾行68000彙編程序,所以我不記得有些放置常用變量等會使大多數操作碼更短。但這是一種可能性(如6502中的零頁)。 – 2013-03-17 08:49:12
我不相信Easy68k有任何命令行參數,它是一個GUI模擬器。我在我的帖子中提到了全球內存和堆棧。另外,操作碼的長度並不真正相關,但立即移動0x12345678僅爲12個時鐘,而從存儲器移動它爲20個時鐘,並且操作碼分別爲立即數和內存的6個字節:203c 12345678,2039 0000001a,其中還顯示全局數據存儲在代碼結尾,因爲1a 0000001a內存緊跟着我的「移動#9,d0;陷阱#15」代碼,指示「simhalt」 – Dmitry 2013-03-17 09:03:54