AT&T 汇编语法与Intel汇编语法 的认识

  • 参考学习:https://blog.csdn.net/happy987818/article/details/51557502

  • Intel就是平时学的windows上的汇编的语法

  • GCC上采用的是AT&T的汇编格式。因此极其有必要了解两者的不同。

  • 寄存器

    • AT&T要加上%---->%eax
  • 与Intel上指令数的位置相反

    • mov edi,esi ----> mov %esi,%edi
  • AT&T的常数加上"$"前缀

  • 传递不同长度的数的时候

    • INTEL中用"word ptr"之类前缀
    • AT&T,用特定的后缀
      • movl----“双字”
      • movw----“传递单字”
      • movb-----“传递一个字节”
  • 寻址方式的区别

    • 直接对比理解

      mov eax,[esp-8] movl -8(%ebp)

      mov fs:eax,8 movb $4,%fs:(%eax)

      mov cx,[ebx+4*eax+a] movw array(,%ebx,%eax,4),%cx

      英文的注释:

      section:[base + index*scale + disp]
      

      is translated into the AT&T syntax

      section:disp(base, index, scale)
      

      mov eax,[eax*4+array] movl array(%eax,4)

你可能感兴趣的:(汇编语言)