AT&T汇编和Intel汇编区别

来源:互联网 发布:拳皇2002键盘优化版 编辑:程序博客网 时间:2024/04/30 04:08


1,两者源和目的操作数次序相反。 AT&T的源和目的是从左到右,并且其寄存器前要加“%”;Intel的是右到左,不需要加"%"。基本内联汇编中的寄存器名称前面只能有一个百分号(%),而带有C/C++表达式的内联汇编中的寄存器名臣前面必须有两个百分号(%%);

 例如:AT&T: movl %ecx, %eax (ecx为源操作数,eax为目的操作数)

             Intel: mov dx, bx    (bx为源操作数,dx为目的操作数


  2,AT&T立即操作数前需要加"$";Intel的不用
    例如:AT&T:movl $2, %eax

               Intel:mov ax, 2


  3,AT&T中内存操作的长度由操作码最后一个字符来确定。"b"字节,"w"字,"l"分别表示内存引用为1字节8位,2字节16位,4字节32位。
    Intel使用操作前缀byte ptr, word ptr, dword ptr
    例如:AT&T:movl %ecx, %eax
          Intel:mov al, byte ptr ttt
0 0
原创粉丝点击