什麼是葉函式

不呼叫其他函式的函式。也稱為葉子函式(leaf function)。返回位址不會被覆寫,因此不必儲存,也常能不建立堆疊框。

日文名稱: 葉関数

「葉函式」出現在1領域的1道練習題中(指令集與組合語言等)。

這個名詞所屬的領域: 指令集與組合語言

練習葉函式的題目

不呼叫其他函式的函式(葉函式、leaf function),在很多情況下不需要將ra保存到堆疊。下列何者是其理由?

  1. A因為葉函式不使用ret指令
  2. B因為葉函式的返回位址是由CPU自動堆入堆疊
  3. C因為不呼叫其他函式,ra不會被覆寫,返回位址會原封不動地保留
查看答案與解析

正確答案:C. 因為不呼叫其他函式,ra不會被覆寫,返回位址會原封不動地保留

ra會在每次呼叫函式的jal時被覆寫,所以呼叫其他函式的函式,必須一開始就將自己的返回位址保存到堆疊。葉函式不使用jal,所以ra不會被破壞,不必保存就能ret。此外,如果也不使用被呼叫端保存的暫存器,甚至不需要建立堆疊框(stack frame)。x86的call指令一定會將返回位址堆入堆疊,這是與RISC-V的差異。

解析中的「葉函式」

出現「葉函式」的題目(1題)

  1. 不呼叫其他函式的函式(葉函式、leaf function),在很多情況下不需要將ra保存到堆疊。下列何者是其理由?

相關名詞

返回位址 堆疊框 分支延遲槽 立即值 呼叫者保存暫存器 呼叫慣例 定址模式 框指標 堆疊指標 條件碼

前往名詞解釋列表