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