ATT 汇编大体格式是: 指令 源操作数 目的操作数 ,比如将 10 移动到 eax 寄存器的写法: movl $10, %eax 。
1.ATT 汇编的源操作数和目的操作数和 Intel 正好相反,也就是数据流向是从左到右;
2.ATT 中立即数前需要加 $ 符号, 寄存器前加 % 符号;
3.ATT 的指令加后缀 b 、 w、 l 、q 表明处理的数据长度,分别是字节、字(2B)、双字(4B)、四字(8B);
4.ATT 以寄存器中的值为地址的内存单元的访问(间接寻址)是加上括号比如 (%eax),而非 Intel 的 [EAX] 。
ATT 常用指令
(1) 移动指令 movN src dst : movl $a, %ebx
(2) 运算指令 加 addN 、 减 subN 、按位与 andN 、按位异或 xorN src dst : xor %eax %eax (将 eax 值置为 0)
(3) 比较指令 cmpN src dst : cmp (%eax) $10
(4) 跳转指令 jmp、大于跳转 jg、小于跳转 jl 、大于等于跳转 jge、 jle、 je、 jne
(5) 函数调用 call 和返回 ret
版权声明:本文为weixin_39923110原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。