函式呼叫方式

2021-06-26 11:11:44 字數 699 閱讀 2118

所謂的呼叫方式是指:

在呼叫乙個函式時,約定的傳遞引數方式和平衡堆疊方式,例如:

有乙個函式,它有兩個引數

xyz(first,second)

當我們使用stdcall呼叫方式時,也就是windows呼叫api的常見方式(又幾個函式例外),它的呼叫方式如下:

******x1 push second

******x2 push first

******x3 call xyz

引數傳遞從右到左

堆疊的平衡也是有被呼叫函式負責,

如果是c呼叫方式如下:

******x1 push second

******x2 push first

******x3 call xyz

******x4 add esp 08

引數傳遞從右到左

堆疊的平衡要有呼叫函式負責,

如果是pascal呼叫方式如下:

******x1 push first

******x2 push second

******x3 call xyz

引數傳遞從左到右

堆疊的平衡有被呼叫函式負責。

函式呼叫方式

cdecl 是c declaration的縮寫,表示c語言預設的函式呼叫方法 所有引數從右到左依次入棧,這些引數由呼叫者清除,稱為手動清棧。被呼叫函式不需要求呼叫者傳遞多少引數,呼叫者傳遞過多或者過少的引數,甚至完全不同的引數都不會產生編譯階段的錯誤。stdcall 是standard call的縮...

函式呼叫方式

現代的程式語言的函式竟然有那麼多的呼叫方式。這些東西要完全理解還得通過彙編 才好理解。他們各自有自己的特點 其實這些呼叫方式的差別在主要在一下幾個方面 1.引數處理方式 傳遞順序,訪問 利用盞還是暫存器 2.函式的結尾處理方式 善後處理 如 棧的恢復由誰恢復?函式內恢復 還是呼叫後恢復 以下是理論 ...

函式呼叫方式

在高階語言中,就是通過函式的呼叫方式來說明這兩個問題的。常見的呼叫方式有 stdcall cdecl fastcall thiscall thiscall naked call 下面就分別介紹這幾種呼叫方式 1.stdcall stdcall呼叫方式又被稱為pascal呼叫方式。在microsoft...