2014-10-01 41 views
0
LDR  r2, =0x0 :OR: (Region_64K << 1) :OR: Region_Enable 

上面的命令做了什麼? 上armcc它編譯細,同時用arm-none-eabi-gcc它給出了一個錯誤arm指令ldr錯誤gcc在armcc上工作正常

垃圾以下指令 - `LDR R2,=爲0x0:OR:(Region_64K < < 1):OR:Region_Enable」

其中對海合會器armcc

Region_Enable = 0b1 
Region_64K = 0b01111 

Region_Enable EQU 2_1 
Region_64K EQU 2_01111 

回答

1

這是表達式中的armasm的syntax for bitwise operators。對於GNU彙編程序,您需要|而不是:OR:

由於armasm中聲稱,使用|的別名已被棄用出於某種原因(儘管&:AND:^:EOR:顯然是罰款),你可能需要求助於一些預處理魔術,如果你想保持與這兩個工具鏈兼容性。