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