当我们有
时add %rbx, %rax
这是否意味着将rbx的值添加到rax或将值rax添加到rbx?
如果例如rbx = 3且rax = 6,则在添加%rbx,%rax之后,%rax和%rbx的值是多少?
GNU x64汇编语法!
答案 0 :(得分:1)
x86程序集有两种主要的"风格":Intel语法和AT& T语法(主要由GNU工具默认使用)。
您的代码段采用AT& T语法(其中寄存器名称以%
为前缀);在AT& T语法中,操作数顺序通常是 source,destination ,所以
add %rbx, %rax
表示"将rbx添加到rax" (即,在C中它将是rax += rbx
)。
这与英特尔语法相反,所以如果您在英特尔语法中看到一些代码段,例如
add rbx, rax
(注意没有%
)这意味着"将rax添加到rbx" (即rbx += rax
)。
你可以找到一个很好的AT& T vs Intel语法差异列表here。