gcc上的arm指令ldr错误在armcc上正常工作

时间:2014-10-01 10:55:56

标签: gcc arm cross-compiling armcc

LDR     r2, =0x0 :OR: (Region_64K << 1) :OR: Region_Enable

上述命令有什么作用? armccarm-none-eabi-gcc编译时,Region_Enable = 0b1 Region_64K = 0b01111 会产生错误

  

垃圾跟踪指令 - `ldr   R2,=为0x0:OR:(Region_64K&LT;&。1):OR:Region_Enable&#39;

在gcc

Region_Enable EQU 2_1
Region_64K   EQU 2_01111

在armcc上

{{1}}

1 个答案:

答案 0 :(得分:1)

表达中的armasm syntax for bitwise operators。对于GNU汇编程序,您需要|而不是:OR:

由于armasm声称由于某种原因而弃用|作为别名(尽管&的{​​{1}}和:AND:的{​​{1}}显然很好)如果你想保持与两个工具链的兼容性,你可能需要求助于一些预处理器魔法。