下面的東西沒(méi)有感覺(jué),先MARK。

  cdecl   由調(diào)用者清除堆棧  
   stdcall   由被調(diào)的函數(shù)清除堆棧  
   fastcall   是把函數(shù)參數(shù)列表的前三個(gè)參數(shù)放入寄存器eax,edx,ecx,其他參數(shù)壓棧。

函數(shù)調(diào)用規(guī)則指的是調(diào)用者和被調(diào)用函數(shù)間傳遞參數(shù)及返回參數(shù)的方法,常用的有Pascal, stdcall,cdecl.

__cdecl  C調(diào)用規(guī)則:

1.在后面的參數(shù)先進(jìn)入堆棧;

2.在函數(shù)返回后,調(diào)用者要負(fù)責(zé)清除堆棧.所以這種調(diào)用常會(huì)生成較大的可執(zhí)行程序.

__stdcall  又稱(chēng)為WINAPI, 其調(diào)用規(guī)則:

1.在后面的參數(shù)先進(jìn)入堆棧;

2.被調(diào)用的函數(shù)在返回前自行清理堆棧,所以生成的代碼比cdecl小.

Pascal 調(diào)用規(guī)則:

Pascal調(diào)用規(guī)則主要用在案WIN16函數(shù)庫(kù)中,現(xiàn)在基本不用.

1.參數(shù)在前的先進(jìn)入堆棧;

2.不支持可變參數(shù)的函數(shù)調(diào)用.