keil 中用函數(shù)指針調(diào)用函數(shù)的參數(shù)限制
掃描二維碼
隨時(shí)隨地手機(jī)看文章
NSIC中,通過函數(shù)指針調(diào)用的函數(shù)的參數(shù)的個(gè)數(shù)沒有限制,但是KeilC對(duì)此有限制,至多3個(gè)參數(shù)。因?yàn)椋琄eilC編譯時(shí),無法通過函數(shù)指針找到該函數(shù)的局部數(shù)據(jù)段,也就無法通過局部數(shù)據(jù)段傳遞參數(shù),只能通過寄存器傳遞參數(shù),所以參數(shù)個(gè)數(shù)是有限制的。碰到這個(gè)問題時(shí)解決辦法是:① 將該函數(shù)改為reentarnt類型。②修改源程序,將多個(gè)參數(shù)放在一個(gè)結(jié)構(gòu)體中傳遞。
交叉匯編
移植的時(shí)候可能還需要編寫少量的51匯編程序。匯編和C互相調(diào)用應(yīng)該遵守KeilC的參數(shù)傳遞和返回值傳遞規(guī)則。為了使匯編程序也能夠進(jìn)行overlay分析,匯編的書寫要有一定的格式。另外需要強(qiáng)調(diào)的一點(diǎn)是:被C程序調(diào)用的匯編函數(shù)可以使用所有的寄存器,而不用擔(dān)心會(huì)修改C程序中使用的寄存器。