函式呼叫約定

2021-12-29 20:19:56 字數 432 閱讀 5647

一,函式呼叫約定描述的內容

<1>引數如何傳遞,進棧方向

<2>棧由呼叫者還是被呼叫者清理(呼叫者清理-手動清棧、被呼叫者清理-自動清棧)

<3> 返回值如何返回

二,函式呼叫約定的形式

__stdcall, __cdecl, __fastcall, __thiscall, __nakedcall, __pascal

下面介紹幾種常見的函式呼叫約定(以vs2010編譯器為例):

(1) __cdecl(c declaration)--c語言預設的函式呼叫方式

1. 引數從右向左傳遞,放在棧中

2. 棧平衡由呼叫函式來執行(呼叫者清理-手動清棧)

3. 不定引數的函式可以使用

下面看乙個彙編的例子

[cpp]

函式呼叫約定

函式呼叫約定有多種,這裡簡單說一下 1 stdcall 呼叫約定相當於16位動態庫中經常使用的 pascal 呼叫約定。在32位的vc 5.0中pascal呼叫約定不再被支援 實際上它已被定義為 stdcall。除了 pascal外,fortran和 syscall也不被支援 取而代之的是 stdc...

函式呼叫約定

函式呼叫約定1.stdcall是pascal程式的預設呼叫方式,通常用於win32 api中,函式採用從右到左的壓棧方式,自己在退出時清空堆疊。vc將函式編譯後會在函式名前面加上下劃線字首,在函式名後加上 和引數的位元組數。2 c呼叫約定 即用 cdecl關鍵字說明 按從右至左的順序壓引數入棧,由呼...

函式呼叫約定

1.stdcall是pascal程式的預設呼叫方式,通常用於win32 api中,函式採用從右到左的壓棧方式,自己在退出時清空堆疊。vc將函式編譯後會在函式名前面加上下劃線字首,在函式名後加上 和引數的位元組數。2 c呼叫約定 即用 cdecl關鍵字說明 按從右至左的順序壓引數入棧,由呼叫者把引數彈...