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

二進制翻譯中系統(tǒng)庫函數(shù)的分類處理方法

2008-01-01 00:00:00謝海斌張兆慶武成崗馮曉兵
計算機應用研究 2008年4期

摘要:如何處理庫函數(shù)調(diào)用問題直接關(guān)系到二進制翻譯系統(tǒng)的性能。提出了一種系統(tǒng)庫函數(shù)的分類處理方法,成功地解決了二進制翻譯系統(tǒng)中的庫函數(shù)調(diào)用處理問題。

關(guān)鍵詞:二進制翻譯; 系統(tǒng)庫函數(shù); 普通庫函數(shù); 特殊庫函數(shù)

中圖分類號:TP311文獻標志碼:A

文章編號:1001-3695(2008)04-1057-03

二進制翻譯是代碼移植的重要方法之一,可以將一種指令集體系結(jié)構(gòu)(instruction set architecture,ISA)上的代碼翻譯到另一種ISA上運行。二進制翻譯的目的不僅僅是模擬源ISA,更高的目標是翻譯產(chǎn)生的代碼在目標ISA上運行的速度等同甚至超過源ISA的原有代碼。目前,二進制翻譯成為解決軟件移植問題的一個研究熱點。眾所周知,新開發(fā)的處理器如果其ISA不向前兼容,則會失去現(xiàn)有軟件的支持,影響其推廣和應用。這就迫使設計者使用寶貴的芯片空間來兼容老處理器,這樣既增加新處理器的復雜度和功耗,影響其主頻的提高,又阻礙了處理器的發(fā)展。二進制翻譯技術(shù)為新舊處理器架起了一座橋梁,將現(xiàn)有的軟件移植到新開發(fā)處理器上執(zhí)行,使得新處理器擺脫向前兼容的約束。

二進制翻譯可分為系統(tǒng)級翻譯和應用程序級翻譯。對于系統(tǒng)級翻譯,操作系統(tǒng)運行在它之上,它翻譯整個系統(tǒng),包括操作系統(tǒng),它需要考慮源機器和目標機器的各種特性,如硬件中斷、異常、端口映射等,比較復雜,并且需要硬件提供支持,否則效率將會嚴重下降;而對于應用程序級翻譯,它運行在目標機器操作系統(tǒng)之上,只需要翻譯用戶級應用程序,它的性能和實用性都優(yōu)于系統(tǒng)級翻譯,所以很多二進制翻譯系統(tǒng)均采用應用程序級翻譯,并且源和目標平臺的操作系統(tǒng)都是同一類操作系統(tǒng)(如類UNIX操作系統(tǒng))。因此,對于這類二進制翻譯系統(tǒng),如何處理庫函數(shù)調(diào)用問題直接關(guān)系到二進制翻譯系統(tǒng)的性能,庫函數(shù)調(diào)用處理得好,就能提高源二進制程序在目標機器上運行的速度;反之,則影響源二進制程序在目標機器上運行的速度。

目前,國內(nèi)外許多研究機構(gòu)都開展了二進制翻譯和動態(tài)優(yōu)化的研究,如DEC公司開發(fā)的FX!32[1]、澳大利亞Queensland大學開發(fā)的UQBT[2]和UQDBT[3]、Sun Microsystems實驗室開發(fā)的Walkabout[4]、維也納技術(shù)大學開發(fā)的Bintrans[5]等。其中,對系統(tǒng)庫函數(shù)處理比較典型的是DEC公司開發(fā)的FX!32和Queensland大學開發(fā)的UQBT。FX!32采用模擬源系統(tǒng)傳參和返回值約定的方法對系統(tǒng)庫函數(shù)調(diào)用進行處理,存在一定的效率問題;UQBT對所有函數(shù)調(diào)用進行提升,但是對于那些無法提升的函數(shù),它沒有進行任何處理,因此其適用面很窄。

本文提出了一種系統(tǒng)庫函數(shù)分類處理方法:對于普通庫函數(shù),針對FX!32對系統(tǒng)庫函數(shù)調(diào)用處理存在的效率下降的問題和UQBT對系統(tǒng)庫函數(shù)調(diào)用處理存在的適用面窄的問題,識別和提升源系統(tǒng)二進制程序的普通庫函數(shù)調(diào)用,避免在處理庫函數(shù)調(diào)用時模擬源系統(tǒng)的調(diào)用約定,而是用目標機本地函數(shù)調(diào)用約定來處理庫函數(shù)調(diào)用,從而達到提高程序執(zhí)行效率的目的。對于源系統(tǒng)二進制程序的特殊庫函數(shù),本文用模擬源系統(tǒng)傳參和返回值約定的方法對其進行處理,以保證處理的正確性。

1相關(guān)工作

FX!32是DEC公司開發(fā)的輪廓制導(profile-directed)的二進制翻譯器,目的是為了能將運行在(x86,WinNT)系統(tǒng)下的應用程序運行在(Alpha,WinNT)系統(tǒng)下。它結(jié)合靜態(tài)翻譯和動態(tài)模擬,具有正確性、高效而且透明的特點。并通過對本地系統(tǒng)庫函數(shù)包裝(jacket),使得x86的應用程序可以調(diào)用Alpha本地的系統(tǒng)庫函數(shù)。具體過程是每一個jacket都包含一條非法的x86指令,通知解釋器切換到正確的Alpha本地代碼。大多數(shù)jacket的基本操作是根據(jù)Alpha的調(diào)用約定,將x86棧中的參數(shù)移到對應的Alpha寄存器。一些jacket還要對被調(diào)程序語義進行修改,如系統(tǒng)庫函數(shù)GetSystemDirector的jacket返回的是x86的系統(tǒng)路徑,而不是實際的系統(tǒng)路徑,這樣x86的應用程序才不會覆蓋本地的Alpha動態(tài)鏈接庫。這種方法可以準確地處理x86程序?qū)ο到y(tǒng)庫函數(shù)調(diào)用的問題,但其最大的缺陷就是效率下降問題。由于需要模擬x86的堆棧,在進行系統(tǒng)庫函數(shù)調(diào)用之前,需要將參數(shù)壓入到模擬堆棧中;之后又要將參數(shù)取出放入到目標機的傳參寄存器和堆棧中,顯然將參數(shù)壓入到模擬堆棧中完全是多余的,影響程序的執(zhí)行效率。

UQBT是Queensland大學開發(fā)的可變源和可變目標的二進制翻譯框架。它使用到達定值分析和活躍性分析來恢復過程調(diào)用的參數(shù)和返回值的信息,使用過程抽象語言識別源程序的高層寄存器傳輸表示(HRTL)中的參數(shù)和返回值地址,使用活躍性分析找出實際的參數(shù)和返回值,然后生成相應C語言語句,最后由C編譯器生成目標機器代碼。它的優(yōu)點在于提升了源程序中的每一個函數(shù)調(diào)用,性能比較高,但是源系統(tǒng)中有許多函數(shù)是無法提升的,如系統(tǒng)庫函數(shù)_setjmp和longjmp,它們用來實現(xiàn)函數(shù)間的非局部跳轉(zhuǎn),不能用目標機器的_setjmp和longjmp來替代,只能模擬它在源系統(tǒng)中的語義,因而無法對其進行提升。UQBT對這些函數(shù)沒有進行任何處理,因此UQBT對于那些包含無法提升函數(shù)的二進制程序無能為力,其適用面很窄。

2系統(tǒng)庫函數(shù)的分類處理

2.1分類處理方法

根據(jù)系統(tǒng)庫函數(shù)和機器的相關(guān)性,可以將系統(tǒng)庫函數(shù)分為普通庫函數(shù)和特殊庫函數(shù)兩大類。所謂普通庫函數(shù),就是那些沒有涉及機器具體特性,與目標機器本地庫函數(shù)語義相同,可以用目標機器本地庫函數(shù)調(diào)用來替代的系統(tǒng)庫函數(shù),如fopen函數(shù)、malloc函數(shù)、sin函數(shù)等;特殊庫函數(shù)就是那些要么涉及程序代碼空間指針的操作,要么涉及機器相關(guān)的一些信息,無法用目標機器本地庫函數(shù)調(diào)用來替代的系統(tǒng)庫函數(shù),如_setjmp和longjmp函數(shù)等。

本算法識別和提升源系統(tǒng)二進制程序的普通庫函數(shù)調(diào)用,避免在處理庫函數(shù)調(diào)用時模擬源系統(tǒng)的調(diào)用約定,而是用目標機本地函數(shù)調(diào)用約定來處理庫函數(shù)調(diào)用,從而達到提高程序執(zhí)行效率的目的。對于源系統(tǒng)二進制程序的特殊庫函數(shù),用模擬源系統(tǒng)傳參和返回值約定的方法對其進行處理,以保證其處理的正確性。

2.1.1普通庫函數(shù)的處理

普通庫函數(shù)沒有涉及機器具體特性,在源機器上對普通庫函數(shù)的調(diào)用與在目標機器上對本地相應庫函數(shù)的調(diào)用所產(chǎn)生的語義相同;對程序輸入輸出的影響相同;對外設的影響也相同。因此可以用目標機器上對本地庫函數(shù)調(diào)用來替代源機器中對普通庫函數(shù)的調(diào)用。但是由于源機器和目標機器的硬件特性不同,應用程序二進制接口不同,不能直接用目標機器上對本地庫函數(shù)調(diào)用來替代源機器中對普通庫函數(shù)的調(diào)用。所以本文將源二進制程序中對普通庫函數(shù)的調(diào)用進行提升,按照目標機本地函數(shù)調(diào)用約定來處理庫函數(shù)調(diào)用,避免在處理庫函數(shù)調(diào)用時模擬源系統(tǒng)的調(diào)用約定。這樣就實現(xiàn)了用目標機器上對本地庫函數(shù)調(diào)用來替代源機器中對普通庫函數(shù)調(diào)用的目的。

對普通庫函數(shù)提升可分成四個步驟:

a)分析。分析源二進制程序中函數(shù)調(diào)用call指令調(diào)用的目標是否是普通庫函數(shù)。

b)參數(shù)處理。根據(jù)相應庫函數(shù)的形參說明,在二進制代碼中往前尋找傳參數(shù)的語句,如果查找成功,則刪除找到的那些傳參數(shù)指令翻譯后對應的本地碼,形成如下本地代碼:將這些參數(shù)按照目標機傳參約定放入到相應的寄存器和堆棧中。如果查找不成功,則提升失敗,用模擬源系統(tǒng)傳參和返回值約定的方法對其進行處理。具體見特殊庫函數(shù)的處理。

c)目標替代。調(diào)用本地系統(tǒng)庫函數(shù)。

d)返回值處理。按照目標機傳返回值約定取出返回值,然后按照源系統(tǒng)約定放入到目標機模擬源系統(tǒng)的模擬寄存器或內(nèi)存中。

當翻譯到第七條指令時,遇到call指令,這時進行上述算法的四個步驟:

a)分析。由于calloc函數(shù)沒有涉及機器具體特性,因此是普通庫函數(shù),進行以下步驟。

b)參數(shù)處理。根據(jù)calloc函數(shù)的形參說明,可以知道calloc函數(shù)需要兩個整數(shù)參數(shù),因此往前尋找壓棧指令,得到第五、六條指令是傳參指令。刪除第五、六條指令形成的本地碼,形成如下MIPS本地碼:

li a0,0x64;a0是MIPS機器用來傳遞第一個參數(shù)的寄存器

li a1,0x1;a1是MIPS機器用來傳遞第二個參數(shù)的寄存器

c)目標替代。用MIPS本地的calloc函數(shù)調(diào)用來替代源二進制代碼對calloc的調(diào)用,形成如下MIPS本地碼:

2.1.2特殊庫函數(shù)的處理

特殊庫函數(shù)要么涉及程序代碼空間指針的操作,要么涉及機器相關(guān)的一些信息,因此這些系統(tǒng)庫函數(shù)無法進行提升,故筆者采用模擬源系統(tǒng)傳參和返回值約定的處理方法對其進行處理。具體就是對每個特殊庫函數(shù)進行包裝,在包裝過程中根據(jù)它們的語義進行特殊處理,模擬源系統(tǒng)傳參和返回值約定,實現(xiàn)相應函數(shù)的特殊語義。當源二進制文件中出現(xiàn)對特殊庫函數(shù)的調(diào)用時,用包裝好的庫函數(shù)調(diào)用進行替代,進而實現(xiàn)程序的語義。

2.2算法性能分析

由于本算法識別和提升源系統(tǒng)二進制程序的普通庫函數(shù)調(diào)用,避免在處理庫函數(shù)調(diào)用時模擬源系統(tǒng)的調(diào)用約定,而是用目標機本地函數(shù)調(diào)用約定來處理庫函數(shù)調(diào)用,從而達到提高程序執(zhí)行效率的目的;對于源系統(tǒng)二進制程序的特殊庫函數(shù),用模擬源系統(tǒng)傳參和返回值約定的方法對其進行處理,以保證其處理的正確性。相對于全部采用模擬源系統(tǒng)的調(diào)用約定的處理方法而言,節(jié)省了模擬源系統(tǒng)調(diào)用約定而帶來的不必要的開銷。下面以源系統(tǒng)為(x86,Linux),目標系統(tǒng)為(MIPS,Linux)的二進制翻譯器為例來分析本算法的性能。

源系統(tǒng)(x86)的系統(tǒng)庫函數(shù)調(diào)用基本上是如下形式:

3實驗數(shù)據(jù)

3.1實驗平臺

本文的實驗平臺DigitalBridge是從x86/Linux平臺到MIPS/Linux平臺的動態(tài)翻譯及優(yōu)化系統(tǒng)。其基本框圖如圖1所示。可以看到,DigitalBridge系統(tǒng)主要由BT控制器、文件加載模塊、解釋器、庫函數(shù)調(diào)用處理、動態(tài)信息管理、翻譯優(yōu)化器、代碼cache管理器、本地碼執(zhí)行器、MIPS代碼庫信息管理和后臺翻譯優(yōu)化器組成。

DigitalBridge所用的源平臺是x86/Linux,Pentium Ⅲ 613 MHz,256 MB內(nèi)存,Red Hat Linux 9.0;目標平臺是MIPS/Linux,2路600 MHz,1 GB內(nèi)存,Debian Linux 3.0。

3.2實驗數(shù)據(jù)

本文對CPU2000的整數(shù)測試集中的九個例子進行分析,得到它們靜態(tài)代碼中系統(tǒng)庫函數(shù)調(diào)用的次數(shù)以及它們動態(tài)運行時對系統(tǒng)庫函數(shù)調(diào)用的次數(shù)如表1所示。用本算法對普通庫函數(shù)進行提升,每次調(diào)用平均能節(jié)省七條指令,故可以得到它們用本算法處理后能節(jié)省的指令數(shù)量。

4結(jié)束語

本文提出了一種系統(tǒng)庫函數(shù)分類處理方法。它對普通庫函數(shù)都可以進行提升,但對那些不能用本算法進行提升的特殊庫函數(shù),筆者用模擬源系統(tǒng)傳參和返回值約定的方法進行處理。今后可以考慮對這些系統(tǒng)庫函數(shù)進一步分析,提出一種更好的解決算法,以使本算法的適用性更廣。

參考文獻:

[1]ANTON C, MARK H, RAY H, et al. FX!32: a profile-directed binary translator[J]. IEEE Micro, 1998,18(2):56-64.

[2]CIFUENTES C, EMMERIK van M, UNG D, et al. Preliminary experiences with the use of the UQBT binary translation framework[C]//Proc of Workshop on Binary Translation.Washington DC:IEEE Computer Society, 1999:12-22.

[3]UNG D, CIFUENTES C. Machine-adaptable dynamic binary translation[C]//Proc of ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization. Boston: ACM Press, 2000: 30-40.

[4]IFUENTES C, LEWIS B, UNG D. Walkabout: a retargetable dyna-mic binary translation framework, CA94303[R]. Palo Alto: Sun Microsystems Laboratories.

[5]PROBST M.Fast machine-adaptable dynamic binary translation[C]//Proc ofWorkshop on Binary Translation. 2001.

“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文”

主站蜘蛛池模板: 国产精品久久自在自线观看| 亚洲欧美另类日本| 99色亚洲国产精品11p| 亚洲日韩精品欧美中文字幕| 就去吻亚洲精品国产欧美| 尤物视频一区| 久久久久亚洲精品成人网| 亚洲人成网站在线播放2019| 日韩免费成人| 真实国产乱子伦高清| 国产在线观看91精品亚瑟| 一本久道热中字伊人| 国产高潮流白浆视频| 国产福利大秀91| 国产精品亚洲五月天高清| 日韩精品亚洲精品第一页| 亚洲αv毛片| 无码福利日韩神码福利片| 野花国产精品入口| 国产精品分类视频分类一区| 国产成人久视频免费| 91在线精品免费免费播放| 国产第一色| 中国毛片网| 欧美在线导航| 91福利片| 久久综合伊人77777| 农村乱人伦一区二区| 麻豆AV网站免费进入| 找国产毛片看| 在线欧美一区| 亚洲精品在线影院| 亚洲第七页| 免费Aⅴ片在线观看蜜芽Tⅴ| 在线人成精品免费视频| 欧美A级V片在线观看| 久久精品国产精品青草app| 无码国内精品人妻少妇蜜桃视频| 无码国产偷倩在线播放老年人| www欧美在线观看| 欧美成人精品在线| 97影院午夜在线观看视频| 精品小视频在线观看| 亚洲av综合网| 日韩一级毛一欧美一国产| 久久这里只精品热免费99| 亚洲精品777| 亚洲欧美国产视频| 一级黄色网站在线免费看| jijzzizz老师出水喷水喷出| 国产精品久线在线观看| 日本三区视频| 在线一级毛片| 国产美女主播一级成人毛片| 99免费在线观看视频| 激情国产精品一区| 国产在线观看高清不卡| 亚洲伊人天堂| 色综合综合网| 亚洲AⅤ波多系列中文字幕| 国产综合网站| 91娇喘视频| 波多野结衣一区二区三区四区| 欧美h在线观看| 麻豆AV网站免费进入| 麻豆国产精品一二三在线观看| 亚洲AV无码一区二区三区牲色| 国产精品一区二区国产主播| 一级香蕉人体视频| 亚洲制服中文字幕一区二区| 一区二区三区毛片无码| 久久久久亚洲av成人网人人软件| 国产精品久久久久久搜索| 伊在人亚洲香蕉精品播放| 天天色天天综合| 国产黄视频网站| 国产极品嫩模在线观看91| 日本午夜三级| 中文字幕在线免费看| 国产精品偷伦在线观看| 亚洲一级毛片免费看| 国产本道久久一区二区三区|