使用教材
《汇编语言程序设计》
https://www.jianshu.com/p/8473cd0e92b6
Intel 和 AT&T 语法的主要区别
-
AT&T使用
$
表示立即操作数,而Intel的立即操作数是不需要界定的。因此,使用 AT&T语法引用十进制值4
时,使用$4
,使用Intel语法时只需使用4
; -
AT&T在寄存器名词前面加上前缀
%
,而Intel不这样做。因此,使用AT&T语法引用EAX
寄存器为%eax
; -
AT&T语法处理源和目的操作时使用相反的顺序。把十进制值
4
传送给EAX
寄存器,AT&T语法是movl $4, %eax
,而Intel语法是mov eax,4
; -
AT&T在助记符后面使用一个单独的字符来引用操作中使用的数据长度,而Intel语法中数据长度被声明位单独的操作数。AT&T的指令
movl $test, %eax
等同于Intel语法的mov eax,doword ptr test
; -
长调用和跳转使用不同语法定义段和偏移值, AT&T语法使用
ljmp $section, $offset
,而Intel语法使用jmp section:offset
;
文字摘取
《汇编语言程序设计》 第3章 相关工具 第36~37页
网友评论