999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于匯編語言與C/C++語言混合編程的設(shè)計研究

2017-04-15 05:42:50山東省濰坊第一中學(xué)高68級李明陽
電子世界 2017年3期
關(guān)鍵詞:指令程序語言

山東省濰坊第一中學(xué)高68級 李明陽

基于匯編語言與C/C++語言混合編程的設(shè)計研究

山東省濰坊第一中學(xué)高68級 李明陽

計算機(jī)與人們的生活已經(jīng)緊密的聯(lián)系在一起,計算機(jī)功能的實現(xiàn)主要依靠計算機(jī)語言,通過計算機(jī)語言編制相應(yīng)的程序。在涉及到大規(guī)模程序設(shè)計的時候,采用單一語言就無法發(fā)揮應(yīng)有的優(yōu)勢,不同語言進(jìn)行混合編程能夠?qū)崿F(xiàn)優(yōu)勢互補(bǔ),對于實際問題的解決非常有效。本文就基于匯編語言與C/C++語言混合編程的設(shè)計研究作簡要的闡述。

匯編語言;C++;設(shè)計研究

匯編語言的特點在于占用的空間小,運行的速度快,是面向機(jī)器的一種語言,在某些場合具有無可替代的作用。其不足之處在于較為高級的語言程序編寫存在一定難度,在處理數(shù)據(jù)時這一點體現(xiàn)的更加明顯。C++是一種高級語言,功能豐富,表達(dá)靈活,開發(fā)高效,在應(yīng)用性方面要勝過匯編語言。但是在考慮到執(zhí)行速度,占用空間的前提下,C++語言則不具有優(yōu)勢。

一、兩種語言進(jìn)行混合編程的約定

兩種語言進(jìn)行混合編程的時候主要有以下幾個方面的約定。

C++與匯編語言進(jìn)行編程的時候,首先要采用一致的調(diào)用協(xié)議,C++有三種調(diào)用協(xié)議。其次是入口及返回參數(shù)的確定,在C++中所有的調(diào)用都是32位的偏移地址。最后是要聲明公用函數(shù)名與變量名。

C語言在調(diào)用匯編語言時標(biāo)識符前要添加下劃線,相互調(diào)用的時候,匯編語言中標(biāo)識符要依照C++語言的習(xí)慣。

聲明約定,對于需要調(diào)用的外部函數(shù),變量都進(jìn)行相應(yīng)的說明,標(biāo)識符是為了在其它的模塊可見[1]。對于BP,DS,CS,SS,SP在使用并改變其值時候,需要進(jìn)行保護(hù)。兩種程序的語言在存儲模式方面要相同。存儲模式相同就會產(chǎn)生兼容的調(diào)用及返回類型。

最后一點是傳遞參數(shù)的確定,壓入堆棧與實參數(shù)表參數(shù)的順序是相反的。

二、混合編程的方法

兩種語言進(jìn)行混合編程的方式主要有兩種,一種是在C++源程序中直接插入?yún)R編語言代碼,此種方式也被稱之為嵌入式匯編。另一種則是在程序中調(diào)用外部語言。

對于嵌入式匯編而言,在C++源程序中需要的地方插入?yún)R編指令,并在嵌入的匯編指令加上相應(yīng)的關(guān)鍵字。C++中內(nèi)嵌匯編語言,在VisualC++6.0操作的時候,嵌入?yún)R編指令,需要使用到關(guān)鍵字。其中在asm中的組匯編指令可以有標(biāo)號,C++中的語句以及匯編指令也可以跳轉(zhuǎn),跳轉(zhuǎn)位置是該組匯編指令中的標(biāo)號或者是指令組之外的標(biāo)號。那么,除此之外,asm所帶的匯編指令調(diào)用的只能是無重載的全局C++函數(shù),并且對函數(shù)的類型有一定的要求。以C++實現(xiàn)相同次數(shù)的減法為例,通過對兩個程序運算比較,采用嵌入式匯編的速度要比單純的采用C++語句快,從時間上計算,前者與后者相比,能夠節(jié)約百分之三十的時間。對于實用性較高的工業(yè)領(lǐng)域,以及存在大量計算的開發(fā)軟件中,采用兩種語言進(jìn)行混合編程的方法可以大大提升程序運行時的速度。

C++程序調(diào)用匯編程序。采用嵌入式匯編的方法,主要適用于程序較短的情況,然而在實際的運用中,通常通過語言調(diào)用的方式來實現(xiàn)。在匯編語言作為C++語言的外部子程序進(jìn)行調(diào)用的時候,匯編程序的開存在兩個必須要執(zhí)行的命令,分別是movbp,sp與pusbbp。此處的兩條指令是參數(shù)傳遞的關(guān)鍵,使得bp成為指向堆棧元素的指針。在這兩命令后加上相應(yīng)的語句就可以實現(xiàn)對不同數(shù)據(jù)的分配。其中局部數(shù)據(jù)的總的大小和是以字節(jié)進(jìn)行計算的,局部數(shù)據(jù)保留空間則是通過sp值的減小來實現(xiàn),在匯編的時候應(yīng)該恢復(fù)該空間。在對某個參數(shù)進(jìn)行訪問的時候,可以通過bp與參數(shù)的位移量來進(jìn)行確定。在此假設(shè)返回位置的字節(jié)數(shù)為N,參數(shù)與bp之間所占的字節(jié)的總數(shù)為M,則參數(shù)的部的位移量就是兩者的和再加上二。

匯編程序退出的時候,如果在一開始就保存了寄存器值,那么就應(yīng)該以與入棧相反的順序彈出。在已分配局部空間數(shù)據(jù)的前提下,應(yīng)該執(zhí)行相應(yīng)的命令,并返回調(diào)用程序。在調(diào)用結(jié)束后,子程序通過寄器DX與AX進(jìn)行返回值傳遞,并且當(dāng)返回值的類型是簡單型的時候,在字節(jié)數(shù)不超過4字節(jié)時,返回值的長度與默認(rèn)的存放器的關(guān)系有一定的對應(yīng)規(guī)律。

C語言程序調(diào)用匯編語言子程序[2]。為了確保調(diào)用功能的正常,匯編源程序要嚴(yán)格依照編譯系統(tǒng)的要求進(jìn)行段組合。被調(diào)用的匯編語言子程序有一定的格式約定。由于程序存在堆棧段是面向機(jī)器的,對于匯編子程序開頭有一定的特殊要求。為確保C語言主程序在調(diào)用的過程中不至于存在問題,需要用關(guān)鍵字對函數(shù)做顯示的說明,被調(diào)用的語言過程為外部函數(shù)。

匯編語言程序調(diào)用C語言子程序。C語言不具有匯編語言的某些方面的優(yōu)勢,比如匯編程序在輸入過程中可以直接讀取數(shù)據(jù)。該種模式下,主程序的格式與子程序格式一致,唯一存在差別的是在程序的開頭位置需要加入一定的語句,同時也省略了部分堆棧操作語言。

C語嵌入?yún)R編語言。C語言中可以直接編寫匯編語言的代碼,匯編語句在C語言中嵌入沒有分號,在嵌入一組語言的時候,則需要用一定的符號進(jìn)行處理。在該種模式下,C語言允許嵌入四種命令,分別是一般指令,串操作指令,跳轉(zhuǎn)指令,分配指令。

兩種程序的相互調(diào)用?;旌暇幊桃⒁鈳讉€方面的問題。參數(shù)傳遞的原則,寄存器的正確使用,存儲模式,函數(shù)與變量之間的相互調(diào)用問題,子程序的返回值。匯編語言要用到多個寄存器,C++語言也會用到一定量的寄存器,對于寄存器應(yīng)該重點關(guān)注,否則可能會導(dǎo)致程序的失敗。C++語言中,BP作為參數(shù)及自動變量區(qū)的基地址。由于編譯后的文件在函數(shù)與變量前自動的添加了下劃線,匯編語言在調(diào)用C++語言的時候,同樣要在函數(shù)名與變量名前添加下劃線,并且在匯編程序的開始部分要對調(diào)用的變量及函數(shù)進(jìn)行相應(yīng)說明。反之或是C++語言程序調(diào)用匯編語言程序,匯編語言應(yīng)該進(jìn)行說明,并且變量與函數(shù)的第一個符號為下劃線。當(dāng)C++語言調(diào)用匯編語言子程序時,被調(diào)用的子程序返回調(diào)用它的程序的時,返回值是通過寄存器傳遞的。并且視返回值的不同情況放于不同的存儲器中[3]。

三、結(jié)束語

C/C++語言與匯編語言結(jié)合在一起的混合編程應(yīng)用性非常的廣泛,二者結(jié)合在一起,能夠有效的避免單一語言的不足,并將優(yōu)勢進(jìn)行一步發(fā)揮,不足之處在結(jié)合后也會互補(bǔ)。C語言與匯編語言之間可以是調(diào)用與被調(diào)用的關(guān)系,也可以相互調(diào)用的關(guān)系。二者結(jié)合的時候要注意到相關(guān)方面的問題,比如內(nèi)存模式與寄存器的不同分配對程序的影響。在編程的時候,盡可能的利用各自的優(yōu)勢,將過程簡化,以最小的努力換取最大的收獲。

[1]夏娟,趙梅.匯編語言與C/C++語言的混合編程[J].蘇州市職業(yè)大學(xué)學(xué)報,2012(01).

[2]周曉燕.ARM匯編語言與C/C++語言混合編程實現(xiàn)方法[J].電子技術(shù)與軟件工程,2014(03).

[3]李颯瑛.C語言與匯編語言混合編程技術(shù)研究[J].電子技術(shù)與軟件工程,2013(14).

[4]孟祥娜.匯編語言與C語言混合編程方法探討[J].電腦編程技巧與維護(hù),2015(06).

猜你喜歡
指令程序語言
聽我指令:大催眠術(shù)
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
試論我國未決羈押程序的立法完善
ARINC661顯控指令快速驗證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
讓語言描寫搖曳多姿
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
累積動態(tài)分析下的同聲傳譯語言壓縮
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
主站蜘蛛池模板: 久久精品只有这里有| 久久精品中文字幕免费| 72种姿势欧美久久久久大黄蕉| 日本三区视频| 自偷自拍三级全三级视频 | 色婷婷电影网| 亚洲伦理一区二区| 婷婷综合在线观看丁香| 久久久久九九精品影院| 久久人体视频| 午夜一级做a爰片久久毛片| 亚洲日韩精品欧美中文字幕| 凹凸国产分类在线观看| 亚洲国产一区在线观看| 亚洲性影院| 91精品啪在线观看国产60岁 | 国产福利不卡视频| 国产成人精品高清在线| 国产网站免费| 成人免费视频一区二区三区 | 四虎影视永久在线精品| 免费啪啪网址| 亚洲无码高清免费视频亚洲| 久久精品66| 日韩精品亚洲人旧成在线| 国产美女在线免费观看| 日韩精品无码不卡无码| 欧美日韩在线亚洲国产人| 亚洲精品va| 欧美日韩在线亚洲国产人| 激情无码视频在线看| 尤物精品国产福利网站| 毛片免费观看视频| 欧美高清视频一区二区三区| 这里只有精品免费视频| 亚洲欧美激情另类| 亚洲午夜福利精品无码不卡| 国产欧美视频在线观看| 亚洲成人精品久久| 天堂中文在线资源| 中文字幕在线免费看| 成人在线第一页| 久久综合亚洲色一区二区三区| 91久久国产热精品免费| 国产亚卅精品无码| 免费看av在线网站网址| 国内精品小视频福利网址| 国产在线小视频| 最新亚洲av女人的天堂| 国产高潮流白浆视频| 国产v精品成人免费视频71pao| 久久这里只有精品66| 亚洲熟女偷拍| 1级黄色毛片| 色综合激情网| 欧美福利在线| 欧美一级爱操视频| 免费国产高清精品一区在线| 久久婷婷五月综合色一区二区| 亚洲中字无码AV电影在线观看| 一级一毛片a级毛片| 成年午夜精品久久精品| 少妇高潮惨叫久久久久久| 国产高清又黄又嫩的免费视频网站| 久久精品人人做人人爽97| 在线观看国产精品第一区免费| 免费在线看黄网址| 三级欧美在线| 黄色三级网站免费| 欧美一级大片在线观看| 色噜噜综合网| 夜夜操天天摸| 97无码免费人妻超级碰碰碰| 亚洲天堂区| 亚洲久悠悠色悠在线播放| 久久精品视频一| 日韩精品资源| 丁香婷婷综合激情| 国产精品成人观看视频国产| 亚洲一欧洲中文字幕在线| 日本a级免费| 国产精品护士|