2014-10-01 40 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:显然是罚款),你可能需要求助于一些预处理魔术,如果你想保持与这两个工具链兼容性。