亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        不同計算機語言混合編程的連接方法探討

        2015-01-02 06:46:56齊晶薇
        赤峰學院學報·自然科學版 2015年20期
        關(guān)鍵詞:匯編語言調(diào)用編程

        齊晶薇

        (哈爾濱遠東理工學院,黑龍江 哈爾濱 150025)

        現(xiàn)階段廣泛采用的計算機軟件開發(fā)語言,如C語言,由于其具備較高的編程效率,在各個行業(yè)軟件研究開發(fā)中得到了廣泛應用.作為一種低級語言,匯編語言與高級語言相比,又具有無可比擬的運行速度優(yōu)勢.在這兩種計算機語言進行混編時,如何使兩者實現(xiàn)有效連接,就成為計算機編程人員需要著力探究的問題.

        1 不同計算機語言混合編程的可行性

        在現(xiàn)階段計算機軟件研究開發(fā)中,在同一個應用系統(tǒng)中采取兩種或多種不同類型的計算機編碼語言,已經(jīng)成為可能,并獲得了實踐的認可.作為計算機語言而言,即便一種語言具備再強的功能,但總有該項語言的弱點和不足,呈現(xiàn)出局限性和先進性并存的特征.

        例如,數(shù)據(jù)庫語言,與C語言、Fortran等計算機高級語言形式相比,其在數(shù)據(jù)管理方面性能突出,但在計算能力及運行速度等層面又遠遠不及后兩者.計算機匯編語言,作為一種低級語言,又具備了較快的運行速度,在存儲空間占用上,小于C語言等高級語言,更為重要的一點是,匯編語言具備對計算機硬件進行訪問控制的能力[1].因此,不同的計算機語言各有其優(yōu)劣,將不同計算機語言進行混合編程,則可以吸取各種語言的優(yōu)勢及特長,為計算機編程用戶提供更具針對性的編程需求.例如,在計算機編程中,將大部分程序采用高級語言的形式進行編寫,在計算機程序的一些重點部分,需要多次運行的部位,其對運行速度和效率具有較高的要求時,或者需要對計算機硬件進行直接訪問時,此時就可采用匯編語言進行編程.如此一來,可以發(fā)揮出各自語言的優(yōu)點,既達到了多種計算機語言綜合運用的目的,又能使計算機編程效率提升,縮短研發(fā)周期.

        2 不同計算機語言混合編程連接方法要注意并解決的基本問題

        不同計算機語言混合編程在進行連接時,應考慮并解決的基本問題有以下幾方面:

        2.1 存儲器分配

        計算機高級語言在經(jīng)過編譯之后,往往會產(chǎn)生格式為OBJ的文件,與之相應地,計算機匯編語言在經(jīng)過編譯之后,同樣會產(chǎn)生OBJ格式的文件,借助連接程序,通過將兩者加以連接,從而構(gòu)成了具備執(zhí)行條件的EXE文件,在EXE文件形成后,連接程序就已將其裝入計算機內(nèi)存系統(tǒng)中,等待執(zhí)行.從這一流程可以看到,在存儲器分配環(huán)節(jié),主要是由連接程序加以掌控的,因此,用戶可以忽略這一環(huán)節(jié).

        但涉及到Basic語言時,因為其承擔解釋程序的任務,因此,情況就要稍顯復雜,此時應從計算機存儲器中找到匯編語言的存放位置,再將相關(guān)信息加以傳送,使Basic語言能夠有效接收.

        2.2 參數(shù)傳遞

        匯編語言和計算機高級語言之間呈現(xiàn)出一種彼此依存的關(guān)系,一般而言,可將匯編語言視為計算機高級語言所具備的外部過程,在對匯編語言進行調(diào)用時,由計算機高級語言采取函數(shù)方式或過程方式進行[2].而匯編語言和計算機高級語言這兩種程序在進行參數(shù)傳遞時,常采用堆棧的方式進行,具體而言,就是調(diào)用程序首先將參數(shù)在堆棧中進行依次壓入,當調(diào)用程序被啟用,此時堆棧中被壓入的參數(shù)再依次彈出,轉(zhuǎn)變?yōu)椴僮鲾?shù),以備使用.

        因此,要使參數(shù)有效傳遞,需要對計算機不同語言所具有的生成方式、堆棧結(jié)構(gòu)及其參數(shù)入棧方式加以明確.Pascal、Fortran、Basic等高級語言在參數(shù)入棧的順序上和參數(shù)表中參數(shù)的順序相一致,也就是采用自左至右的方式,C語言在參數(shù)入棧順序上則采取自右至左的相反順序.

        3 以Pascal語言、C語言與匯編語言混合編程為例,探究其連接方法

        3.1 Pascal語言與匯編語言連接方法和程序

        Pascal語言作為一種計算機高級語言,可將匯編語言看做是其外部過程,匯編語言在寫法上與外部調(diào)用過程相同,在進行匯編語言程序編寫時,首先要有公共程序名稱,即public procedure name.在對程序段進行定義編寫時,要采用public組合型加以說明解釋,程序運行結(jié)束后,在返回上采用ret指令,又因為參數(shù)傳遞時采用的是堆棧方式,因此,在程序返回處理時,通常要使返回指令帶有常數(shù),這樣即可越過參數(shù)區(qū).

        除了調(diào)用匯編語言過程之外,Pascal語言還要對過程的定義加以解決.在對調(diào)用過程進行定義時,可以使用語句$include:’name’,在這一語句中,文件名為 name,以 name作為Pascal語言調(diào)用函數(shù)或過程名,此時對程序進行編譯時,include語句如碰到編譯程序,編譯程序就能夠?qū)ascal語言文件加以編譯處理.

        在對匯編語言進行調(diào)用時,Pascal程序可以根據(jù)參數(shù)順序依次將變量壓入堆棧,在堆棧中變量以字作為單位,并將段地址及偏移地址加以保存,Pascal程序中的參數(shù)獲取借助BP寄存器得以實現(xiàn).

        3.2 C語言與匯編語言連接方法和程序

        3.2.1 C語言程序中匯編碼集成方法

        與Pascal語言與匯編語言間的關(guān)系相同,C語言與匯編語言連接時,匯編程序也是以外部過程的形式存在,然后借助函數(shù)及過程,C語言達到對匯編語言程序進行調(diào)用的目的.一般而言,在混合編程過程中,C語言與匯編語言的混編方法有以下兩種:

        3.2.1.1 將匯編程序從C語言中直接加以調(diào)用

        如混編過程中需要多次使用匯編代碼時,較常采用此方法.該方法的實現(xiàn)過程主要分為以下幾步:將匯編子程序進行編寫,使其具備特定功能;采用C函數(shù)的形式,將匯編子程序從C程序中加以調(diào)用.在這一過程中,尤其應注意以下幾個要點:①采用C函數(shù)形式對匯編子程序進行調(diào)用時,需要對函數(shù)加以顯式說明,主要通過將“Extern”作為C程序中的關(guān)鍵字這一方式實現(xiàn);②存儲模式如不同,則匯編語言在格式上也要加以區(qū)別,例如,小模式下的C程序,需要采用近過程進行匯編,相應地,大模式下的C程序,就應采用遠過程進行匯編;③在參數(shù)獲取中,由于遠過程匯編方式下,其返回地址需要占用四個字節(jié),而在借助BP寄存器進行參數(shù)壓入時,這一過程又需要占用二個字節(jié),因此,遠過程匯編方式下,要從BP+6對應的單元來獲取首個參數(shù).在近過程匯編方式下,從BP+4對應的單元獲取首個參數(shù);④BP寄存器在匯編程序中的保護問題.在子過程變量的存放上,Turbo C對DI及SI存放方式不加阻攔,而當兩個或兩個以上的變量存入BP寄存器中時,BP寄存器會將多出的變量部分轉(zhuǎn)移到堆棧中加以存儲.這一匯編過程可以用以下程序加以說明:

        ⑤返回值問題.C數(shù)據(jù)在返回位置上,每個數(shù)據(jù)類型都占有一個標準,通常具有極小模式、小模式、中模式(AX)及緊湊模式、大模式、巨模式(DX:AX),以AX為返回值位置的數(shù)據(jù)類型有char;enum;unsigned char;short int,這些數(shù)據(jù)類型的返回數(shù)據(jù)要在RET指令前加以放置.采用遠過程定義匯編子程序,在過程名上要借助PUBLIC偽指令,將其作公共類型定義.下面用實例加以說明:

        為更為全面地對此連接方法加以說明,可再列舉一個實例.例如,在計算機中將兩個整型數(shù)據(jù)鍵入,并將整型數(shù)據(jù)之間的差加以顯示.數(shù)據(jù)的鍵入及顯示部分采用C語言編寫,而數(shù)據(jù)之差采用匯編語言編寫.此實例的程序編寫如下所示:

        3.2.1.2 內(nèi)聯(lián)匯編

        內(nèi)聯(lián)匯編的方法指的是在C語言程序中直接插入?yún)R編語言的代碼,因此,也被稱為嵌入式匯編方法,C語言編譯器基本都支持此方法.內(nèi)聯(lián)匯編的連接方式主要是借助“asm”這一C語言中的關(guān)鍵字加以實現(xiàn),將匯編語言的代碼直接放置在asm之后,此時再通過C語言編譯程序?qū)崿F(xiàn)匯編指令的傳送及匯編步驟.內(nèi)聯(lián)匯編具有簡單直接等特點,無須考慮參數(shù)傳遞及外鏈命名等方面,但涉及到對不同的目標平臺加以編譯時,內(nèi)聯(lián)匯編的方法就不具備可移植性.下面列舉相關(guān)實例:

        結(jié)合這一實例,在內(nèi)聯(lián)匯編中,要注意以下幾個要點:①匯編語言的代碼應將C語言變量進行初始化后再加以使用,在匯編類型上要用ptr加以指示;②C語言以分號結(jié)束語句,匯編語言結(jié)束語句采用換行時,此時嵌入C語言程序中的匯編指令可以不用分號(;)結(jié)束;③采用C語言中的return指令進行返回,而不是按照asm中的ret指令;④C程序中不能嵌入偽指令,如DW,DB等;⑤宏指令及宏操作符也不能嵌入C程序,如ENDM,IRP,MACRO,%,,&等.

        3.2.2 C語言程序和匯編子程序間的連接

        集成環(huán)境下,如對由C語言及匯編語言混編而成的程序加以編譯及連接,首先要采用MASM.EXE這一宏匯編方式對匯編語言加以編譯,得到OBJ格式文件.在生成OBJ文件后,將其嵌入C語言程序中,經(jīng)連接后,即可得到EXE文件.在C語言程序中嵌入OBJ文件的步驟為:于Turbo C中編輯格式為*.Prj的工程文件,以文件名列表,作為文件內(nèi)容,如mymasm.obj等;選擇project name這一位于project中的選項,然后采用(*)格式鍵入工程文件的名稱,即可實現(xiàn)C語言程序與匯編子程序間的連接[5].

        結(jié)語

        不同計算機語言混合編程能夠?qū)崿F(xiàn)語言間的調(diào)用,借助參數(shù)傳遞,一方面充分利用了匯編語言的優(yōu)勢,另一方面又為諸如C程序等計算機高級語言性能的發(fā)揮提供了空間,在社會各行業(yè)的計算機軟件研發(fā)中,多語言混合編程已顯示出其重要價值.本文主要對Pascal語言、C語言與匯編語言的連接方法進行了闡述,希望為計算機語言接口技術(shù)的深入研究提供借鑒參考.

        〔1〕周謐.C/C++與FORTRAN混合編程技術(shù)及其應用研究[J].科技創(chuàng)新與應用,2015(13):76.

        〔2〕張喆,鄭賓.基于N I TestStand的多語言混合編程技術(shù)研究[J].電子測試,2012(11):78-83.

        〔3〕孟祥娜.匯編語言與C語言混合編程方法探討[J].電腦編程技巧與維護,2014(22):26-27.

        〔4〕王茹.ARM匯編語言與C/C++語言混合編程實現(xiàn)方法[J].電大理工,2012(2):27-29.

        〔5〕金微.匯編語言與C語言混合編程的接口技術(shù)[J].無線互聯(lián)科技,2013(9):109+111.

        猜你喜歡
        匯編語言調(diào)用編程
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        高等學校計算機專業(yè)課程教學改革實踐——以匯編語言與接口技術(shù)課程為例
        計算機教育(2020年5期)2020-07-24 08:52:50
        核電項目物項調(diào)用管理的應用研究
        匯編語言與C語言的混合程序設(shè)計技術(shù)研究
        電子制作(2019年10期)2019-06-17 11:45:16
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        提高《匯編語言程序設(shè)計》教學效率的思考與實踐
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        亚洲一区二区观看网站| 一本之道久久一区二区三区| 成人欧美一区二区三区黑人| 99999久久久久久亚洲| 精品久久久久久无码人妻蜜桃| 夜夜嗨av一区二区三区| 亚洲男人堂色偷偷一区| 人妻精品一区二区免费| 国产天堂av在线播放资源| 国产精品久久久三级18| a级毛片无码久久精品免费| 激情综合欧美| av毛片一区二区少妇颜射| 色婷婷久久精品一区二区| 亚洲 日韩 激情 无码 中出| 日躁夜躁狠狠躁2001| 亚洲动漫成人一区二区| 亚洲av综合色区在线观看| 99久久精品人妻少妇一| 色综合久久精品亚洲国产| 中文人妻av久久人妻18| av一区二区三区亚洲| 亚洲成人av大片在线观看| 少妇性bbb搡bbb爽爽爽| 国产精品99久久精品爆乳| 激情人妻中出中文字幕一区| 黄污在线观看一区二区三区三州| 国产性生大片免费观看性| 久久青青草原亚洲AV无码麻豆| 久久偷拍国内亚洲青青草| 91精品久久久老熟女91精品| 国产精品∧v在线观看| 日本午夜精品理论片A级APP发布| 国产真实伦视频在线视频| 极品少妇人妻一区二区三区| 人与人性恔配视频免费| 国产高清乱理伦片| 中文字幕高清无码不卡在线| 亚洲精品一区二区高清| 免费少妇a级毛片人成网| 亚洲日产无码中文字幕|