sparc 汇编 - 添加 i=0 或 i=1 的指令

sparc assembly - add instruction with i=0 or i=1

来自 Sparc architecture manualAdd 指令的第 110 页:

"If i = 0, ADD and ADDcc compute “R[rs1] + R[rs2]”. If i = 1, they compute “R[rs1] + sign_ext(simm13)”. In either case, the sum is written to R[rd]."

读汇编的时候怎么知道是i=0还是i=1? mnemonic/opcode 在反汇编代码中看起来没有任何变化。

"i"表示指令中的"immediate"值。立即数是常数。所以你会看到这样的东西:

add %g1, 59, %g1

即"add the constant 59 to g1 and put the result in g1"。

当i=0时,表示该参数不是立即数。所以这是一个寄存器!你会在汇编或者反汇编中看到这个:

add %g1, %o3, %g1

这意味着将寄存器 g1 和 o3 相加并将结果放入 o3。