Assembly 堆栈指针作为索引寄存器

Assembly 堆栈指针作为索引寄存器,assembly,x86,cpu-registers,machine-code,addressing-mode,Assembly,X86,Cpu Registers,Machine Code,Addressing Mode,为什么堆栈指针(esp/rsp)不能用作索引寄存器,如[esi+esp*4]?指令集就是这样生成的。ESP(即100b)的SIB编码被用来表示none,而不是1。通常情况下,ESP是堆栈指针,因此用作基址寄存器,它具有有效的编码。用任何因素来扩展它通常是没有意义的,因此牺牲这种编码通常不是问题 见表2-3。带SIB字节的32位寻址表单 指令集就是这样制作的。ESP(即100b)的SIB编码被用来表示none,而不是1。通常情况下,ESP是堆栈指针,因此用作基址寄存器,它具有有效的编码。用任何因

为什么堆栈指针(esp/rsp)不能用作索引寄存器,如
[esi+esp*4]

指令集就是这样生成的。
ESP
(即
100b
)的SIB编码被用来表示
none
,而不是1。通常情况下,
ESP
是堆栈指针,因此用作基址寄存器,它具有有效的编码。用任何因素来扩展它通常是没有意义的,因此牺牲这种编码通常不是问题


  • 见表2-3。带SIB字节的32位寻址表单

  • 指令集就是这样制作的。
    ESP
    (即
    100b
    )的SIB编码被用来表示
    none
    ,而不是1。通常情况下,
    ESP
    是堆栈指针,因此用作基址寄存器,它具有有效的编码。用任何因素来扩展它通常是没有意义的,因此牺牲这种编码通常不是问题


  • 见表2-3。带SIB字节的32位寻址表单

  • 指令集就是这样制作的。
    ESP
    (即
    100b
    )的SIB编码被用来表示
    none
    ,而不是1。通常情况下,
    ESP
    是堆栈指针,因此用作基址寄存器,它具有有效的编码。用任何因素来扩展它通常是没有意义的,因此牺牲这种编码通常不是问题


  • 见表2-3。带SIB字节的32位寻址表单

  • 指令集就是这样制作的。
    ESP
    (即
    100b
    )的SIB编码被用来表示
    none
    ,而不是1。通常情况下,
    ESP
    是堆栈指针,因此用作基址寄存器,它具有有效的编码。用任何因素来扩展它通常是没有意义的,因此牺牲这种编码通常不是问题


  • 见表2-3。带SIB字节的32位寻址表单