c++調用約定(32位程序)


調用約定

參數暫存

清棧

清棧指令

__cdecl

-->左入棧(this最後一個入棧)

調用者

add esp,n*4;

__thiscall

-->左入棧(ecx保存this)

被調用者

ret n*4;

__fastcall

ecx,edx保存從左邊開始前兩個參數,-->左入棧(ecx保存this)

被調用者

ret n*4;

__stdcall

-->左入棧(this最後一個入棧)

被調用者

ret n*4;

__declspec(naked)

可與__cdecl, __thiscall, __fastcall, __stdcall連用;

在用於一般函數調用語法時,應返回代碼應與相應約定一致

不定

如果函數中包含ret n*4;返回代碼,則由被調用者自動清棧;

如果沒有則由調用者使用add esp,n*4指令手動清棧。


發佈了41 篇原創文章 · 獲贊 35 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章