匯編程序、c/c++程序間的相互調(diào)用
發(fā)布時(shí)間:2008/12/23 0:00:00 訪問(wèn)次數(shù):1005
3.匯編程序、c/c++程序間的相互調(diào)用
匯編程序、c程序及c++程序在相互調(diào)用時(shí),特別應(yīng)注意遵守相應(yīng)的atpcs規(guī)則。下面舉一些例子具體說(shuō)明在這些混合調(diào)用中應(yīng)注意遵守的atpcs規(guī)則。
。1)c程序調(diào)用匯編程序
匯編程序的設(shè)計(jì)要遵守atpcs規(guī)則,保證程序調(diào)用時(shí)參數(shù)的正確傳遞。在匯編程序中使用export偽指令聲明本程序,使得本程序可以被別的程序調(diào)用;在c語(yǔ)言中使用extern關(guān)鍵詞聲明該匯編程序。下面是一個(gè)c程序調(diào)用匯編程序的例子。其中,匯編程序strcopy實(shí)現(xiàn)字符串復(fù)制功能,c程序調(diào)用strcopy完成字符串的復(fù)制工作。
。2)匯編程序調(diào)用c程序
匯編程序的設(shè)計(jì)要遵守atpcs規(guī)則,保證程序調(diào)用時(shí)參數(shù)的正確傳遞。在匯編程序中使用import偽指令聲明將要調(diào)用的c程序。下面是一個(gè)匯編程序調(diào)用c程序的例子。其中,在匯編程序中設(shè)置好參數(shù)的值,本例子中有5個(gè)參數(shù),分別使用寄存器r0存放第1個(gè)參數(shù),ri存放第2個(gè)參數(shù),r2存放第3個(gè)參數(shù),r3存放第4個(gè)參數(shù),第5個(gè)參數(shù)利用數(shù)據(jù)棧傳送。由于利用數(shù)據(jù)棧傳遞參數(shù),因此在程序調(diào)用結(jié)束后要調(diào)整數(shù)據(jù)棧指針。
。3)c++程序調(diào)用c程序
c++程序調(diào)用c程序時(shí),在c程序中使用關(guān)鍵詞extern"c"聲明被調(diào)用的c程序。對(duì)于c++中的類或者結(jié)構(gòu),如果它沒(méi)有基類和虛函數(shù),則相應(yīng)對(duì)象的存儲(chǔ)結(jié)構(gòu)和arm c相同。下面的例子說(shuō)明了這一點(diǎn)。
。4)匯編程序調(diào)用c++程序
在匯編程序中使用偽指令import聲明被調(diào)用的c++程序。在匯編程序中將參數(shù)存放在數(shù)據(jù)棧中,而存放參數(shù)的數(shù)據(jù)棧的單元地址放在r0寄存器中,這樣被調(diào)用的c++程序就能訪問(wèn)相應(yīng)的參數(shù)。下面的例子說(shuō)明了這一點(diǎn)。
歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
3.匯編程序、c/c++程序間的相互調(diào)用
匯編程序、c程序及c++程序在相互調(diào)用時(shí),特別應(yīng)注意遵守相應(yīng)的atpcs規(guī)則。下面舉一些例子具體說(shuō)明在這些混合調(diào)用中應(yīng)注意遵守的atpcs規(guī)則。
。1)c程序調(diào)用匯編程序
匯編程序的設(shè)計(jì)要遵守atpcs規(guī)則,保證程序調(diào)用時(shí)參數(shù)的正確傳遞。在匯編程序中使用export偽指令聲明本程序,使得本程序可以被別的程序調(diào)用;在c語(yǔ)言中使用extern關(guān)鍵詞聲明該匯編程序。下面是一個(gè)c程序調(diào)用匯編程序的例子。其中,匯編程序strcopy實(shí)現(xiàn)字符串復(fù)制功能,c程序調(diào)用strcopy完成字符串的復(fù)制工作。
。2)匯編程序調(diào)用c程序
匯編程序的設(shè)計(jì)要遵守atpcs規(guī)則,保證程序調(diào)用時(shí)參數(shù)的正確傳遞。在匯編程序中使用import偽指令聲明將要調(diào)用的c程序。下面是一個(gè)匯編程序調(diào)用c程序的例子。其中,在匯編程序中設(shè)置好參數(shù)的值,本例子中有5個(gè)參數(shù),分別使用寄存器r0存放第1個(gè)參數(shù),ri存放第2個(gè)參數(shù),r2存放第3個(gè)參數(shù),r3存放第4個(gè)參數(shù),第5個(gè)參數(shù)利用數(shù)據(jù)棧傳送。由于利用數(shù)據(jù)棧傳遞參數(shù),因此在程序調(diào)用結(jié)束后要調(diào)整數(shù)據(jù)棧指針。
(3)c++程序調(diào)用c程序
c++程序調(diào)用c程序時(shí),在c程序中使用關(guān)鍵詞extern"c"聲明被調(diào)用的c程序。對(duì)于c++中的類或者結(jié)構(gòu),如果它沒(méi)有基類和虛函數(shù),則相應(yīng)對(duì)象的存儲(chǔ)結(jié)構(gòu)和arm c相同。下面的例子說(shuō)明了這一點(diǎn)。
。4)匯編程序調(diào)用c++程序
在匯編程序中使用偽指令import聲明被調(diào)用的c++程序。在匯編程序中將參數(shù)存放在數(shù)據(jù)棧中,而存放參數(shù)的數(shù)據(jù)棧的單元地址放在r0寄存器中,這樣被調(diào)用的c++程序就能訪問(wèn)相應(yīng)的參數(shù)。下面的例子說(shuō)明了這一點(diǎn)。
歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
上一篇:ARM C/C++編譯器
熱門點(diǎn)擊
- 在c/c++代碼中嵌入?yún)R編指令
- 匯編語(yǔ)言程序中的字符串表達(dá)式及運(yùn)算符
- 匯編語(yǔ)言程序中常用的符號(hào)
- 從匯編程序中訪問(wèn)C程序變量
- 匯編語(yǔ)言程序中的邏輯表達(dá)式及運(yùn)算符
- ARM C/C++編譯器
- 匯編程序、c/c++程序間的相互調(diào)用
- RFID倉(cāng)儲(chǔ)管理系統(tǒng)流程
- 匯編語(yǔ)言程序中的數(shù)字表達(dá)式及運(yùn)算符
- 射頻接口發(fā)送部分的Multisim仿真
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- AMOLED顯示驅(qū)動(dòng)芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計(jì)
- GB300 超級(jí)芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個(gè)最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究