我怎样才能使这个istrution“真实”?
CMP R0, #0
我想做的是例如制作
CMP R0,R0 or CMP #0, #0
00 28 是操作码。我试着做28 28
没有结果!另一个问题是什么指令BNE.W
?这是什么最后的W?我如何在 BE 中修改它?操作码是40 F0 65 85
注意:所有操作码都处于拇指模式!
*编辑是否存在适用于 Mac 的 armv7 编译器?
您可以通过这种方式简单地从这些指令中组装CMP R0, R0
或CMP #0, #0
提取所需的操作码。
另一种方法是查看 ARM 参考手册并手动构建操作码。这是我很快找到的 ARMv5 手册,在7.1.22
您的下方有CMP <Rn>, <Rm>
构建用于比较两个寄存器的操作码的详细信息。细节似乎与我在即将发布之前发现的 ARMv7 手册相同。
它的第 15-6 位是0 1 0 0 0 0 1 0 1 0
,然后第 5-3 位是第一个寄存器的编号(数字 0 由 3 位表示R0
),第 2-0 位是第二个寄存器(也是R0
)。所以你的操作码现在是:
0 1 0 0 0 0 1 0 1 0
( CMP
) 000
( R0
) 000
( R0
)
100001010000000
在十六进制中是4280
,因此在小端顺序中,您需要的两个字节是80 42
。
如您所见,让汇编程序为您解决这个问题会快得多。