曲径通幽论坛
标题:
AT&T 语法和 Intel 语法的区别
[打印本页]
作者:
beyes
时间:
2009-11-22 14:13
标题:
AT&T 语法和 Intel 语法的区别
Intel 汇编语法和 AT&T 语法主要区别如下
:
AT&T 使用 $ 表示立即数,而 Intel 的立即数不需要界定。比如,使用 AT&T 语法引用十进制 4 时,使用 $4 ,而使用 Intel 时只需要使用 4 。
AT&T 在寄存器名称前面加上前缀 %,而 Intel 不这么做。比如,AT&T 语法使用EAX 寄存器时,寄存器要写成 %EAX
AT&T 语法处理源和目标操作数时使用相反的顺序。把十进制 4 传给 EAX 寄存器写为 movl $4, %eax,而 Intel 语法是 mov eax, 4
AT&T 语法在助记符后面使用一个单独的字符来引用操作数中使用的数据长度,而 Intel 语法中的数据长度被声明为单独的操作数。AT&T 的指令 movl $test, %eax 等同于 Intel 语法的 mov eax, dword ptr test 。
长调用和跳转使用不同的语法定义段和偏移值。AT&T 语法使用 ljmp $section, $offset, 而 Intel 语法使用 jmp section:offset
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2