2015-12-18 46 views
3

我正在CA65中工作一個6502項目,並且我無法理解某些指令。CA65段存儲器映射問題

我想要做的就是定義一個段,就好像它在另一部分內存中一樣,這樣所有代碼的尋址就好像它在編譯期間已經在那段內存中一樣,但它會加載主程序並且需要在加載後移動到位...這是這些舊機器的一個非常基本的模型,但是我無法使segment命令中的DEFINE指令正常工作。

所以我叫CFG文件創建爲外部的位置MYMEM一個MEMORY定義在程序實際負載,說是這樣的:

MEMORY{ 
. 
. 
MYMEM start = $1000, size =$0200 
. 
} 

,並在隨後創建了一個名爲MYMEMSEG

SEGMENTS{ 
. 
. 
MYMEMSEG: load=MYMEM, type =rw, define=yes; 
. 
. 
} 

然後我試圖訪問_ _MYMEMSEG_LOAD__或_ _MYMEMSEG_RUN__或_ _MYMEMSEG_SIZE__它稱創造價值,但他們是在他們MYMEM或MYMEMSEG所有未定義的...生成的地圖文件不包含任何東西。 ..那是什麼我不理解這裏?

+0

,你可能會有聲明它創造外部,就像他們在單獨的程序源代碼文件中定義的符號。 –

+0

我不是很遵循這裏...這裏沒有代碼告訴.export,以後擔心導入/包括... _SIZE__ _LOAD__和_RUN__應該由define = yes創建,那麼如何我去解決這個問題? – user282172

+0

http://www.cc65.org/doc/ld65-5.html 特別是分段信息5.2 – user282172

回答

3

我想連接出口它們,但你的代碼必須導入它們:

.import __MYMEMSEG_LOAD__, __MYMEMSEG_SIZE__ 
+0

我會試試這個,但對我來說有一點感興趣,那就是讓映射文件有一個引用代碼必須包含一個import指令......我會認爲define將所有它至少需要在地圖文件中創建它。 – user282172