sparc 汇编 - 添加 i=0 或 i=1 的指令
sparc assembly - add instruction with i=0 or i=1
来自 Sparc architecture manual,Add
指令的第 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。
来自 Sparc architecture manual,Add
指令的第 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。