第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
的用途是什么。
答案 0 :(得分:3)
如果将其显示为:
,则可能更为明显mov eax, [4*eax + ebp - 40]
4*eax
只是缩放由2*i + j
计算的索引(我假设数组每行有wo个元素),每个元素的大小(4个字节)。