我在 esi 寄存器中有我的数组的地址(作为指向函数的指针传递)。如何访问数组的特定单元格?IE:
my_array[a + b * c]
哪里c
是常数。
您也可以按如下方式直接移动它:
MOV EDX, [ESI + 4*EBX]
对于静态数组,实际上可以同时使用两个寄存器对其进行索引,但在寻址模式下使用数组基地址作为 32 位位移。这仅适用于非位置无关代码。
MOV EDX, my_array[ECX + 4*EBX]
您可以使用同一个寄存器两次来模拟比例因子 3 ( ebx + ebx*2
)、5 或 9,而不是使用两个不同的寄存器。