Assembly ARM指令集中的缩写(Rn,Rd,…)是什么意思?
最近我检查了ARM Cortex-M3处理器的指令集。 例如:Assembly ARM指令集中的缩写(Rn,Rd,…)是什么意思?,assembly,arm,instruction-set,instructions,thumb,Assembly,Arm,Instruction Set,Instructions,Thumb,最近我检查了ARM Cortex-M3处理器的指令集。 例如: ADD <Rd>, <Rn>, <Rm> ADD, 这些缩写的确切含义是什么? 我猜他们指的是不同类型的地址,比如直接地址,相对地址等等。 但究竟是什么呢 谢谢 它们只是用来定义寄存器,小写字母只是用来分隔它们以供解释。Rd是目的地,但Rn、Rm等只是您可以使用的任何寄存器。例如,在解释“Rd等于Rn,按位AND加上Rm”时,这是判断哪个是哪个的唯一方法,因为您不能使用数字 它们可以是Rx、R
ADD <Rd>, <Rn>, <Rm>
ADD,
这些缩写的确切含义是什么?
我猜他们指的是不同类型的地址,比如直接地址,相对地址等等。
但究竟是什么呢
谢谢 它们只是用来定义寄存器,小写字母只是用来分隔它们以供解释。Rd是目的地,但Rn、Rm等只是您可以使用的任何寄存器。例如,在解释“Rd等于Rn,按位AND加上Rm”时,这是判断哪个是哪个的唯一方法,因为您不能使用数字
它们可以是Rx、Ry等,也可以是Ra、Rb。。。还有 形式的操作数是指通用寄存器,即
r0-r15
(或可接受的别名,如sp
,pc
等)
我不确定它是否在任何地方被特别调用过,但有一种通用模式,即“d”表示目标,“t”表示目标,“n”表示第一个操作数或基址寄存器,“m”表示第二个操作数,偶尔“a”表示累加器。因此,您可能会发现类似于
(在破坏性的两个操作数指令中)或,
(64位值跨一对GP寄存器保存)的指定。这在其他类型的寄存器中也是一致的,例如VADD.F32,
基础:
是目的地,Rd
和Rn
是来源地。它们都是通用整数寄存器;FP将使用Rm
/Sd
/Sn
或Sm
/Dd
/Dn
进行单人或双人训练。Dm
ARM语法将目标放在左侧,位于只读源操作数之前
:在中,ARM员工评论说“t”可能意味着“转移”,而不是“目标” 由于t
通常出现在LDR和STR等内存指令中,我理解这意味着“向内存转移/从内存转移”,例如在ARMARMv8 fa上:t
LDR <Xt>, [<Xn|SP>, (<Wm>|<Xm>){, <extend> {<amount>}}] STR <Xt>, [<Xn|SP>, (<Wm>|<Xm>){, <extend> {<amount>}}]
和n
只是数学中常用的整数变量/索引名m
:s
- STXR指令将存储到内存fom
(与STR类似),但它也会向Xt
获取第二个返回值(写入成功了吗):Ws
我不容易找到AARC64STXR <Ws>, <Xt>, [<Xn|SP>{,#0}]
- STXR指令将存储到内存fom
- 如果有文档记录,“关于A64指令说明的第C2章”可能是信息的好位置,但它不在那里
STXR <Ws>, <Xt>, [<Xn|SP>{,#0}]
ORR{<c>}{<q>} {<Rd>,} <Rn>, <Rm>, <shift> <Rs>