AT&T 汇编和intel汇编的区别

           1.AT&T(以下简称AT)中立即操作数前加‘$’;寄存器操作数名前加'%';绝对跳转/调用操作数前加‘*’。Intel语法前没有这些限制。

           2.AT与intel语法使用的源目的数和操作数次序恰好相反,AT从左到右‘源,目的’,例如intel语句‘add eax,4',AT&T 'addl $4,%eax'。

           3.AT语法中内存操作数的长度由操作码最后一个字符确定,操作码后缀’b w l'分别表示8位(byte),16位(word),32位长字(long)。intel 通过在内存操作数前使用前缀’byte ptr','word ptr','dword ptr'来表示。

           4.AT语法中立即形式的远跳转和远调用位‘ljmp/lcall  $section,$offset',而Intel 的是’jmp/call  far section:offset'。同样,AT语法中远返回指令‘lret $stack-adjust',对应Intel的’ret far stack-adjust‘。

           5.AT汇编器不提供对多代码段程序的支持,UNIX类操作系统要求所有代码在一个段中。

posted @ 2012-12-16 16:27  孤独的小马哥  阅读(395)  评论(0)    收藏  举报