Intel和AT&T是广泛使用的两种汇编语法,其中Intel主要适用于MASM、TASM、NASM,而AT&T主要适用于GNU汇编器和GNU汇编工具(gcc、gbg)
1. 运算表达式的书写顺序相反
Intel:<cmd> <tgt> <src>
AT&T<cmd> <src> <tgt>
2. 赋值符号
另外,Intel使用=
赋值
AT&T使用->
赋值
3. 寄存器和立即数之前有无符号
Intel不使用符号表示寄存器或立即数
AT&T使用%
表示寄存器,在立即数之前加$
4. 括号
Intel使用[]
方括号
AT&T使用()
圆括号
5. 是否要声明数据类型
Intel没有这种规定
AT&T要求每个运算操作都要声明操作数据的类型(详见Sum公司相关文档)
Intel和AT&A语法没有实质性的区别,只要区分清楚形式上的区别就好了