#include<iostream> | #include<iostream> |
using namespace std; | using namespace std; |
int main() | int main() |
{ | { |
int i=0; | char i='c'; |
cin>>i; | cin>>i; |
switch(i) | switch(i) |
{ | { |
case 0:cout<<"is 0";break; | case 'a':cout<<i<<"is a";break; |
case 1:cout<<"is 1";break; | case 'b':cout<<i<<"is b";break; |
case 2:cout<<"is 2";break; | case 'c':cout<<i<<"is c";break; |
case 3:cout<<"is 3";break; | case 'd':cout<<i<<"is d";break; |
default:cout<<"Others"; | default:cout<<"Others"; |
} | } |
} | } |
var_8= dword ptr -8 | var_8= dword ptr -8 | |
var_4= dword ptr -4 | var_1= byte ptr -1 | |
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 | |
sub esp, 8 | sub esp, 8 | |
mov [ebp+var_4], 0 | mov [ebp+var_1], 63h | 接受输入的数据 |
lea eax, [ebp+var_4] | lea eax, [ebp+var_1] | |
push eax | push eax | |
mov ecx, offset dword_421A6C | push offset dword_41B55C | |
call sub_4010B0 | call sub_4010F0 | |
add esp, 8 | ||
mov ecx, [ebp+var_4] | movsx ecx, [ebp+var_1] | 将输入的值传给另一个变量 |
mov [ebp+var_8], ecx | mov [ebp+var_8], ecx | |
mov edx, [ebp+var_8] | ||
sub edx, 61h | 这儿是对数据比较进行了优化 | |
mov [ebp+var_8], edx | ||
cmp [ebp+var_8], 3 | cmp [ebp+var_8], 3 | |
ja short loc_401081 | ja loc_4010C3 | |
mov edx, [ebp+var_8] | mov eax, [ebp+var_8] | |
jmp ds:off_40109C[edx*4] | jmp ds:off_4010DC[eax*4] | |
loc_401031: ; "is 0" | loc_40103F: ; "is a" | |
push offset aIs0 | push offset aIsA | |
mov cl, [ebp+var_1] | ||
push ecx | ||
push offset unk_41B4C8 | ||
call sub_402FB0 | ||
add esp, 8 | ||
push offset unk_4219D8 ; int | push eax ; int | |
call sub_403080 | call sub_403570 | |
add esp, 8 | add esp, 8 | |
jmp short loc_401093 | jmp short loc_4010D5 | |
loc_401045: ; "is 1" | loc_401060: ; "is b" | |
push offset aIs1 | push offset aIsB | |
mov dl, [ebp+var_1] | ||
push edx | ||
push offset unk_41B4C8 | ||
call sub_402FB0 | ||
add esp, 8 | ||
push offset unk_4219D8 ; int | push eax ; int | |
call sub_403080 | call sub_403570 | |
add esp, 8 | add esp, 8 | |
jmp short loc_401093 | jmp short loc_4010D5 | |
loc_401059: ; "is 2" | loc_401081: ; "is c" | |
push offset aIs2 | push offset aIsC | |
mov al, [ebp+var_1] | ||
push eax | ||
push offset unk_41B4C8 | ||
call sub_402FB0 | ||
add esp, 8 | ||
push offset unk_4219D8 ; int | push eax ; int | |
call sub_403080 | call sub_403570 | |
add esp, 8 | add esp, 8 | |
jmp short loc_401093 | jmp short loc_4010D5 | |
loc_40106D: ; "is 3" | loc_4010A2: ; "is d" | |
push offset aIs3 | push offset aIsD | |
mov cl, [ebp+var_1] | ||
push ecx | ||
push offset unk_41B4C8 | ||
call sub_402FB0 | ||
add esp, 8 | ||
push offset unk_4219D8 ; int | push eax ; int | |
call sub_403080 | call sub_403570 | |
add esp, 8 | add esp, 8 | |
jmp short loc_401093 | jmp short loc_4010D5 | |
loc_401093: | loc_4010D5: | |
xor eax, eax | xor eax, eax | |
mov esp, ebp | mov esp, ebp | |
pop ebp | pop ebp | |
retn | retn | |
_main endp | _main endp | |
loc_401081: ; "Others" | loc_4010C3: ; "Others" | |
push offset aOthers | push offset aOthers | |
push offset unk_4219D8 ; int | push offset unk_41B4C8 ; int | |
call sub_403080 | call sub_403570 | |
add esp, 8 | add esp, 8 |
反思: | default部分是在函数主体之外 |
下步: | 函数的调用 |