ebp + 4与二维数组有什么关系?

时间:2013-10-20 02:53:28

标签: assembly x86 nasm

第4行代码中的ebp + 4是什么?我知道ebp + 4是返回地址。我也知道它在调用子程序后立即指向该部分。但我不是在下面的代码中调用子程序,它只是一个数组。 (x = a[I][J];

mov eax, [ebp - 44] ; ebp - 44 is i’s location 
sal eax, 1 ; multiple i by 2

add eax, [ebp - 48] ; add j
mov eax, [ebp + 4*eax - 40] ; ebp - 40 is the address of a[0][0]

mov [ebp - 52], eax ; store result into x (at ebp - 52)

请告诉我第4行中ebp+4的用途是什么。

1 个答案:

答案 0 :(得分:3)

如果将其显示为:

,则可能更为明显
mov eax, [4*eax + ebp - 40]

4*eax只是缩放由2*i + j计算的索引(我假设数组每行有wo个元素),每个元素的大小(4个字节)。