此代码以MS ARM格式编写。我需要定义一个名为psxRegs
的变量,该变量将精确地从reg
到intCycle
的变量空间,以便我可以导出它。但是,我不知道如何实现这一目标。怎么办呢?
AREA |.bss|,DATA,READWRITE,ALIGN=4
invc_ptr SPACE 4
address SPACE 4
;psxRegs
reg SPACE 128
lo SPACE 4
hi SPACE 4
reg_cop0 SPACE 128
reg_cop2d SPACE 128
reg_cop2c SPACE 128
pcaddr SPACE 4
SPACE 4
SPACE 4
SPACE 4
intCycle SPACE 256
rcnts SPACE 7*4*4
mem_rtab SPACE 4
答案 0 :(得分:2)
使用汇编程序时,您所认为的命名变量实际上只是指向内存位置的标签。这意味着这样的事情具有如下所述的效果:
psxRegs:
reg SPACE 128
lo SPACE 4
hi SPACE 4
reg
,lo
和hi
用于定义可在代码中使用的命名标签,以获取特定内存位置的地址(在汇编后)。以非常类似的方式,psxRegs:
定义标签但不保留内存。实际上,它是reg
的别名,因为在定义时没有保留内存。
这可能会对您的案件产生其他影响。目前尚不清楚您是在寻找reg
的别名,还是在尝试引用lo
和hi
。您可以分别访问lo
和hi
来访问[psxRegs+128]
和[psxRegs+132]
。但是,这可能完全没必要,因为您可以通过[reg+128]
和[reg+132]
访问这些相同的值。
请注意,汇编程序中可能需要或不需要:
尾随psxRegs
。我建议您首先尝试使用而不使用冒号。如果组装失败,请添加冒号。