學(xué)習(xí)嵌入式開發(fā),匯編語言程序如何調(diào)用C語言程序的呢?粵嵌嵌入式培訓(xùn)課程是這樣介紹。
為了保證程序調(diào)用時參數(shù)的正確傳遞,匯編語言程序的設(shè)計要遵守ATPCS。在C語言程序中,不需要使用任何關(guān)鍵字來聲明將被匯編語言調(diào)用的C語言程序,但是在匯編語言程序調(diào)用該C語言程序之前,需要在匯編語言程序中使用IMPORT偽操作聲明來聲明該C語言程序。在匯編語言程序中通過BL指令來調(diào)用子程序。在示例中,匯編程序strcopy完成字符串賦值功能,C語言程序調(diào)用strcopy完成字符串的復(fù)制工作。
示例:匯編語言程序調(diào)用C語言程序
int g(int a,int b,int c,int d,int e)
{
return a+b+c+d+e;
}
匯編語言程序調(diào)用C語言程序g()計算5個整數(shù)i,2xi,3xi,4xi,5xi的和。
匯編語言源程序:
EXPORT f
AREA f,CODE,READONLY
IMPORT g ;在R0中
STR LR,[SP,#-4]! ;預(yù)先保存LR
ADD R1,R0,R0 ;計算2xi(第2個參數(shù))
ADD R2,R1,R0 ;計算3xi(第3個參數(shù))
ADD R1,R0,R0 ;計算5xi(第5個參數(shù))
STR R3,[SP,#-4]! ;將5個參數(shù)壓入堆棧
ADD R3,R1,R1 ;計算4xi(第4個參數(shù))
BL g ;調(diào)用C語言程序g()
ADD SP,SP,#4 ;調(diào)整數(shù)數(shù)據(jù)棧指針,準(zhǔn)備返回
LDR PC,[SP],#4 ;從子程序返回
END
Linux內(nèi)核分析
Linux的源代碼具有開放性,其內(nèi)核灰機(jī)了無數(shù)編程人員的編程思想,吸引著一批批的開發(fā)者去研究它。深刻領(lǐng)悟Linux內(nèi)核的編程思想,將是學(xué)習(xí)嵌入式Linux系統(tǒng)編程的基礎(chǔ)。嵌入式培訓(xùn)課程只有構(gòu)造出更加精簡、高效的嵌入式Linux內(nèi)核,才可編寫出更高質(zhì)量的驅(qū)動程序與應(yīng)用程序。
學(xué)習(xí)嵌入式培訓(xùn)課程,粵嵌提供嵌入式學(xué)習(xí)平臺,通過嵌入式開發(fā)的學(xué)習(xí),讓你不斷進(jìn)步。