2013-03-17 39 views
1

我知道類似的問題已被詢問,但無論如何聽。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)區域之前破壞代碼。

我真的很好奇。

提前致謝!

〜梅德

+0

它確實聽起來像一個常規生長,其允許保留堆棧,命令行參數,在固定位置處的一些全局存儲器等。我只寫過幾行68000彙編程序,所以我不記得有些放置常用變量等會使大多數操作碼更短。但這是一種可能性(如6502中的零頁)。 – 2013-03-17 08:49:12

+0

我不相信Easy68k有任何命令行參數,它是一個GUI模擬器。我在我的帖子中提到了全球內存和堆棧。另外,操作碼的長度並不真正相關,但立即移動0x12345678僅爲12個時鐘,而從存儲器移動它爲20個時鐘,並且操作碼分別爲立即數和內存的6個字節:203c 12345678,2039 0000001a,其中還顯示全局數據存儲在代碼結尾,因爲1a 0000001a內存緊跟着我的「移動#9,d0;陷阱#15」代碼,指示「simhalt」 – Dmitry 2013-03-17 09:03:54

回答

0

地址0到大約地址$ 800保留用於在68000 $ 1000異常向量被用作缺省起始地址留下清晰的保留區域。堆棧默認的存儲器的頂部和朝向地址0

+0

沒有公式表示向量在哪裏。如果我記得他們不是0到800美元。讓我檢查一下。等等......你真的是「凱利教授」嗎?對不起,我一直對中斷向量感到困惑,所以我對與程序的創建者爭論表示歉意,我愛你的程序,甚至試着看看它的代碼,儘管上次爲borland C編譯它後有點困難我檢查了。理解異常是Easy68k中最令人困惑的部分之一,這是我無法找到任何可以用我能理解的方式解釋它的源的部分。 – Dmitry 2016-07-07 20:49:51