函式呼叫約定

2021-07-11 22:02:52 字數 501 閱讀 6808

函式呼叫約定

1、_cdecl(c呼叫約定)

引數由右至左依次入棧,由呼叫者進行堆疊平衡。由於引數由右至左入棧,因此第乙個引數位於棧頂,這種呼叫約定方便實現引數個數可變的函式。

2、_stdcall(標準呼叫約定)

引數由右至左依次入棧,由被呼叫者進行堆疊平衡。

這種呼叫約定雖然名為」標準」,實際上卻是微軟為自己的api函式定義的呼叫約定。這種呼叫約定_pascal,與_stdcall相同。

3、_fastcall(快速呼叫約定)

前兩個引數分別由ecx和edx傳遞,接下來的引數由右至左依次入棧,由被呼叫者進行堆疊平衡。

這種呼叫約定其實是_stdcall的變形。

4、thiscall(用於c++成員函式)

這種呼叫約定用於c++語言中類成員函式的呼叫,用於傳遞this指標引數,this指標被儲存在ecx暫存器中。其餘引數由右至左入棧。如果引數個數確定,被呼叫者進行堆疊平衡;如果引數個數不確定,由呼叫者進行引數平衡。

函式呼叫約定

函式呼叫約定有多種,這裡簡單說一下 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關鍵字說明 按從右至左的順序壓引數入棧,由呼叫者把引數彈...