如何为GNU ARM汇编程序中的寄存器指定不同的名称?

I.O*_*mar 4 assembly arm gnu c-preprocessor preprocessor-directive

我有tiva c TM4C123GH6PM,我刚刚安装了一个GNU ARM工具链.我想只在程序集中编程,因为我想为它构建FORTH系统,但是当我使用它时

.equ  W, r2             // working register
Run Code Online (Sandbox Code Playgroud)

这给出了符号r2

add W, IP, #4
main.S(54): error: undefined symbol r2 used as an immediate value
Run Code Online (Sandbox Code Playgroud)

然后我改为:

#define W r2
Run Code Online (Sandbox Code Playgroud)

现在给

add W, IP, #4
main.S(55): error: undefined symbol W used as an immediate value
Run Code Online (Sandbox Code Playgroud)

问题:

  • 是否可以更改名称?
  • 如果没有,我可以使用C前身吗?

Not*_*hat 6

要为寄存器创建别名,请使用.req:

W .req r2
...
add W, IP, #4
Run Code Online (Sandbox Code Playgroud)