Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly GNU 64位程序集添加函数_Assembly_X86 64_Att - Fatal编程技术网

Assembly GNU 64位程序集添加函数

Assembly GNU 64位程序集添加函数,assembly,x86-64,att,Assembly,X86 64,Att,当我们有 add %rbx, %rax 这是指将rbx的值添加到rax还是将rax的值添加到rbx 例如,如果rbx=3和rax=6,在添加%rbx,%rax之后,%rax和%rbx的值是多少 GNUx64汇编程序语法请 x86汇编有两种主要的“风格”:英特尔语法和AT&T语法(默认情况下主要由GNU工具使用) 您的代码段采用AT&T语法(其中寄存器名的前缀为%);在AT&T语法中,操作数的顺序通常是源、目标,所以 表示“将rbx添加到rax中”(即,在C中为rax+=rbx) 这与Intel

当我们有

add %rbx, %rax
这是指将rbx的值添加到rax还是将rax的值添加到rbx

例如,如果rbx=3和rax=6,在添加%rbx,%rax之后,%rax和%rbx的值是多少


GNUx64汇编程序语法请

x86汇编有两种主要的“风格”:英特尔语法和AT&T语法(默认情况下主要由GNU工具使用)

您的代码段采用AT&T语法(其中寄存器名的前缀为
%
);在AT&T语法中,操作数的顺序通常是源、目标,所以

表示“将rbx添加到rax中”(即,在C中为
rax+=rbx

这与Intel语法相反,因此如果您看到Intel语法中的某些代码段,例如

add rbx, rax
(注意没有
%
)这意味着“将rax添加到rbx”(即
rbx+=rax


您可以找到一个很好的AT&T与Intel语法差异列表。

从技术上讲,您可以将
%
前缀与味道分开切换。@Jester:。。。但是,任何人这样做,然后在网上发布这样的代码,通常都会被视为罪犯。我在AT&T语法中更新了类似的信息,并提供了一个指向良好规范副本的链接。
add rbx, rax