0

我怎样才能使这个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 编译器?

4

1 回答 1

1

您可以通过这种方式简单地从这些指令中组装CMP R0, R0CMP #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

如您所见,让汇编程序为您解决这个问题会快得多。

于 2012-02-21T22:44:24.003 回答