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

二進制翻譯中系統庫函數的分類處理方法

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

摘要:如何處理庫函數調用問題直接關系到二進制翻譯系統的性能。提出了一種系統庫函數的分類處理方法,成功地解決了二進制翻譯系統中的庫函數調用處理問題。

關鍵詞:二進制翻譯; 系統庫函數; 普通庫函數; 特殊庫函數

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

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

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

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

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

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

1相關工作

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

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

2系統庫函數的分類處理

2.1分類處理方法

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

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

2.1.1普通庫函數的處理

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

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

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

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

c)目標替代。調用本地系統庫函數。

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

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

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

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

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

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

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

2.1.2特殊庫函數的處理

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

2.2算法性能分析

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

源系統(x86)的系統庫函數調用基本上是如下形式:

3實驗數據

3.1實驗平臺

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

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

3.2實驗數據

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

4結束語

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

參考文獻:

[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.

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

主站蜘蛛池模板: 色屁屁一区二区三区视频国产| 日本在线亚洲| 久久精品中文字幕免费| 亚洲成人高清无码| 一级做a爰片久久免费| 日韩精品亚洲精品第一页| 91精品久久久无码中文字幕vr| 午夜少妇精品视频小电影| 国产成人无码综合亚洲日韩不卡| 九色在线视频导航91| 成人亚洲国产| 免费国产高清精品一区在线| 99免费视频观看| 欧美精品另类| 成人91在线| 99国产精品国产高清一区二区| 久久a毛片| 中文字幕免费播放| 无码日韩视频| 久久伊人色| 久久精品国产免费观看频道| 伊人久久大线影院首页| 国产激情无码一区二区三区免费| 黄色污网站在线观看| 亚洲AⅤ永久无码精品毛片| 亚洲天堂网在线播放| 日本一区二区不卡视频| 日本少妇又色又爽又高潮| 色呦呦手机在线精品| 国产成人一区免费观看| 久久久久人妻一区精品色奶水 | 日韩精品欧美国产在线| 国产呦精品一区二区三区网站| 在线观看国产黄色| 亚洲国产精品人久久电影| 激情无码视频在线看| 亚洲AV无码乱码在线观看裸奔| 麻豆国产精品一二三在线观看| 秋霞一区二区三区| 无码在线激情片| 国内精品伊人久久久久7777人| 五月婷婷综合在线视频| 欧洲一区二区三区无码| 国产微拍一区| 午夜电影在线观看国产1区| 亚洲男人天堂2020| 亚洲第一视频区| 国产精品久久国产精麻豆99网站| 九色综合伊人久久富二代| 性69交片免费看| 91九色最新地址| 免费全部高H视频无码无遮掩| 久久久无码人妻精品无码| 亚洲精品高清视频| 精品少妇人妻av无码久久| 亚洲免费播放| 国产在线视频福利资源站| 亚洲香蕉在线| 国产成人精品2021欧美日韩| 亚洲人成日本在线观看| 国模私拍一区二区| 女人18毛片一级毛片在线 | 久久精品丝袜| 91精品福利自产拍在线观看| 久久这里只精品热免费99| 国产精品嫩草影院av| 国产综合精品一区二区| 国产欧美自拍视频| 久久无码av三级| 国产玖玖视频| 伊人91视频| 中文字幕在线永久在线视频2020| 日韩一区二区三免费高清| 男女精品视频| 一区二区三区成人| 999精品色在线观看| 国产一区在线视频观看| 呦女亚洲一区精品| 亚洲大学生视频在线播放| 99在线视频免费观看| 国产在线日本| 亚洲天堂啪啪|