您的位置:首页 > 其它

AT&T汇编和Intel汇编区别

2015-05-21 11:53 344 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编 intel atampt c