C與彙編(NASM) (1)

Dylaris發表於2024-10-13

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暫存器中,一種約定

相關文章