如何在程序集x86中访问2d数组

时间:2017-07-09 14:56:32

标签: assembly x86

如何在汇编中使用2d数组?我在C中声明了int array[100][2],我希望在汇编

中访问array[4][0]

1 个答案:

答案 0 :(得分:0)

在C中,

array[i][j]

与:

相同
*(*(array + i) + j)

在C中添加指针时,它会自动考虑指向的类型的大小。这不是汇编的情况,所以你必须自己做。

基本公式只是:

(offsetof(array) + (sizeof(int) * i)) + (sizeof(int) * j)

由于int几乎肯定是4个字节,因此程序集相当于:

int temp = array[4][0];

将是:

mov  eax, DWORD PTR [array+16]

因为(4 * 4)+(0 * 4)== 16。