X86 什么是有效地址?

X86 什么是有效地址?,x86,x86-64,intel,X86,X86 64,Intel,读取时,LEA指令(加载有效地址)的操作部分使用一个名为EffectiveAddress(SRC)的计算,该计算在其他任何地方都没有定义 有效地址的定义是什么?有效地址(SRC)做什么?同一文件的第3.7.5节(指定偏移量)规定: 内存地址的偏移部分可以直接指定为 静态值(称为位移)或通过地址计算 由以下一个或多个组件组成: 位移-8、16或32位的值 Base—通用寄存器中的值 索引—通用寄存器中的值 比例因子-乘以索引值的2、4或8的值 由于添加这些组件而产生的偏移称为 有效地址。这些组

读取时,LEA指令(加载有效地址)的操作部分使用一个名为
EffectiveAddress(SRC)
的计算,该计算在其他任何地方都没有定义

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

同一文件的第3.7.5节(指定偏移量)规定:

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

  • 位移-8、16或32位的值
  • Base—通用寄存器中的值
  • 索引—通用寄存器中的值
  • 比例因子-乘以索引值的2、4或8的值
由于添加这些组件而产生的偏移称为 有效地址。这些组件中的每一个都可以有一个 或负(2s补码)值,但缩放除外 因素

有效地址使用以下公式计算有效地址:

另见。它们都是
base+index*scale+disp
的子集,除了64位模式下的RIP相对寻址。
Base + (Index*Scale) + Displacement