2016-09-18 49 views
4

我有tiva c TM4C123GH6PM,我刚刚安装了一个GNU ARM工具链。我想程序只有在组装,因为我想为它构建FORTH系统,但是当我使用如何在GNU ARM汇编程序中为寄存器赋予不同的名称?

.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的前身吗?
+0

我使用GCC和-x汇编程序与cpp,但是我不能让KEIL使用它,所以我切换到代码块,但是又不能将链接脚本与代码块相关联! 有什么想法? –

回答

5

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

W .req r2 
... 
add W, IP, #4 
+0

令人惊叹。我正在使用[汇编程序指令](https://ftp.gnu.org/pub/old-gnu/Manuals/gas-2.9.1/html_chapter/as_7.html)。谢啦 :) –

2

您不能重命名寄存器。

要使用预处理器,您需要使用GCC进行编译,而不是使用as进行编译。除了直接使用arm-none-eabi-cpp,有两种方法可以做到这一点:用.S大写)扩展

  • 名称的汇编文件,并与海湾合作委员会(例如arm-none-eabi-gcc -c foo.S -o foo.o)编译。 A 小写.s扩展会跳过预处理。
  • 命名任何你想要你的汇编文件,并通过-x assembler-with-cpp到GCC(如arm-none-eabi-gcc -c -x assembler-with-cpp foo.bar -o foo.o。使用-x assembler,而不是跳过预处理。

如果你使用Keil编译使用.sx扩展(上市here)。我不能”找不到像GCC的-x开关

+0

非常感谢。我将它交给Notlikethat,因为他的方法不使用前任,两种方法都可以.sx和.req 再次感谢。 –

相关问题