匯編調(diào)用C,要按照函數(shù)調(diào)用規(guī)范來傳遞參數(shù)(即壓棧),常用的函數(shù)調(diào)用規(guī)范有stdcall,cdecl等,cdecl是通常的缺省調(diào)用規(guī)范。如果是cdecl,清棧動(dòng)作是由調(diào)用者來處理的,也就是匯編在c函數(shù)返回后要清棧。
另外匯編調(diào)用C,還要abi來處理返回值,常用的ARM abi有oabi,eabi等,涉及到返回值在哪個(gè)寄存器中。
C調(diào)用匯編,匯編除了按以上的函數(shù)調(diào)用規(guī)范和abi規(guī)范來處理參數(shù)以及返回值之外,要使用mov pc,lr來返回C,即C調(diào)用發(fā)生時(shí),LR中有調(diào)用的返回地址