【问题标题】:What is an effective address?什么是有效地址?
【发布时间】:2016-08-10 19:27:41
【问题描述】:

在读取Intel 64 and IA-32 Architectures Software Developer’s Manual 时,LEA 指令(加载有效地址)的操作部分使用了一个名为EffectiveAddress(SRC) 的计算,该计算未在其他任何地方定义。

有效地址的定义是什么,EffectiveAddress(SRC)是做什么的?

【问题讨论】:

    标签: x86 x86-64 intel memory-address addressing-mode


    【解决方案1】:

    同一文档的第 3.7.5 节(指定偏移量)指出:

    内存地址的偏移部分可以直接指定为 静态值(称为位移)或通过地址计算 由以下一种或多种成分组成:

    • 位移 - 8、16 或 32 位值。
    • Base — 通用寄存器中的值。
    • 索引 — 通用寄存器中的值。
    • 比例因子 - 乘以索引值的 2、4 或 8 值。

    添加这些组件所产生的偏移量称为 有效地址。这些组件中的每一个都可以有一个积极的 或负(2s 补码)值,缩放除外 因素。

    EffectiveAddress 计算一个有效地址 使用:

    Base + (Index*Scale) + Displacement
    

    【讨论】:

    • 另见x86 addressing modes。它们都是base + index*scale + disp 的子集,除了 64 位模式下的 RIP 相对寻址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2021-11-27
    • 1970-01-01
    • 2010-10-21
    • 2013-11-21
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多