C 函式的呼叫約定

2021-09-22 16:36:06 字數 435 閱讀 9397

一、c/c++函式的呼叫約定(預設使用__cdecl)

1、__cdecl c標準呼叫約定

2、__stdcall windows標準呼叫約定

3、__fastcall 快速呼叫約定

4、__thiscall 類成員方法的呼叫約定

約定了:

1、符號生成規則 列如 int sum(int,int)

(1) ?sum@@yahhh@z

(2) ?sum@@yghhh@z

2、實參入棧順序

都是從右向左

3、形參記憶體的開闢、清理

(1)__cdecl:呼叫方開闢、呼叫方清理

(2)__stdcall:呼叫方開闢、呼叫方清理

(3)__fastcall: 前兩個形參是由暫存器帶入被呼叫方,沒有開闢記憶體,

以後的形參,與__stdcall處理相同

C 函式呼叫約定

stdcall是 函式呼叫約定的一種,函式呼叫約定主要約束了兩件事 1.引數傳遞順序 2.呼叫 堆疊由誰 呼叫函式或 被呼叫函式 清理 常見的 函式呼叫約定 stdcall cdecl fastcall thiscall naked call stdcall表示 1.引數從右向左壓入堆疊 2.函式被...

c 函式呼叫約定

函式的呼叫約定,當乙個函式被呼叫時,引數的傳遞以及返回值以什麼樣的方式回到呼叫函式 函式的呼叫約定就是指引數和返回值是怎麼樣傳遞的,以及是由誰平衡堆疊的。函式的呼叫約定主要針對三個問題 1.函式符號的生成與編譯後的名稱 2.實參的入棧順序 3.形參的開闢與清理方式 一 cdecl呼叫約定 cdecl...

C 函式的呼叫約定

呼叫約定允許你指定被調函式和呼叫者之間傳遞引數和返回值的方式。不同的呼叫約定區別主要在於 並非所有約定都在所有支援的平台上可用,某些約定使用平台特定的實現。這篇文章描述的是windows x86平台。在 x86 平台上,所有引數在傳遞時都將加寬到 32 位。返回值也將加寬到 32 位,並通過 eax...