CA65 段内存映射问题
CA65 Segment Memory Map issue
我正在 CA65 中处理一个 6502 项目,但我无法理解其中的一些指令。
我想要做的是定义一个段,就好像它在内存的另一部分中一样,这样该代码的所有寻址就好像它在编译期间已经在该内存段中一样,但是它将与主程序一起加载并需要在加载后移动到位...这是这些旧机器的非常基本的模型,但我无法使段命令中的 DEFINE 指令正常工作。
所以我在 cfg 文件中创建了一个名为 MYMEM 的 MEMORY 定义,作为程序实际加载位置之外的位置,可以这样说:
MEMORY{
.
.
MYMEM start = 00, size =00
.
}
然后我在其中创建了一个名为 MYMEMSEG 的段
SEGMENTS{
.
.
MYMEMSEG: load=MYMEM, type =rw, define=yes;
.
.
}
然后我尝试访问它声称它创建的 _ _MYMEMSEG_LOAD__ 或 _ _MYMEMSEG_RUN__ 或 _ _MYMEMSEG_SIZE__ 值,但它们都是未定义的...生成的 MAP 文件不包含任何带有 MYMEM 或 MYMEMSEG 的内容...所以我在这里不明白什么?
我认为链接器会导出它们,但您的代码必须导入它们:
.import __MYMEMSEG_LOAD__, __MYMEMSEG_SIZE__
我正在 CA65 中处理一个 6502 项目,但我无法理解其中的一些指令。
我想要做的是定义一个段,就好像它在内存的另一部分中一样,这样该代码的所有寻址就好像它在编译期间已经在该内存段中一样,但是它将与主程序一起加载并需要在加载后移动到位...这是这些旧机器的非常基本的模型,但我无法使段命令中的 DEFINE 指令正常工作。
所以我在 cfg 文件中创建了一个名为 MYMEM 的 MEMORY 定义,作为程序实际加载位置之外的位置,可以这样说:
MEMORY{
.
.
MYMEM start = 00, size =00
.
}
然后我在其中创建了一个名为 MYMEMSEG 的段
SEGMENTS{
.
.
MYMEMSEG: load=MYMEM, type =rw, define=yes;
.
.
}
然后我尝试访问它声称它创建的 _ _MYMEMSEG_LOAD__ 或 _ _MYMEMSEG_RUN__ 或 _ _MYMEMSEG_SIZE__ 值,但它们都是未定义的...生成的 MAP 文件不包含任何带有 MYMEM 或 MYMEMSEG 的内容...所以我在这里不明白什么?
我认为链接器会导出它们,但您的代码必须导入它们:
.import __MYMEMSEG_LOAD__, __MYMEMSEG_SIZE__