我尝试用两个不同的汇编器(其中一个是在线的,另一个是FASMARM)来汇编以下代码:
lsl r1, r2, #4
lslge r1, r2, #4
生成的机器代码是(小端):
02 12 a0 e1
02 12 a0 a1
这告诉我条件字段位于倒数第二个半字节中。这与我在书中看到的表示方式非常不同,它位于开头(我的书描述了 ARMv4 架构):
我想问:
ARM 机器代码以小端表示,无论操作模式或配置的字节顺序如何。
当您以单词形式阅读时,您拥有的编码指令是
e1a01202
和 a1a01202
。这与您图片中的图表相符。该编码适用于 ARM 模式,适用于任何可以在 ARM (A32) 状态下执行代码的 AArch32 架构版本。