来自Sparc architecture manual,第110页的Add
说明:
"如果i = 0,则ADD和ADDcc计算“R [rs1] + R [rs2]”。如果i = 1,他们会计算 “R [rs1] + sign_ext(simm13)”。在任何一种情况下,总和都写入R [rd]。"
阅读装配时,我怎么知道i = 0还是i = 1?看起来在反汇编代码中出现的助记符/操作码没有任何变化。
答案 0 :(得分:1)
" i"表示"立即"指令中的值。立即是一个常数。所以你会看到这样的事情:
add %g1, 59, %g1
这意味着"将常数59添加到g1并将结果放入g1"。
当i = 0时,表示该参数不是立即数。所以这是一个注册!您将在汇编或反汇编中看到这一点:
add %g1, %o3, %g1
这意味着添加寄存器g1和o3并将结果放在o3中。