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

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

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

山東省濰坊第一中學高68級 李明陽

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

山東省濰坊第一中學高68級 李明陽

計算機與人們的生活已經緊密的聯系在一起,計算機功能的實現主要依靠計算機語言,通過計算機語言編制相應的程序。在涉及到大規模程序設計的時候,采用單一語言就無法發揮應有的優勢,不同語言進行混合編程能夠實現優勢互補,對于實際問題的解決非常有效。本文就基于匯編語言與C/C++語言混合編程的設計研究作簡要的闡述。

匯編語言;C++;設計研究

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

一、兩種語言進行混合編程的約定

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

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

C語言在調用匯編語言時標識符前要添加下劃線,相互調用的時候,匯編語言中標識符要依照C++語言的習慣。

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

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

二、混合編程的方法

兩種語言進行混合編程的方式主要有兩種,一種是在C++源程序中直接插入匯編語言代碼,此種方式也被稱之為嵌入式匯編。另一種則是在程序中調用外部語言。

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

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

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

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

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

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

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

三、結束語

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

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

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

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

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

猜你喜歡
指令程序語言
聽我指令:大催眠術
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
讓語言描寫搖曳多姿
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
累積動態分析下的同聲傳譯語言壓縮
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 91午夜福利在线观看| 这里只有精品免费视频| 国模在线视频一区二区三区| 色网站在线免费观看| 狠狠色婷婷丁香综合久久韩国| 精品无码人妻一区二区| 欧美激情综合| 亚洲欧美另类日本| 在线色综合| 四虎成人精品在永久免费| 正在播放久久| 激情亚洲天堂| 免费人成又黄又爽的视频网站| 久久综合亚洲色一区二区三区 | 欧美日韩国产在线播放| 国产精彩视频在线观看| 国产精品太粉嫩高中在线观看| AV色爱天堂网| 免费看美女自慰的网站| 少妇精品在线| 精品视频免费在线| 国产视频大全| 黄色在线不卡| 国产一区二区精品福利| 四虎综合网| 免费在线不卡视频| 久草视频中文| 久久国产精品麻豆系列| 伊人AV天堂| 四虎在线观看视频高清无码 | 国产欧美另类| 国产午夜精品一区二区三区软件| 亚洲精品少妇熟女| 国产免费自拍视频| 亚洲精品午夜天堂网页| 国产在线自揄拍揄视频网站| 青草视频久久| 亚洲精品图区| 爆操波多野结衣| 波多野结衣中文字幕久久| 亚洲欧美国产五月天综合| 黄色a一级视频| 九九九九热精品视频| 国产精品欧美亚洲韩国日本不卡| 亚洲最黄视频| 老司国产精品视频91| 久久久黄色片| 日本午夜精品一本在线观看| 亚洲资源在线视频| jizz亚洲高清在线观看| h网站在线播放| 亚洲日韩在线满18点击进入| 久久国产精品77777| 精品人妻一区二区三区蜜桃AⅤ | 久久国产精品波多野结衣| swag国产精品| 无码AV动漫| 国产精品尤物在线| 无码aⅴ精品一区二区三区| 欧美伦理一区| 国产在线视频福利资源站| 四虎免费视频网站| 成人综合在线观看| 伊人久久婷婷| 亚洲视频无码| 美女国内精品自产拍在线播放| 国产精品免费入口视频| 精品久久高清| 国产鲁鲁视频在线观看| 日韩第一页在线| a色毛片免费视频| 亚洲最猛黑人xxxx黑人猛交| 青青青国产视频手机| 97人人做人人爽香蕉精品| 欧美激情网址| 欧美一级在线看| 伊人色综合久久天天| 全部毛片免费看| Aⅴ无码专区在线观看| 欧洲成人免费视频| 久久久久久久97| 成色7777精品在线|