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

淺談匯編語言與C語言的混合程序設計技術

2015-11-23 03:12:28蔣仁祥
大眾科技 2015年2期
關鍵詞:程序

蔣仁祥

(福建師范大學數(shù)學和計算機學院,福建 福州 350007)

淺談匯編語言與C語言的混合程序設計技術

蔣仁祥

(福建師范大學數(shù)學和計算機學院,福建 福州 350007)

匯編語言實際上就是一種針對機器的語言形式,具有極快的運行速度和較小的存儲空間,可在一定條件下直接控制硬件,在多種領域中均得到廣泛的應用,并具有至關重要的作用。然而在實際的編寫與調(diào)試環(huán)節(jié)中,其難度和復雜程度都是很大的,特別是混合運算環(huán)節(jié)。C語言具有極高的靈活性和表達能力,在軟件的開發(fā)環(huán)節(jié),運用匯編語言與C語言的混合程序設計技術,不僅可以有效解決單一使用匯編語言處理數(shù)據(jù)時的困難,還可大幅提高實際的運行效率。文章闡述了兩種語言混合編程的具體方法,以及二者在連接時應注意的問題,為該混合程序設計技術的推廣與應用奠定基礎。

匯編語言;C語言;混合程序設計

較大程序的設計過程中,若在充分使用匯編語言程序的前提下,充分融合其他高級語言程序,這樣不僅可以全面發(fā)揮出各類程序的特點,還能實現(xiàn)二者融合所帶來的優(yōu)勢,實現(xiàn)現(xiàn)階段主流的混合編程。程序設計過程中,C語言在一定條件下,可完成匯編語言對應子程序的調(diào)用,這一過程是可逆的,匯編語言與C語言可相互調(diào)用,另外由于C語言具有較高的表達能力,所以在被調(diào)用時匯編語言還能將對應的語句融入其中,這是單一程序編程無法達到的,具有很高的實際價值。然而,在混合編程階段,應密切注意匯編語言與 C語言之間的連接情況,對可能造成影響的因素進行綜合分析,確保混合編程發(fā)揮出最佳的效果。

1 混合編程方法

在實際的編程過程中,將 C語言與匯編語言充分結(jié)合的編程方法主要包括四方面內(nèi)容:

(1)混合編程過程中,指定編程任務會被分成多種功能模塊,通常情況下,模塊主要以程序或者是函數(shù)的形態(tài)表現(xiàn),結(jié)合模塊的實際特點選取適宜的語言完成編程,隨后運用對應的編譯系統(tǒng)將編程結(jié)果按要求轉(zhuǎn)換為目標文件,最終將所有目標文件進行連接,從而生成完整的文件。

(2)對于C語言程序而言,往往需要運用到在匯編程序中完成定義的常規(guī)變量。

(3)一般而言,可將匯編語句直接、快速編入C語言程序中,拓展了C語言程序的功能,有效解決了C語言程序無法控制硬件的缺陷。

(4)通過運用函數(shù)的方法,可在C語言內(nèi)部快速調(diào)用匯編語句。

2 C語言程序融入?yún)R編語句

對于 C語言程序而言,可直接完成匯編語言代碼的編寫任務,將指定的匯編語句融入到 C語言程序中時,一般不需要分號,如果所選匯編語句以組的形式存在,則需使用大括號({})。匯編語句包含多種形式,可在C語言中使用的主要分為四類,分別為跳轉(zhuǎn)、串操作、分配以及一般指令等內(nèi)容。

3 C語言調(diào)用匯編子程序

為達到調(diào)用效果,還需從細節(jié)入手,確定匯編語言所對應源程序的段組合是否切實滿足編譯的實際需求,如果源程序違約勢必會對調(diào)用效果造成不同程度的影響。

3.1 基本格式

匯編程序子程序格式中的開頭和末尾分別表示程序的開始與結(jié)束,均屬偽指令范疇。匯編程序子程序名實際上就是一個標示符,由編程人員自行創(chuàng)建。另外,子程序名通常還表示匯編程序中第一條指令的實際邏輯地址,也可稱作入口地址。一般而言,類型只分兩種,分別為NEAR與FAR,不同類型會對程序中的調(diào)用及返回指令對應的翻譯系統(tǒng)造成直接影響。處在程序中心位置的序列為程序段,程序段具備特定的功能,在程序段的末尾,通常會有一條返回指令(RET)。

3.2 子程序的基本格式

與上述基本格式相比子程序主要具備以下幾方面特點:

(1)由于C語言和匯編語言的堆棧段相同,所以,為了達到混合編程的目的,對應的匯編程序在運行的初期必須進行兩條指令,這兩條指令分別為 PUSH BP(緩存棧基址)和MOVE BO,SP。

(2)C語言程序的調(diào)用對象需在PUBLIC偽操作的支持下進行說明,確定該子程序?qū)⒁煌獠克{(diào)用。

(3)C語言支持對應子程序采用DI或SI完成變量的存儲任務,由于在實際情況中,變量一般在兩個時以后進行存放,所以在C語言子程序中會生成PUSH SI/DI語句。

(4)在程序段中,不僅定義了代碼生成器、信息資料管理器還將其合成為整體的數(shù)據(jù)段(DGROUP),段組內(nèi)所用的基址是一致的。

(5)程序核心語句中應包含返回函數(shù)值,而且該個函數(shù)值的具體位置應處在RET語句之前。

(6)調(diào)用的返回過程需由RET語句命令。

(7)末尾處的END僅代表程序運行完畢,并為標明實際的啟動位置。

4 調(diào)用C語言

從匯編語言的角度講,其具有的優(yōu)勢是 C語言難以媲美的,比如在輸入的過程中,匯編語言支持所有進制的數(shù)據(jù),并無需翻譯直接讀取。所以在匯編語言中調(diào)用 C語言是可以且具有一定價值的。匯編語言中各類程序的格式并沒有太大出入,主程序要求程序的開始階段具有EXTERN語句,以此表名此函數(shù)將被調(diào)用,屬外部范疇。過程語句中,可在CALL語句的支持下,完成外部函數(shù)的調(diào)用任務,具體格式為CALL NEAR PTY。如果C語言程序中的子程序具備被調(diào)用的條件,則在成為匯編語言程序的子程序時,程序中可以包含 C語言函數(shù),無需添加EXTERN語句進行說明。C語言程序調(diào)用過程中軟件的堆棧分配如圖1所示。

圖1 軟件堆棧分配結(jié)構(gòu)示意圖

5 匯編語言與C語言連接技術關鍵點

匯編語言與 C語言連接并混合編程的過程中,需要密切注意三方面內(nèi)容,分別為參數(shù)傳遞、調(diào)用關系和模塊連接,只有妥善處理這三方面內(nèi)容,才能有效提高匯編語言與 C語言的連接及混合編程質(zhì)量,從而真正提高程序運行效率,改善編程環(huán)境。

(1)參數(shù)傳遞

匯編語言與 C語言在連接和混合編程的過程中,參數(shù)會在一定條件下進行傳遞,一般而言,傳遞過程通常運用堆棧形式。從匯編語言的角度講,主要選取BP作為堆棧基址的寄存器,首先將調(diào)用過程中 C語言程序產(chǎn)生的參數(shù)進行編排和劃分,并將其壓入至堆棧當中,如果程序在后續(xù)的運行過程中需要使用堆棧中的參數(shù)時,可再次使用BP 將參數(shù)按照實際要求和偏移量實施存取。

(2)調(diào)用關系

程序在調(diào)用之前,應建立并完善調(diào)用關系,以此說明該子程序?qū)⒈徽{(diào)用。在調(diào)用的過程中,對應程序應表明自身已屬外部類型范疇,從而為后續(xù)的引用和計算提供便利,同時,調(diào)用程序同樣需要及時說明將要被引用程序的具體名稱。在確定調(diào)用關系的過程中,還需結(jié)合各類存儲模式的具體要求,確定程序的語言格式。C語言程序的小模式一般與匯編語言程序中的近類型相對應,而大模式則與遠類型相對應。

(3)模塊連接

為確保匯編語言與 C語言連接與混合編程的可靠性,還需進一步完善兩方面工作,其一是匯編語言程序與 C語言程序所使用的存儲模式必須為一致的;其二是匯編語言程序需支持 C語言程序的命名要求,在連接和使用之前需擬定兼容合約,由于匯編語言程序的特點較為明顯,所以編程中函數(shù)及變量的命名一般以 C語言程序的要求為準,匯編語言程序必須嚴格遵守約定。

C語言程序中主要涵蓋了六種形式的存儲模式,分別為微型存儲模式、小型存儲模式、中型存錯模式、緊湊型存儲模式、大型存儲模式以及巨型存儲模式,由此可見,存儲模式主要由空間和大小區(qū)分。其中微型存儲模式中的程序和堆棧均處于相同段內(nèi);小型存儲模式具有數(shù)據(jù)和代碼段,實際數(shù)量均為一個。如要進行混合編程,必須確保兩個程序使用相同的存儲模式。對于匯編語言而言,Model代表此程序所用的偽指令,而后需所接內(nèi)容即為存儲模式,一般為上述模式的其中一種。如果 C語言程序使用了小型存儲模式,在匯編語言中將會表現(xiàn)為Model Small,此時兩種程序所用存儲模式為統(tǒng)一類型。由于小型存儲模式采用Near作為基礎指針,所以該存儲模式具有較高的運行效率,因此在實際的混合編程情況中,應在條件滿足的情況下盡可能選用小型存儲模式。

C語言程序的編譯過程中,程序中變量及函數(shù)名稱的下方會被添加一道下劃線,為確保連接質(zhì)量,在調(diào)用子程序中,任意一種標示符的都需添加下劃線。從C語言程序的角度講,其會對調(diào)用對象中具體變量與函數(shù)予以偽命令,以此達到說明的目的,通常將命令放置在函數(shù)與變量的外部。另外,為了保存匯編語言程序中完整的標示符,還需使用PUBLIC操作符對指定標示符進行定義。如果匯編語言程序需使用 C語言程序中的函數(shù),需要在所選函數(shù)的名稱前添加下劃線,同時在程序開始階段運用EXTERN語句進行說明,如圖2所示。

圖2 匯編語言程序訪問C語言程序函數(shù)

6 總結(jié)

總之,匯編語言與 C語言的充分融合,打破了單一語言程序編程的局限性,兩種語言程序的特點均可得到充分的發(fā)揮,并在運行的過程中相互協(xié)調(diào),通過參數(shù)傳遞功能,還可實現(xiàn)數(shù)據(jù)信息的共享,從而為相關軟件的開發(fā)提供良好的保障,使其更加安全可靠,推動了編程事業(yè)的全面快速發(fā)展。

表1 GPU與CPU下視頻編碼時間表

5 結(jié)束語

本系統(tǒng)為GOP級的并行編碼算法,它利用可編程GPU以及相應的計算統(tǒng)一設備架構(gòu)CUDA對基于AVS標準的編碼器進行加速,實現(xiàn)了一個基于GPU的AVS并行編碼器。與基于CPU上的AVS并行編碼器相比,它在保證了視頻圖像質(zhì)量同時,也在很大程度上提高了編碼的速率。

[1] 王濤.AVS視頻解碼器C語言建模研究[D].天津:天津大學,2008.

[2] 陳志波.H.264運動估值4網(wǎng)絡視頻傳輸關鍵問題研究[D].北京:清華大學,2003.

[3] 甘新標,沈立,王志英.基于CUDA的并行全搜索運動估計算法[J].計算機輔助設圖形學學報,2010,22(3):457-460.

[4] 張舒,褚艷利.GPU高性能運算之CUDAIM〕[M].北京:中國水利水電出版社,2009:2-141.

[5] AVS工作組.視頻編碼標準 AVS 技術介紹[J].電子產(chǎn)品世界,2005,(10):58-62.

[6] 蔣興昌,周軍,羅傳飛.H.264 并行編碼算法的研究[J].電視技術,2008,32(2):33-35.

Discussion about assembly language and C language programming techniques mixed

Assembly language is actually a form of language for the machine, with fast speed and less storage space, under certain conditions, the direct control of the hardware, in a variety of fields have been widely used and has to close important role. However, in the actual writing and debugging session, the difficulty and complexity are great, especially the hybrid operation links. C language with a high degree of flexibility and skills in software development aspects, the use of assembly language and C language programming mixed technology, not only can effectively solve the problems single-use assembly language processing the data, but also a substantial increase in the actual operating efficiency. Paper describes two specific methods of mixed programming languages, as well as the connection between the two in question should be noted, to lay the foundation for the promotion and application of hybrid programming techniques.

Assembly language; C language; hybrid programming

TP313

A

1008-1151(2015)02-0016-03

2015-01-11

蔣仁祥(1967-),福建平潭人,福建師范大學數(shù)學和計算機學院講師,研究方向為高校計算機教學。

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構(gòu)建
創(chuàng)衛(wèi)暗訪程序有待改進
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 国产精品大白天新婚身材| 九一九色国产| 国产精品三区四区| 国产成人成人一区二区| 亚洲中文字幕97久久精品少妇| 亚洲男人天堂2018| 再看日本中文字幕在线观看| 99er精品视频| 欧洲高清无码在线| 婷婷六月综合| 欧美日本视频在线观看| 免费在线a视频| 国产成人精品第一区二区| 久久永久免费人妻精品| 激情综合网址| 国产剧情国内精品原创| 2024av在线无码中文最新| 91蜜芽尤物福利在线观看| 亚洲欧美日韩动漫| 91亚瑟视频| 高清国产在线| 国产精品福利一区二区久久| 成人精品免费视频| 999在线免费视频| 人妻夜夜爽天天爽| 欧美日韩动态图| 欧美乱妇高清无乱码免费| 午夜成人在线视频| 美女一级毛片无遮挡内谢| 老司机精品99在线播放| 免费jjzz在在线播放国产| 26uuu国产精品视频| 日韩无码真实干出血视频| 22sihu国产精品视频影视资讯| 亚洲视频一区在线| 超清人妻系列无码专区| 精品撒尿视频一区二区三区| 国产免费久久精品99re不卡 | 黄色网页在线播放| 国产在线自在拍91精品黑人| 无码乱人伦一区二区亚洲一| 亚洲欧美日本国产综合在线| 亚洲综合极品香蕉久久网| 国产成人精品第一区二区| 强奷白丝美女在线观看| 国产香蕉在线| 亚洲91精品视频| 久久精品亚洲中文字幕乱码| 久久久久国产一级毛片高清板| 欧美亚洲一二三区| 国产18页| 中文字幕丝袜一区二区| 亚洲第一在线播放| 国产激情在线视频| 全部免费毛片免费播放 | 色天天综合久久久久综合片| 精品伊人久久久久7777人| 久久伊人色| 久久99精品久久久大学生| 色首页AV在线| 国产一区二区人大臿蕉香蕉| 久草美女视频| 好紧好深好大乳无码中文字幕| 综合色区亚洲熟妇在线| 99这里只有精品6| 五月婷婷导航| 国产呦视频免费视频在线观看| 88国产经典欧美一区二区三区| 国产亚洲欧美另类一区二区| 成人免费视频一区| 国内自拍久第一页| 就去色综合| 中文字幕亚洲电影| 免费A级毛片无码免费视频| 无码福利日韩神码福利片| 亚洲成肉网| 久久黄色影院| 美女扒开下面流白浆在线试听 | 国产精品福利社| 亚洲九九视频| 99ri精品视频在线观看播放| 久久久久88色偷偷|