如何定义一个带有其他几个变量空间的变量?

时间:2016-04-27 07:29:31

标签: visual-studio assembly arm win-universal-app

此代码以MS ARM格式编写。我需要定义一个名为psxRegs的变量,该变量将精确地从regintCycle的变量空间,以便我可以导出它。但是,我不知道如何实现这一目标。怎么办呢?

    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

1 个答案:

答案 0 :(得分:2)

使用汇编程序时,您所认为的命名变量实际上只是指向内存位置的标签。这意味着这样的事情具有如下所述的效果:

psxRegs:
reg               SPACE 128
lo                SPACE 4
hi                SPACE 4

reglohi用于定义可在代码中使用的命名标签,以获取特定内存位置的地址(在汇编后)。以非常类似的方式,psxRegs:定义标签但不保留内存。实际上,它是reg的别名,因为在定义时没有保留内存。

这可能会对您的案件产生其他影响。目前尚不清楚您是在寻找reg的别名,还是在尝试引用lohi。您可以分别访问lohi来访问[psxRegs+128][psxRegs+132]。但是,这可能完全没必要,因为您可以通过[reg+128][reg+132]访问这些相同的值。

请注意,汇编程序中可能需要或不需要:尾随psxRegs。我建议您首先尝试使用而不使用冒号。如果组装失败,请添加冒号。