gpt4 book ai didi

assembly - arm movw指令如何映射到机器代码?

转载 作者:行者123 更新时间:2023-12-02 00:25:19 32 4
gpt4 key购买 nike

我目前正在尝试了解 movw 指令如何在 ARM 上工作,以便能够对库进行十六进制编辑并更改使用所述指令设置的值。

库提供的代码如下(objdump 的输出):

[...]
29c4: f44f 71f0 mov.w r1, #480 ; 0x1e0
[...]

换句话说,我想做的是弄清楚“f44f 71f0”中的 0x1e0/480 是如何表示的。我一直在网上阅读资料,包括 http://blogs.arm.com/software-enablement/251-how-to-load-constants-in-assembly-for-arm-architecture/我想我了解 movw 是如何工作的以及它的局限性;但我仍然不明白指令中显示的值如何映射到实际的二进制代码。非常感谢您就此事提供的任何文件或标志:)

最佳答案

对于 arm,指令在 ARM ARM、ARM 体系结构引用手册中进行了描述。转到 http://infocenter.arm.com然后沿着左边找到架构,然后找到您感兴趣的架构。这是一个 thumb2 指令,所以您需要 armv7-m。

这看起来是编码 T2

11110i00010S11110... 

i 和 S 在您的指令中为零。 imm3 是位 12 到 14,imm8 是位 7 - 0。

0 111 0001 11110000

所以你的 imm3 是 0b111,imm8 是 0b11110000

然后你看thumb指令部分修改后的立即数

i ... imm3 ... abcdefgh 其中 abcdefgh 是 imm8 位你的 i:imm3:a 位,5 位是 0b11111

所以你在表中查找它,你会得到右侧的 imm8 向左移动 1

00000000 00000000 00000001 bcdefgh0
00000000 00000000 00000001 11100000

这是 0x000001E0

Arm 在记录他们的指令方面做得很好,比大多数都好。

关于assembly - arm movw指令如何映射到机器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9053178/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com