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

2018/10/03-函數調用約定、cdecl、stdcall、fastcall- 《惡意代碼分析實戰》

實戰 std 高效 返回 cde 似的 工作 負責 棧操作

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

  stdcall約定是被調用函數負責清理棧,其他和cdecl非常類似。

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

2018/10/03-函數調用約定、cdecl、stdcall、fastcall- 《惡意代碼分析實戰》