谈谈Intel和AT&T语法的区别

时间:2020-12-05 03:20:09

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语法没有实质性的区别,只要区分清楚形式上的区别就好了