C程式碼
int main()
{
return 0;
}
nasm風格的彙編程式碼
section .text ; 定義程式碼段
global main ; 宣告main是一個全域性符號,以便連結器能夠找到
extern exit ; 引入exit函式
main: ; 定義main函式
push rbp ; 儲存當前基址指標,即儲存呼叫者的棧幀
mov rbp, rsp ; 將棧頂指標的值賦給基址指標,設定新的棧幀
mov eax, 0 ; 返回值0儲存在eax暫存器中
pop rbp ; 恢復基址指標
ret ; 返回撥用者,從棧中彈出返回地址,並將程式計數器 RIP 設定為該地址,即返回撥用處繼續執行
總結
- 入口函式main的宣告與定義
- 棧幀的設定和恢復,即棧幀管理
- 準備返回值,儲存在eax暫存器中,一種約定