执行retn、call、leave指令的时候,esp和eip的变化情况

windows 32位汇编的环境下

0A10FF61 call      0A11FFAA
0A10FF66 MOV EAX,DWORD PTR SS:[EBP+3C]

  1. call

 

  
esp = esp - 4



[esp]
= 0A10FF66    //将返回地址压入栈中
 
    eip = 0A11FFAA    //跳转到函数地址
 

 

 

 

 2. retn

 

  

eip
= [esp]
esp
= esp - 4 // 将esp中的数据出栈到eip中

 

 

 3.  leave

 


 


  
mov esp,ebp
pop ebp
// 还原函数栈

 

 

你可能感兴趣的:(call)