zoukankan      html  css  js  c++  java
  • AT&T格式的汇编与Intel格式的汇编寻址方式的不同

    AT&T: immed32(basepointer, indexpointer, indexscale)

    Intel: [basepointer + indexpointer × indexscale + imm32)

    如果操作系统工作于保护模式下,用的是32位线性地址,所以在计算地址时不用考虑segment:offset的问题。上式中的地址应为:imm32 + basepointer + indexpointer × indexscale

    EX:

    • 直接寻址
      AT&T: foo Intel: [foo]
      foo是一个全局变量。注意加上$是表示地址引用,不加是表示值引用。对于局部变量,可以通过堆栈指针引用。

    • 寄存器间接寻址
      AT&T: (%eax) Intel: [eax]

    • 变址寻址
      AT&T: _variable(%eax) Intel: [eax + _variable]
      AT&T: _array( ,%eax, 4) Intel: [eax × 4 + _array]
      AT&T: _array(%ebx, %eax,8) Intel: [ebx + eax × 8 + _array]

  • 相关阅读:
    面向对象-01
    网络编程-02-客户端搭建
    网络编程-01-服务端搭建
    日志-02
    日志-01
    md5加密
    shell 第五天
    shell第四天
    shell第三天
    shell
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832173.html
Copyright © 2011-2022 走看看