ARM彙編語言與C語言混合編程(part1)

彙編語言調用C語言

題目:用彙編語言調用C語言實現21!(21的階乘)
實驗軟件:ARM Developer Suite V1.2
步驟:建立兩個文件,一個.s文件,一個.c文件,順序無所謂,但要在一個project裏;
test.s:

 	EXPORT test
 	AREA test,CODE,READONLY
 	IMPORT CFUN               
 	ENTRY
 	CODE32
START
	MOV R0,#21
	BL CFUN
STOP
	B STOP
END

main.c

long long CFUN(int a){    //函數返回類型和result類型都要是long long int,注意階乘結果很大,一個寄存器放不下。
	long long result=1;
	int i=1;
	for(i;i<=a;i++)
		result=result*i;
	return result;
}      

彙編調用C時,函數參數用寄存器傳,默認從R0開始,大於4個的參數要用堆棧指針傳;C函數返回值默認放在R0中,運行後查看寄存器結果即可(此題結果過大,一個放不下,R0放階乘結果的低位,R1放結果的高位)

運行結果:
在這裏插入圖片描述此文章本人原創,如有問題底部留言,如有轉載請標明出處。 --HurryChen

                          Happy   Coding!
                           *\( ^ v ^ )/*
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章