下面的東西沒(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)用.