问题
recently i checked the Instruction Set for an ARM Cortex-M3 processor. For example:
ADD <Rd>, <Rn>, <Rm>
What do those abbriviations mean exactly? I guess they mean different kinds of addresses, like directely addressed, relatively addressed or so. But what exactly?
Thanks!
回答1:
Operands of the form <Rx>
refer to general-purpose registers, i.e. r0-r15
(or accepted aliases like sp
, pc
, etc.).
I'm not sure if it's ever called out specifically anywhere but there is a general pattern of "d" meaning destination, "t" meaning target, "n" meaning the first operand or base register, "m" meaning the second operand, and occasionally "a" meaning an accumulator. Hence why you might spot designations like <Rdn>
(in the destructive two-operand instructions), or <Rt>, <Rt2>
(where a 64-bit value is held across a pair of GP registers). This is consistent across the other types of register too, e.g. VADD.F32 <Sd>, <Sn>, <Sm>
.
回答2:
They are just there to define registers, the lowercase letter just being there to separate them for explanation. Rd is destination, but Rn, Rm etc are just any register you can use. It's the only way to tell which is which when explaining like "Rd equals Rn bitwise anded with Rm", for example, since you can't use numbers.
They could be Rx, Ry etc, or Ra, Rb... as well.
来源:https://stackoverflow.com/questions/34818454/what-do-the-abbriviations-rn-rd-in-the-instruction-set-of-arm-mean