【问题标题】:arm instruction ldr error on gcc works fine on armccgcc上的arm指令ldr错误在armcc上工作正常
【发布时间】:2014-10-01 10:55:56
【问题描述】:
LDR     r2, =0x0 :OR: (Region_64K << 1) :OR: Region_Enable

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

垃圾遵循指令 -- `ldr r2,=0x0:OR:(Region_64K

在 gcc 上的位置

Region_Enable = 0b1
Region_64K   = 0b01111

在 armcc 上

Region_Enable EQU 2_1
Region_64K   EQU 2_01111

【问题讨论】:

    标签: gcc arm cross-compiling armcc


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2012-09-24
      • 2018-09-13
      相关资源
      最近更新 更多