一,函式呼叫約定描述的內容
<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關鍵字說明 按從右至左的順序壓引數入棧,由呼叫者把引數彈...