gpt4 book ai didi

assembly - ARM 中只有两个操作数的 ADD 或 SUB

转载 作者:行者123 更新时间:2023-12-02 06:58:58 24 4
gpt4 key购买 nike

我正在学习 ARM 汇编语言。
我读过 ADD 应该有 3 个操作数。但是,我见过很多情况,实际上只有两个。如:

STR     R1, [SP,#0x20+var_1C]
LDR R1, =(a_lua - 0x1DE4E6)
MOVS R0, R4 ; haystack
ADD R1, PC
BLX strstr
CMP R0, #0
BNE loc_1DE4FA

任何人都可以用两个操作数帮助我了解 ADD 的含义吗?非常感谢!

最佳答案

鉴于评论中的信息表明这确实是 ARM 代码,而不是 16 位 Thumb,那么答案是您的引用资料早于 UAL。

Thumb-2 指令集的引入带来了 modified assembly syntax称为统一汇编语言,它取代了以前的 ARM 和 Thumb 语法。 UAL 允许(在合理范围内)将相同的源代码汇编为 ARM 或 Thumb 指令,而不是使用两种独立的(且不兼容的)语言。这样做的一个后果是,对于任何具有 2 操作数 Thumb 等效项的 3 操作数 ARM 指令,指定目标寄存器是可选的 - 如果省略,它将默认为第一个源寄存器*。

大多数汇编程序仍将支持旧的 pre-UAL 语法以实现兼容性,但是一旦您超越了基础知识,就值得更新为更现代的引用,因为存在一些可能令人困惑的变化(就像几乎所有的浮点助记符一样)。

* MUL 的情况除外由于尴尬的技术原因,情况正好相反。

关于assembly - ARM 中只有两个操作数的 ADD 或 SUB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25503967/

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