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 再次感謝。 –

相關問題