vieyahn2017 / goto

GO C C++ Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

【C】AT&T与Intel汇编代码格式的差异

vieyahn2017 opened this issue · comments

AT&T与Intel汇编代码格式的差异

基于 x86 架构 的处理器所使用的汇编指令一般有两种格式,AT&T与Intel汇编。AT&T汇编是GCC、OBJDUMP等工具的默认格式,Intel汇编是Microsoft工具使用的默认格式。两个格式存在一些差异

AT&T与Intel格式存在如下差异:

1.Intel格式省略了指示大小的后缀,我们看到指令push和mov,而不是pushq和movq。

2.Inel代码省略了寄存器名字前面的'%'符号,用的是rbx,而不是%rbx。

3.Intel代码用不同的方式描述内存中的位置,例如是'QWORD PTR [rbx]',而不是'(%rbx)'。

4.在带有多个操作数的指令情况下,列出操作数的顺序相反。例如Intel格式为'mov dst,src',AT&T格式下是'movq src,dst'。