【发布时间】:2012-02-20 22:00:58
【问题描述】:
我想知道我是否理解正确:
据我所知,x86 中相对寻址的语法是这样的:
base + index * scale + displacement
现在假设这些假设:
int i //valuee in ecx
int arr[256] //adress in esi
我想将以下内容加载到 eax 中:
arr[i + 10]
我的第一个猜测是:
mov eax, dword ptr[esi + ecx*4 + 10*4]
但我不确定第二次乘法,因为它不符合上述语法。
另外:如果索引和数组的数据类型不同怎么办。例如:
short arr[i + 10]
乘法会发生什么?
【问题讨论】: