00401550 push ebp
00401551 mov ebp,esp
00401553 sub esp,78h
00401556 push ebx
00401557 push esi
00401558 push edi
00401559 lea edi,[ebp-78h]
0040155C mov ecx,1Eh
00401561 mov eax,0CCCCCCCCh
00401566 rep stos dword ptr [edi]
程序正常的载入。。。
00401568 mov dword ptr [ebp-20h],1
0040156F mov dword ptr [ebp-1Ch],2
00401576 mov dword ptr [ebp-18h],3
0040157D mov dword ptr [ebp-14h],4
00401584 mov dword ptr [ebp-10h],5
0040158B xor eax,eax
0040158D mov dword ptr [ebp-0Ch],eax
对一连串地址的初始化,应该是 int 类型,因为是四个字节的对齐方式,并且是一种栈的方式,可以推出是区部的
变量,可以知道,这样的方式和数组很像。。。
00401590 mov dword ptr [ebp-38h],1
00401597 mov dword ptr [ebp-34h],2
0040159E xor ecx,ecx
004015A0 mov dword ptr [ebp-30h],ecx
004015A3 mov dword ptr [ebp-2Ch],4
004015AA xor edx,edx
004015AC mov dword ptr [ebp-28h],edx
004015AF mov dword ptr [ebp-24h],edx
和上边的一样。。。值得一提的是,数组的初始化,同样是从数组的右边到左边的顺序进行的。。。
我们读的时候,直接的读就可以了。。。
004015C4 mov dword ptr [ebp-4],0
004015CB jmp main+86h (004015d6)
004015CD mov eax,dword ptr [ebp-4]
004015D0 add eax,1
004015D3 mov dword ptr [ebp-4],eax
004015D6 cmp dword ptr [ebp-4],2
004015DA jge main+0D1h (00401621)
标准的循环语句,先是初始化计数器的值,然后比较循环的大小,满足就继续。。。
004015F4 push offset string "," (0046e02c)
004015F9 mov edx,dword ptr [ebp-4]
004015FC imul edx,edx,0Ch
004015FF lea eax,[ebp+edx-20h]
00401603 mov ecx,dword ptr [ebp-8]
00401606 mov edx,dword ptr [eax+ecx*4]
00401609 push edx
0040160A mov ecx,offset std::cout (0047be90)
0040160F call @ILT+245(std::basic_ostream<char,std::char_traits<char> >::operator<<) (004010fa)
00401614 push eax
00401615 call @ILT+625(std::operator<<) (00401276)
0040161A add esp,8
0040161D jmp main+95h (004015e5)
0040161F jmp main+7Dh (004015cd)
这里是打印了输出,当然如果没有符号表,函数是不会显示的,那就要动态的调试了。。。
根据最后的两个跳转也是可以得到程序应该是两个循环的。。。