2015-12-18 44 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