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