1. 程式人生 > >2018/10/03-函式呼叫約定、cdecl、stdcall、fastcall- 《惡意程式碼分析實戰》

2018/10/03-函式呼叫約定、cdecl、stdcall、fastcall- 《惡意程式碼分析實戰》

  cdecl是最常用的約定之一,引數是從右到左按序被壓入棧,當函式完成時由呼叫者清理棧,並且將返回值儲存在EAX中。

  stdcall約定是被呼叫函式負責清理棧,其他和cdecl非常類似。

  fastcall呼叫約定跨編譯器時變化最多,但是它總體上在所有情況下的工作方式都是相似的。在fastcall中,前一些引數(典型的是前兩個)被傳到暫存器中,備用的暫存器是EDX和ECX(微軟fastcall約定)。如果需要的話,剩下的引數再以從右到左的次序被載入到棧上。通常使用fastcall比其他約定更高效,因為程式碼不需要涉及過多的棧操作。