为什么不能像[esi + esp*4]
那样使用堆栈指针(esp/rsp)作为索引寄存器?
指令集就是这样形成的。ESP
(即100b
)的SIB编码已用于表示none
而不是1。通常ESP
是堆栈指针,因此用作基寄存器,它具有有效的编码。用任何因子来缩放它通常是没有意义的,所以牺牲编码通常不是问题。
- 参见表2-3。Intel®64和IA-32架构软件开发人员手册第2卷:指令集参考,A-Z 中带有SIB字节的32位寻址形式