Gcc 一些arm内联装配

Gcc 一些arm内联装配,gcc,arm,Gcc,Arm,我有一个手臂装配问题。 以下armv7汇编代码的十六进制二进制输出是什么 LDR r3, #0xaabbccdd BLX r3 我需要这个代码片段的汇编输出 但是我的电脑环境很差 提前感谢正如评论者所提到的,LDR r3,0xaabbccdd不是有效的说明。ARM操作码中的立即数采用ZeroExtendDIMM8 ROR imm4*2格式,这将允许您表示例如0xaa000000、0x00bb0000甚至0xd000000d,但不表示例如0xaabb0000或0xaabbccdd。 汇编程序通常

我有一个手臂装配问题。 以下armv7汇编代码的十六进制二进制输出是什么

LDR r3, #0xaabbccdd
BLX r3
我需要这个代码片段的汇编输出 但是我的电脑环境很差


提前感谢

正如评论者所提到的,LDR r3,0xaabbccdd不是有效的说明。ARM操作码中的立即数采用ZeroExtendDIMM8 ROR imm4*2格式,这将允许您表示例如0xaa000000、0x00bb0000甚至0xd000000d,但不表示例如0xaabb0000或0xaabbccdd。 汇编程序通常为加载32位即时数据提供伪指令,例如,在GAS中,您可以执行以下操作:

ldr r3,=0xaabbccdd

将其编码为PC相对负载-即ldr r3,[PC,偏移量]。偏移量和精确的指令编码取决于从指令到存储值的位置的距离。

这不会编译。您不能在一条指令中包含LDR r3、0xaabbccdd,因为arm指令可以是16位或32位,它不允许您同时加载32位值。请以“我有这个问题,想知道如何最好地解决它”的形式陈述问题。或者为什么这种方法不起作用?。您当前的问题介于两者之间,对于我给出的任何答案是否对您有实际用途几乎没有信心。@unixsmurf我以为他只是想对这两条指令进行二进制编码,我投了反对票。对不起,这实际上是一个糟糕的问题。我需要尽快知道这些汇编代码的二进制编码,但我唯一能用的就是互联网。谢谢你,它非常有用。我知道单臂指令无法将32位imm值加载到寄存器中。我想知道汇编程序将如何处理这个伪指令。