我有tiva c TM4C123GH6PM,我刚刚安装了一个GNU ARM工具链。我想只用汇编编程,因为我想为它构建一个FORTH系统,但是当我使用
时.equ W, r2 // working register
给出一个符号r2
add W, IP, #4
main.S(54): error: undefined symbol r2 used as an immediate value
然后改成:
#define W r2
现在给出
add W, IP, #4
main.S(55): error: undefined symbol W used as an immediate value
问题:
- 可以更改名称吗?
- 如果没有,我可以使用C的前身吗?
为寄存器创建别名,使用.req
:
W .req r2
...
add W, IP, #4
不能重命名寄存器
要使用预处理器,您需要使用GCC而不是as
进行编译。除了直接使用arm-none-eabi-cpp
,还有两种方法:
- 使用
.S
(大写)扩展名命名您的汇编文件,并使用GCC(例如arm-none-eabi-gcc -c foo.S -o foo.o
)进行编译。小写.s
扩展名将跳过预处理。 - 将您的汇编文件命名为您想要的任何名称,并将
-x assembler-with-cpp
传递给GCC(例如arm-none-eabi-gcc -c -x assembler-with-cpp foo.bar -o foo.o
)。使用-x assembler
可以跳过预处理。
如果使用Keil编译,请使用.sx
扩展名(列在这里)。我找不到像GCC的-x
这样的开关