代碼
點擊查看代碼
#include <iostream>
using namespace std;
int sum(int a,int b){
int temp=0;
temp= a +b;
return temp;
}
int main(){
int a =10;
int b=20;
int ret =sum(a,b);
return 0;
}
以上代碼考慮2個問題:
問題1:main函式呼叫sum,sum執行完成以后,怎么知道回到哪個函式中?
問題2:sum函式執行完后,回到main后,怎么知道從哪一行指令繼續執行的?
//------------------------------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------------------------------
函式引數壓堆疊

//------------------------------------------------------------------------------------------------------------------
函式引數壓堆疊

//------------------------------------------------------------------------------------------------------------------
下一潭訓編指令地址入堆疊

//------------------------------------------------------------------------------------------------------------------
main函式堆疊底指標入堆疊

//------------------------------------------------------------------------------------------------------------------
移動ebp,進入被調函式

//------------------------------------------------------------------------------------------------------------------
為sum函式開辟函式堆疊幀

//------------------------------------------------------------------------------------------------------------------
將回傳值放入暫存器

//------------------------------------------------------------------------------------------------------------------
回退esp堆疊指標

//------------------------------------------------------------------------------------------------------------------
將ebp指回main函式堆疊底

//------------------------------------------------------------------------------------------------------------------
取出下一條執行的匯編指令地址并執行

//------------------------------------------------------------------------------------------------------------------

此時 esp ,ebp 又指向了main函式的堆疊底指標和堆疊頂指標
//------------------------------------------------------------------------------------------------------------------

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/525092.html
標籤:C++
