1. x86 对数组元素的访问。
2. for 循环的实现。
; ---------------------------------------------------------------------------
9: int i;
10: for(i=0; i< 5; i++)
00401268 mov dword ptr [ebp-4],0
0040126F jmp main+2Ah (0040127a)
00401271 mov eax,dword ptr [ebp-4]
00401274 add eax,1
00401277 mov dword ptr [ebp-4],eax
0040127A cmp dword ptr [ebp-4],5
0040127E jge main+4Ah (0040129a)
11: {
12: printf("data is %d/n",array[i]);
00401280 mov ecx,dword ptr [ebp-4]
00401283 mov edx,dword ptr [ecx*4+442DC0h] // 取到全局数组array中的元素
0040128A push edx
0040128B push offset string "data is %d/n" (0043e024)
00401290 call printf (004086e0)
00401295 add esp,8
13: }
00401298 jmp main+21h (00401271)
14:
15: system("pause");
。。。。。。
.data:00442DC0 array dd 1 ; DATA XREF: main+33r
.data:00442DC4 dd 2
.data:00442DC8 dd 3
.data:00442DCC dd 4
.data:00442DD0 dd 5
; ---------------------------------------------------------------------------
1. 对数组元素的访问采用了与地址跳转表一样的指令。基地址+偏移量。(偏移量是寄存器变量)
但是数组元素的访问用mov 指令。
00401283 mov edx,dword ptr [ecx*4+442DC0h]
2. for 循环先做判断,可以一次都不进入循环体。
x86访问数组元素(访问数据表)
最新推荐文章于 2025-06-24 22:06:04 发布