我有一个关于在 c 中使用 ASM 的小问题。我要执行指令:
LDR PC,=0x123456
这给了我错误“操作数中的意外标记”。
asm("LDR PC,=0x123456");
这给出了“无效约束”。
asm("LDR PC," : "m" (0x123456));
正确的做法是什么?
最佳答案
你正在使用这个:
asm("LDR PC,=0x123456");
这不是标准的 ARM 汇编指令,而是作为编译器扩展提供的伪指令。当您编译它时,此伪指令将转换为其他汇编指令。 clang 似乎不支持此编译器扩展(请参阅此 thread )。您应该自己进行汇编指令的转换,请参阅 ARM 文档了解 LDR pseudo-instruction 的转换方式。
关于c - 在 C 中使用 ASM 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19007207/