寄存器、变量(常量)与立即数
在Intel汇编中,无论是寄存器、变量(常量)还是立即数,都是直接使用的,例如下列例子中分别加载一个变量(常量)与立即数到寄存器中:
mov eax, var ; var为已经定义好的变量(常量)
mov eax, 1234h
在AT&T汇编中,使用寄存器需要在其名称前增加%
,例如使用eax
寄存器,在AT&T汇编中为%eax
。对于变量(常量)与立即数,在AT&T中使用需要加上$
。
movl $var, %eax
movl $0x1234h, %eax
指令操作数顺序
在Intel汇编中,指令的格式为目标操作数在左,源操作数在右。而在AT&T汇编中,指令的格式为源操作数在左,目标操作数在右。
例如下面的例子中,将eax
的值加载到ebx
中,使用两个格式的汇编分别为:
movl %eax, %ebx ; AT&T
mov ebx, eax ; Intel
指令字长
在AT&T汇编中,需要在指令后使用后缀b
、