#include<iostream> | #include<iostream> |
using namespace std; | using namespace std; |
int main() | int main() |
{ | { |
int i=0; | for(int i=0;i<10;i++) |
for(i=0;i<10;i++) | { |
{ | cout<<i; |
} | } |
} | } |
var_4= dword ptr -4 | var_4= dword ptr -4 |
argc= dword ptr 8 | argc= dword ptr 8 |
argv= dword ptr 0Ch | argv= dword ptr 0Ch |
envp= dword ptr 10h | envp= dword ptr 10h |
push ebp | push ebp |
mov ebp, esp | mov ebp, esp |
push ecx | push ecx |
mov [ebp+var_4], 0 | mov [ebp+var_4], 0 |
mov [ebp+var_4], 0 | |
jmp short loc_40101D | jmp short loc_401016 |
loc_401014: | loc_40100D: |
mov eax, [ebp+var_4] | mov eax, [ebp+var_4] |
add eax, 1 | add eax, 1 |
mov [ebp+var_4], eax | mov [ebp+var_4], ea |
loc_40101D: | loc_401016: |
cmp [ebp+var_4], 0Ah | cmp [ebp+var_4], 0Ah |
jge short loc_401025 | jge short loc_40102C |
jmp short loc_401014 | mov ecx, [ebp+var_4] |
push ecx | |
mov ecx, offset unk_420838 | |
call sub_401040 | |
jmp short loc_40100D | |
loc_401025: | loc_40102C: |
xor eax, eax | xor eax, eax |
mov esp, ebp | mov esp, ebp |
pop ebp | pop ebp |
retn | retn |
反思: | 可以在这段代码中发现也有push eax。这儿可以猜测是因为编译器给程序中可能用到的变量而预留的。而在最后mov esp,ebp使堆栈平衡。 |
下步: | do_while循环 |