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

彙編語言調用C語言

題目:用彙編語言調用C語言實現21!(21的階乘)

實驗軟件:ARM Developer Suite V1.2

步驟:建立兩個文件,一個.s文件,一個.c文件,順序無所謂,但要在一個project裏;


文件 test.s

        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 ^ )/*

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章