GCC的調用約定

GCC的調用約定

  • IA-32
    在32位的體系結構中,有3種調用約定,分別是cdeclstdcallfastcall,GCC的默認調用約定爲cdecl。參數從右向左壓棧,調用者負責在調用後清理堆棧,返回值保存在eax寄存器中,非易失寄存器爲ebpespebxesiedi
    參考 C Calling Convention

X86上的一些調用慣例需要通過棧來傳遞參數,對於X64來說,多數調用慣例都是通過寄存器來傳遞參數。

  • X86-64
    x64的調用約定只有一種,遵守system v ABI的規範。但是Linux和windows卻有一些差別。在windows X64中,前4個參數通過rcxrdxr8r9來傳遞,其餘的參數按照從右向左的順序壓棧。在Linux上,則是前6個參數通過rdirsirdxrcxr8r9傳遞,其餘的參數按照從右向左的順序壓棧。
    更詳細的信息參考另一篇文章 system V ABI

函數屬性(GCC手冊)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章