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

上面的命令是做什么的?它编译得很好,armccarm-none-eabi-gcc它给出了一个错误

垃圾跟随指令——`ldr r2,=0x0:OR:(Region_64K<<1):OR:Region_Enable'

gcc 在哪里

Region_Enable = 0b1
Region_64K   = 0b01111

在 armcc 上

Region_Enable EQU 2_1
Region_64K   EQU 2_01111
4

1 回答 1

1

这是表达式中按位运算符的 armasm语法。对于 GNU 汇编器,您需要|代替:OR:.

由于 armasm 声称由于|某种原因不推荐使用别名(尽管&for:AND:^for:EOR:显然很好),如果您想保持与两个工具链的兼容性,您可能需要使用一些预处理器魔法。

于 2014-10-01T12:43:14.407 回答