给定的机器码对应什么版本的ARM?

问题描述 投票:0回答:1

我尝试用两个不同的汇编器(其中一个是在线的,另一个是FASMARM)来汇编以下代码:

lsl   r1, r2, #4
lslge r1, r2, #4

生成的机器代码是(小端):

02 12 a0 e1
02 12 a0 a1

这告诉我条件字段位于倒数第二个半字节中。这与我在书中看到的表示方式非常不同,它位于开头(我的书描述了 ARMv4 架构):

我想问:

  1. 生成的机器码对应什么版本?
  2. 如何在 Linux 中或在线将一段 ARM 指令汇编成 ARMv4(仅汇编,不执行)?
assembly arm machine-code
1个回答
0
投票

ARM 机器代码以小端表示,无论操作模式或配置的字节顺序如何。

当您以单词形式阅读时,您拥有的编码指令是

e1a01202
a1a01202
。这与您图片中的图表相符。该编码适用于 ARM 模式,适用于任何可以在 ARM (A32) 状态下执行代码的 AArch32 架构版本。

© www.soinside.com 2019 - 2024. All rights reserved.