堆栈指针作为索引寄存器



为什么不能像[esi + esp*4]那样使用堆栈指针(esp/rsp)作为索引寄存器?

指令集就是这样形成的。ESP(即100b)的SIB编码已用于表示none而不是1。通常ESP是堆栈指针,因此用作基寄存器,它具有有效的编码。用任何因子来缩放它通常是没有意义的,所以牺牲编码通常不是问题。


  1. 参见表2-3。Intel®64和IA-32架构软件开发人员手册第2卷:指令集参考,A-Z
  2. 中带有SIB字节的32位寻址形式

最新更新