zoukankan      html  css  js  c++  java
  • AT&T汇编针对x86指令集格式

    http://blog.csdn.net/zenny_chen/article/details/6321978

    目前很多开源基于x86处理器环境的C/C++,Objective-C/C++编译器所带的汇编器使用AT&T格式。AT&T汇编针对x86指令集与其它处理器(比如ARM、Blackfin等)有所不同,它与Intel自定义的汇编格式有比较大的偏差。GCC的汇编器能支持Intel语法特性,可以参考我前面的博文来获悉如何使用。不过对于最新的LLVM2.0,又开始弃用Intel语法特性了。因此不管怎么说了解AT&T汇编语法还是有些好处的,呵呵。

     

    首先,AT&T汇编在对于存储器访问上,如果要指定访问字节的宽度,是通过加后缀来实现的,而Intel则是在存储器操作数之前加访问宽度限定词,比如:

    (Intel)mov    dword ptr [edx], eax                  (AT&T)movl    %eax, (%edx)

    大部分指令对于AT&T使用以下后缀:

    b    字节(8位),对应于Intel的byte ptr

    w   字(16位),对应于Intel的word ptr

    l     双字(实际是表示long,32位),对应于Intel的dword ptr

    q    四字(64位),对应于Intel的qword ptr

     

    然而,如果是x87浮点指令的话用以下后缀:

    s    单精度浮点(short,32位),对应于Intel的dword ptr,如果x87关于存储访问的指令后缀缺省,则默认为后缀s。

    l     双精度浮点(long,64位),对应于Intel的qword ptr。

    t    扩展双精度浮点(twelve-byte,96位(由于四字节对齐需要,实际精度是80位)),对应于Intel的tbyte ptr。

     

     

    其次,AT&T格式中,指令后面的操作数顺序与Intel格式是相反的。AT&T是源操作数在前,目的操作数在后:

    (Intel)mov    rax, rbx                (AT&T)mov    %rbx, %rax

    (Intel)mov    eax, cs:var           (AT&T)movl    %cs:var, %eax

    (Intel)pinsrw     xmm8, [rdi], 1   (AT&T)pinsrw    $1, (%rdi), %xmm8

    (Intel)pshuflw   xmm8, xmm9, 0a1H         (AT&T)pshuflw    $0xa1, %xmm9, %xmm8

     

     

    再次,AT&T与Intel语法之间的寻址表示也不同:

    (Intel)sub eax, [ebx + ecx * 4h - 20h]          (AT&T)subl    -0x20(%ebx, %ecx, 0x4), %eax

    上面表示缩放因子以及偏移量的立即数前不需要加$符号。

     

     

    最后,AT&T与Intel之间有些指令的表示也不同:

    在Intel指令表示中,如果是带符号扩展的MOV指令是用movsx表示,而在AT&T中用movs;而Intel中零扩展MOV指令是movzx,而在AT&T中是用movz表示,比如:

    (Intel)movzx    rax, byte ptr [rsi + 3]            (AT&T)movzb   3(%rsi), %rax

    (Intel)movsx    rax, word ptr [rsi + 4]           (AT&T)movsw   4(%rsi), %rax

    而MOVS指令在Intel指令集中是被废弃的字符串操作指令。

  • 相关阅读:
    angularjs基础——控制器
    angularjs基础——变量绑定
    mysql 小数处理
    centos无法联网解决方法
    mysql 按 in 顺序排序
    html5 file 自定义文件过滤
    淘宝、天猫装修工具
    MapGis如何实现WebGIS分布式大数据存储的
    CentOS
    PHP与Python哪个做网站产品好?
  • 原文地址:https://www.cnblogs.com/zhuyuanhao/p/3262869.html
Copyright © 2011-2022 走看看