3

我在 CA65 中工作一个 6502 项目,我无法理解一些指令。

我想要做的是定义一个段,就好像它在内存的另一部分一样,以便该代码的所有寻址都好像它在编译期间已经在该内存段中,但它将被加载主程序并且需要在加载后移动到位......对于这些旧机器来说这是一个非常基本的模型,但我无法让段命令中的 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__ 值,但它们都是未定义的......生成的 MAP 文件不包含任何带有 MYMEM 或 MYMEMSEG 的东西......那我是什么不明白这里?

4

1 回答 1

3

我认为链接器会导出它们,但您的代码必须导入它们:

.import __MYMEMSEG_LOAD__, __MYMEMSEG_SIZE__
于 2015-12-19T11:53:03.577 回答