请问下面的两个push ecx
指令的目的是什么?我不理解它们应该要做什么。
我知道push ebp
是保存堆栈基指针,然后mov ebp, esp
是将堆栈指针赋值给以前的堆栈基指针。
int main(){
01301190 push ebp
01301191 mov ebp,esp
01301193 push ecx ;here??
01301194 mov dword ptr [h],0CCCCCCCCh
int h = my_func(1,3);
int my_func(int a, int b){
01301160 push ebp
01301161 mov ebp,esp
01301163 push ecx ;here??
01301164 mov dword ptr [m],0CCCCCCCCh
int m = 0;
0130116B mov dword ptr [m],0
m = a*b;
01301172 mov eax,dword ptr [a]
01301175 imul eax,dword ptr [b]
01301179 mov dword ptr [m],eax
return m;
0130117C mov eax,dword ptr [m]
}
0130117F mov esp,ebp
}
01301181 pop ebp
01301182 ret
my_func
的所有内容都在那里了。我认为这个问题是公平的。 - Dwayne Towell