嵌套仿真和動(dòng)態(tài)鏈接環(huán)境的制作方法
【專利摘要】各種實(shí)施例包括對(duì)于源應(yīng)用和源仿真器的嵌套仿真。復(fù)制源ISA庫(kù)使源仿真器庫(kù)調(diào)用重定向到目標(biāo)庫(kù),由此迫使本機(jī)仿真器通過第一與第二ISA之間的正確仿真通道。其它實(shí)施例關(guān)于通過確定某些函數(shù)調(diào)用相反在不需要PLT代碼轉(zhuǎn)換的情況下直接被調(diào)用而不是通過PLT代碼的仿真來處理來使動(dòng)態(tài)鏈接加速。一些實(shí)施例解決嵌套仿真和加速動(dòng)態(tài)鏈接兩者但其它實(shí)施例包括嵌套仿真和加速動(dòng)態(tài)鏈接中的一個(gè)。本文中還描述了其它實(shí)施例。
【專利說明】嵌套仿真和動(dòng)態(tài)鏈接環(huán)境
【背景技術(shù)】
[0001]計(jì)算設(shè)備可由它的指令集架構(gòu)(ISA)表征。典型地,計(jì)算設(shè)備可包括操作系統(tǒng)
(OS)服務(wù),并且OS服務(wù)可包括為計(jì)算設(shè)備的ISA開發(fā)的運(yùn)行時(shí)庫(kù)(LIB)服務(wù),用于幫助應(yīng)用開發(fā)者開發(fā)在計(jì)算設(shè)備上操作的應(yīng)用。如果對(duì)不是計(jì)算設(shè)備的ISA的ISA編寫應(yīng)用,可能需要仿真應(yīng)用。具體地,仿真允許應(yīng)用(為第一 ISA編寫的)在計(jì)算設(shè)備的架構(gòu)(其使用第二 ISA)上執(zhí)行。應(yīng)用的依賴于ISA的部分可包括對(duì)源LIB服務(wù)的函數(shù)調(diào)用,其需要使用目標(biāo)LIB服務(wù)來仿真。此外,應(yīng)用的依賴于ISA的部分可包括回調(diào)函數(shù)(例如,從依賴于ISA的運(yùn)行時(shí)LIB回調(diào)到仿真應(yīng)用的函數(shù)、回調(diào)到需要仿真的源LIB服務(wù)的函數(shù))。這樣的回調(diào)可直到運(yùn)行時(shí)才被發(fā)現(xiàn),由此使在橋接兩個(gè)ISA方面?zhèn)鹘y(tǒng)方法(例如,二進(jìn)制轉(zhuǎn)換)低效。
[0002]為了執(zhí)行上文的應(yīng)用,應(yīng)用可需要鏈接。鏈接通過分辨互連參考(例如,由應(yīng)用調(diào)用的庫(kù)例程之間的互連)而從編譯模塊(例如,庫(kù))產(chǎn)生可執(zhí)行程序。該鏈接(在本文有時(shí)也叫作“加載”)可經(jīng)由二進(jìn)制轉(zhuǎn)換系統(tǒng)(BT)動(dòng)態(tài)進(jìn)行。動(dòng)態(tài)鏈接使大部分的鏈接過程推遲到程序開始運(yùn)行。動(dòng)態(tài)鏈接器可以是在執(zhí)行可執(zhí)行文件時(shí)加載并且鏈接對(duì)于該可執(zhí)行文件的共享庫(kù)的OS的部分。技術(shù)可使用規(guī)程鏈接表(PLT)、全局偏移表(GOT)和間接跳躍來使應(yīng)用的庫(kù)調(diào)用指向動(dòng)態(tài)鏈接庫(kù)中的目標(biāo)函數(shù)。
【專利附圖】
【附圖說明】
[0003]本發(fā)明的實(shí)施例將通過示范性實(shí)施例而非限制的方式描述、在附圖中圖示,其中類似的標(biāo)號(hào)指代相似的元件,并且其中:
圖1圖示在本發(fā)明的實(shí)施例中包括ISA橋接的計(jì)算設(shè)備;
圖2進(jìn)一步詳細(xì)圖示圖1的ISA橋接層;
圖3和4圖示在本發(fā)明的實(shí)施例中用于橋接源ISA的應(yīng)用與目標(biāo)ISA的庫(kù)服務(wù)之間的調(diào)用和回調(diào)的方法;
圖5圖不在本發(fā)明的一個(gè)實(shí)施例中的BT系統(tǒng)。
[0004]圖6和7分別圖示在本發(fā)明的實(shí)施例中用于使動(dòng)態(tài)鏈接加速的方法和偽代碼。
【具體實(shí)施方式】
[0005]各種操作將進(jìn)而采用對(duì)于理解說明性實(shí)施例最有幫助的方式描述為多個(gè)分立操作;然而,描述的順序不應(yīng)該解釋為暗示這些操作必定依賴于順序。特別地,這些操作不需要按呈現(xiàn)的順序執(zhí)行。此外,作為單獨(dú)操作的操作的描述不應(yīng)解釋為需要操作一定獨(dú)立地和/或由單獨(dú)實(shí)體執(zhí)行。作為單獨(dú)模塊的實(shí)體和/或模塊的描述應(yīng)同樣不解釋為需要模塊是單獨(dú)的和/或執(zhí)行單獨(dú)操作。在各種實(shí)施例中,圖示和/或公開的操作、實(shí)體、數(shù)據(jù)和/或模塊可合并、分解成進(jìn)一步的子部分和/或省略。重復(fù)使用短語“實(shí)施例”。該短語一般不指相同的實(shí)施例;然而,它可指相同的實(shí)施例。術(shù)語“包括”、“具有”和“包含”是同義的,除非上下文另外指示。短語“A/B”意思是“A或B”。短語“A和/或B”意思是“(A)、(B)或(A和B)”。短語“A、B和C中的至少一個(gè)”意思是“(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B 和 C)”。
[0006]各種實(shí)施例包括對(duì)于源應(yīng)用和源仿真器的嵌套仿真。復(fù)制源ISA庫(kù)重定向?qū)δ繕?biāo)庫(kù)的源仿真器庫(kù)調(diào)用,由此迫使本機(jī)仿真器通過第一與第二 ISA之間的正確仿真通道。其它實(shí)施例關(guān)于通過確定某些函數(shù)調(diào)用不是通過PLT代碼的仿真來處理而是在不需要PLT代碼轉(zhuǎn)換的情況下直接被調(diào)用來使動(dòng)態(tài)鏈接加速。一些實(shí)施例解決嵌套仿真和加速動(dòng)態(tài)鏈接兩者但其它實(shí)施例包括嵌套仿真和加速動(dòng)態(tài)鏈接中的一個(gè)。
[0007]圖1圖示實(shí)施例中的示例計(jì)算設(shè)備,其包括ISA橋接(可選地具有回調(diào))。計(jì)算設(shè)備102可包括處理器和存儲(chǔ)器布置104,其包括或耦合于OS 122、ISA橋接層123、應(yīng)用120、圖形處理單元(GPU)106、顯示單元108和聯(lián)網(wǎng)接口 110,它們彼此如示出的那樣耦合(即,直接或間接)。OS 122可包括服務(wù)124的庫(kù)(其細(xì)分成庫(kù)127、128,共同包括符號(hào)“A”至“H”)。計(jì)算設(shè)備102還可包括應(yīng)用120與OS 122之間可選的中間件121。如將在下文更詳細(xì)描述的,ISA橋接層123可配置有各種運(yùn)行時(shí)特征和服務(wù)(其包括但不限于,動(dòng)態(tài)綁定)以使應(yīng)用120能夠全部或部分地在源ISA中實(shí)現(xiàn)(例如,在也使用獨(dú)立于ISA的中間件121時(shí)),而
OS122 (其包括庫(kù)服務(wù)124)可在與源ISA不同的目標(biāo)ISA中實(shí)現(xiàn)。此外,應(yīng)用120可以是這樣的應(yīng)用(特別地,使用源ISA實(shí)現(xiàn)的部分),其包括需要庫(kù)服務(wù)124的各種元素(例如,函數(shù))在各種條件下“回調(diào)”應(yīng)用120的各種回調(diào)函數(shù)125的庫(kù)服務(wù)124的使用特性。ISA橋接層123在本文也可稱為過程虛擬機(jī)(PVM)。
[0008]計(jì)算設(shè)備102可以是服務(wù)器、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、智能電話、個(gè)人數(shù)字助理、游戲控制臺(tái)、因特網(wǎng)家電、移動(dòng)互聯(lián)網(wǎng)設(shè)備、手機(jī)、移動(dòng)聯(lián)網(wǎng)設(shè)備、移動(dòng)計(jì)算節(jié)點(diǎn)或其它計(jì)算設(shè)備。處理器和存儲(chǔ)器布置104代表廣泛的處理器和存儲(chǔ)器布置,其包括具有各種執(zhí)行速度和功耗的單核或多核處理器以及具有各種架構(gòu)(例如,具有一級(jí)或多級(jí)高速緩存)和各種類型(例如,動(dòng)態(tài)隨機(jī)存取、FLASH,等)的存儲(chǔ)器的步驟。在各種實(shí)施例中,GPU 106可配置成向OS 122提供視頻解碼和/或圖形處理功能,而顯示單元108可配置成使多媒體內(nèi)容(例如,HD視頻)能夠在其上渲染。相似地,GPU 106和顯示單元108意在代表本領(lǐng)域內(nèi)已知的廣泛圖形處理器和顯示元件。同樣,網(wǎng)絡(luò)134意在代表本領(lǐng)域內(nèi)已知的廣泛網(wǎng)絡(luò)。網(wǎng)絡(luò)134的示例可包括有線或無線、局域或廣域、專用或公共網(wǎng)絡(luò),其包括因特網(wǎng)。OS 122 (其包括庫(kù)服務(wù)124)代表本領(lǐng)域內(nèi)已知的廣泛OS元件,但除了限定庫(kù)服務(wù)124的調(diào)用的應(yīng)用編程接口(API)之外。OS 122可包括常規(guī)組件,例如配置成管理存儲(chǔ)器資源、調(diào)度任務(wù)執(zhí)行等的內(nèi)核,和配置成管理各種設(shè)備資源的設(shè)備驅(qū)動(dòng)器。在實(shí)施例中,OS 122可包括支持可選中間件121的虛擬機(jī)(例如,支持Android?應(yīng)用框架的Android?虛擬機(jī))。除限定庫(kù)服務(wù)124的調(diào)用外,為了促進(jìn)應(yīng)用120的回調(diào)函數(shù)125的調(diào)用,庫(kù)服務(wù)124的API還包括應(yīng)用120的回調(diào)函數(shù)125的對(duì)應(yīng)存根和簽名。OS 122的示例可包括Windows?操作系統(tǒng)、Linux?、Android?、1S?及類似物。相似地,可選中間件121意在代表廣泛的中間件元件,其包括但不限于,獨(dú)立于ISA的中間件。中間件121的示例可包括但不限于,Android?應(yīng)用框架、Java?或其它應(yīng)用框架或獨(dú)立于ISA的執(zhí)行環(huán)境。同樣,應(yīng)用120(其包括回調(diào)函數(shù)125)代表廣泛的應(yīng)用,其包括對(duì)于個(gè)人助理、生產(chǎn)率、社交聯(lián)網(wǎng)應(yīng)用、日程安排、字處理、電子制表、Twitter?、Facebook?、瀏覽器的應(yīng)用及類似物。
[0009]圖1的剩余元件在論述圖2之后在下文進(jìn)一步論述。
[0010]在圖2中,ISA橋接層123可包括ISA橋接加載器202、源ISA仿真器204和目標(biāo)ISA庫(kù)仿真器206 (其配置成提供各種運(yùn)行時(shí)特征和服務(wù),包括動(dòng)態(tài)綁定服務(wù))。源ISA仿真器204可包括源ISA上下文212,和二進(jìn)制轉(zhuǎn)換引擎215。源ISA仿真器204可在源ISA上下文212中維持源ISA架構(gòu)的執(zhí)行上下文,其包括例如當(dāng)前執(zhí)行指令指針(IP)。二進(jìn)制轉(zhuǎn)換器引擎215可配置成將源ISA指令轉(zhuǎn)換成目標(biāo)ISA指令。LIB仿真器206可包括目標(biāo)ISA LIB上下文222、門224 (例如,由處理器使用來控制對(duì)特權(quán)函數(shù)的訪問的數(shù)據(jù)結(jié)構(gòu)、改變數(shù)據(jù)段、開關(guān)表及類似物)和包裝器函數(shù)226。LIB仿真器206可在目標(biāo)ISA LIB上下文222中維持目標(biāo)ISA庫(kù)124的執(zhí)行上下文。在各種實(shí)施例中,對(duì)于每個(gè)庫(kù)服務(wù)124 (例如,函數(shù))可存在對(duì)應(yīng)的門224和包裝器函數(shù)226對(duì),其中該對(duì)配置成促進(jìn)由應(yīng)用120跨源和目標(biāo)ISA架構(gòu)調(diào)用庫(kù)服務(wù)124。相似地,每回調(diào)函數(shù)125可存在一個(gè)對(duì)應(yīng)的門224和包裝器函數(shù)226對(duì),其配置成促進(jìn)由庫(kù)服務(wù)124跨目標(biāo)和源ISA架構(gòu)回調(diào)回調(diào)函數(shù)125。
[0011]ISA橋接加載器202可以是公用事業(yè),其配置成將應(yīng)用120加載到存儲(chǔ)器內(nèi)。在加載應(yīng)用120中,ISA橋接加載器202可配置成分辨與庫(kù)(其對(duì)應(yīng)于源應(yīng)用120)關(guān)聯(lián)的應(yīng)用120的任何未分辨符號(hào)126。符號(hào)可以是寄存器、存儲(chǔ)器地址及類似物的標(biāo)識(shí)符(例如,文本串)。ISA橋接加載器202可配置成修改符號(hào)(對(duì)于回調(diào)函數(shù)125),并且使對(duì)于回調(diào)函數(shù)125的符號(hào)與對(duì)應(yīng)的包裝器函數(shù)226關(guān)聯(lián)。ISA橋接加載器202可采用許多已知方式(其包括在受到OS 122或中間件121支持時(shí)使用基于二進(jìn)制格式的控制傳輸或加載/預(yù)先加載變量)中的任一個(gè)從OS 122 (或中間件121,如采用的話)的加載器(未示出)獲得加載控制。在其它實(shí)施例中,可修改OS 122 (或中間件121,如采用的話)的加載器來促進(jìn)對(duì)ISA橋接加載器202的控制的傳輸。
[0012]源ISA仿真器204可仿真目標(biāo)ISA 122“頂部上”的源ISA 120來運(yùn)行源ISA應(yīng)用120。如之前描述的,源ISA仿真器204可配置成維持源ISA執(zhí)行上下文212。例如,源ISA仿真器204可配置成在應(yīng)用120的執(zhí)行期間跟蹤源ISA IP (指令指針)。在應(yīng)用120試圖調(diào)用庫(kù)服務(wù)124時(shí),源ISA仿真器204可以在監(jiān)視源ISA執(zhí)行并且相反可調(diào)用執(zhí)行控制并且將其傳輸?shù)絃IB仿真器206。在各種實(shí)施例中,源ISA仿真器204可調(diào)用執(zhí)行控制并且將其傳輸?shù)綆?kù)服務(wù)124的對(duì)應(yīng)門224 (在下文進(jìn)一步論述)。
[0013]LIB仿真器206可通過映射到目標(biāo)LIB 124來仿真源LIB(或任何其它LIB)。LIB仿真器206還可配置成維持目標(biāo)ISA庫(kù)(LIB)執(zhí)行上下文222。對(duì)應(yīng)于庫(kù)服務(wù)124的門224可配置成相應(yīng)地重定向?qū)?kù)服務(wù)124和對(duì)應(yīng)包裝器函數(shù)226 (其處理并且設(shè)置調(diào)用)的調(diào)用。對(duì)應(yīng)于回調(diào)函數(shù)125的門224可配置成相應(yīng)地將對(duì)回調(diào)的執(zhí)行控制從對(duì)應(yīng)包裝器函數(shù)226傳輸?shù)皆碔SA仿真器204。在各種實(shí)施例中,每個(gè)門224可包括指令,其配置成實(shí)行到對(duì)應(yīng)包裝器函數(shù)226或源ISA仿真器204的重定向。在各種實(shí)施例中,每個(gè)門224的指令可以是源ISA指令,其配置成與二進(jìn)制轉(zhuǎn)換引擎215配合來實(shí)行執(zhí)行控制重定向。在各種實(shí)施例中,每個(gè)門224可進(jìn)一步包括識(shí)別對(duì)應(yīng)包裝器函數(shù)226的指示符。
[0014]在各種實(shí)施例中,為了處理并且設(shè)置對(duì)對(duì)應(yīng)庫(kù)服務(wù)124的調(diào)用,對(duì)應(yīng)于庫(kù)服務(wù)124的每個(gè)包裝器函數(shù)226可配置成從源ISA上下文212檢索關(guān)聯(lián)的調(diào)用的參數(shù)值、將調(diào)用從源ISA應(yīng)用二進(jìn)制接口(ABI)格式轉(zhuǎn)換成目標(biāo)ISA ABI格式并且將具有參數(shù)值的轉(zhuǎn)換調(diào)用保存在LIB上下文222中。在回調(diào)回調(diào)函數(shù)125時(shí),執(zhí)行控制可傳輸?shù)交卣{(diào)函數(shù)125的對(duì)應(yīng)包裝器函數(shù)226。在各種實(shí)施例中,為了處理并且設(shè)置對(duì)應(yīng)用120的回調(diào)函數(shù)125的回調(diào),對(duì)應(yīng)于回調(diào)函數(shù)125的每個(gè)包裝器函數(shù)226可配置成將回調(diào)從目標(biāo)ISA ABI格式轉(zhuǎn)換成源ISA ABI格式、使回調(diào)的關(guān)聯(lián)參數(shù)值附連并且將具有參數(shù)值的轉(zhuǎn)換回調(diào)保存在源ISA上下文212中。對(duì)應(yīng)于回調(diào)函數(shù)125的門224可配置成調(diào)用具有源ISA上下文212的源ISA仿真器204 (由包裝器函數(shù)226準(zhǔn)備并且對(duì)應(yīng)于回調(diào)函數(shù)125)來實(shí)行目標(biāo)ISA 104上的源ISA格式中呈現(xiàn)的回調(diào)函數(shù)。
[0015]參考圖1和2兩者,在一些應(yīng)用環(huán)境中,ISA橋接層123可攔截系統(tǒng)加載器160的動(dòng)作。系統(tǒng)加載器可作為源ISA 120上的LIB服務(wù)的部分、作為目標(biāo)ISA 122上的LIB服務(wù)124的配對(duì)物而提供。系統(tǒng)加載器160不僅僅專用于應(yīng)用120而與應(yīng)用120層處的各種組件(例如,多個(gè)應(yīng)用)一起操作。ISA橋接層123可攔截從應(yīng)用120對(duì)系統(tǒng)加載器160的函數(shù)調(diào)用并且使這樣的調(diào)用重定向到ISA橋接加載器202,其使源應(yīng)用120鏈接到ISA門224而不是其它起初針對(duì)的庫(kù)。在運(yùn)行時(shí),當(dāng)應(yīng)用120調(diào)用庫(kù)(定位在源ISA 120中或別的地方)時(shí),ISA門224使控制重定向到目標(biāo)ISA 122上的語義相同的庫(kù)124。然而,在一些實(shí)例中,應(yīng)用120 (例如,LIBmono)可配置成依靠它自己的加載器131 (例如,來加載庫(kù))并且分辨未定義符號(hào)126。這樣的加載器可專用于仿真器130和/或應(yīng)用120并且代替系統(tǒng)加載器160來服務(wù)或附加于系統(tǒng)加載器160來服務(wù)。ISA橋接層123可未配置成監(jiān)視加載器131 (或甚至知道存在加載器131)。因此,應(yīng)用120可試圖直接鏈接到目標(biāo)庫(kù)LIBl 127(其可具有這樣的庫(kù)或符號(hào):它們具有與應(yīng)用120起初針對(duì)的庫(kù)的名稱相同的名稱)。ISA橋接層123可能不能在運(yùn)行時(shí)截止加載器131 (其可使用與系統(tǒng)加載器160的不同的調(diào)用)。這可導(dǎo)致加載器131不正確地加載和與目標(biāo)ISA庫(kù)LIBl 127鏈接、繞過仿真器204和206,從而導(dǎo)致不正確的應(yīng)用執(zhí)行。
[0016]為了解決該問題,本發(fā)明的實(shí)施例對(duì)仿真器130和對(duì)應(yīng)用120提供嵌套(B卩,多層)仿真。在一個(gè)示例中,應(yīng)用120 (仿真層3)由仿真器130 (仿真層2)仿真,該仿真器130由ISA橋接層123 (仿真層I)仿真,該ISA橋接層123在目標(biāo)ISA 122 (仿真層O) “頂部上”。
[0017]一個(gè)實(shí)施例包括特殊源ISA庫(kù)140,其包括要由仿真器130加載的庫(kù)LIBl 141、LIB2 142。如在圖1中示出的,源ISA 120包括未定義符號(hào)126 “A”、“B”、“C”和“D”。庫(kù)LIBl 141、LIB2 142可使用與對(duì)應(yīng)目標(biāo)庫(kù)127、128相同的庫(kù)名稱(其包括相同的函數(shù)名稱或多個(gè)名稱)。例如,源庫(kù)141和目標(biāo)庫(kù)127兩者都叫“LIB1”并且都包括叫“A”、“B”、“C”和“D”的函數(shù)。在仿真器130嘗試分辨未定義符號(hào)126 “A”、“B”、“C”和“D”時(shí),它在特殊庫(kù)141中找到對(duì)應(yīng)符號(hào)。然后仿真器130使它的未定義符號(hào)(例如符號(hào)“A”)與由特殊庫(kù)LIBl 141揭示的對(duì)應(yīng)符號(hào)“A”鏈接。對(duì)于函數(shù)“A”、“B”、“C”和“D”中的每個(gè),特殊庫(kù)LIBl141 (以及對(duì)于函數(shù)“E”、“F”、“G”和“H”的LIB2 142)實(shí)現(xiàn)對(duì)于函數(shù)的門(參見門251,252)而不是實(shí)際函數(shù)。例如,庫(kù)141的函數(shù)“A”僅包括對(duì)于函數(shù)“A”的ISA門(參見門251的門“A”,其包括門但實(shí)際上未包括函數(shù)“A”),其使控制重定向到目標(biāo)ISA 122上的語義相同的庫(kù)LIBl 127。在一個(gè)實(shí)施例中,特殊源ISA庫(kù)140僅包含ISA門。
[0018]如在圖1中指示的,在一個(gè)實(shí)施例中,ISA門在單獨(dú)庫(kù)141、142 (其可根據(jù)需要加載)中組織。例如,如果應(yīng)用120需要對(duì)應(yīng)于LIB2 142的函數(shù)時(shí),仿真器130在等待加載LIBS 142 (和其它庫(kù))時(shí)可僅加載(即,鏈接)LIBl 141。
[0019]圖3-4圖示根據(jù)本發(fā)明的實(shí)施例具有回調(diào)的示例ISA橋接方法。方法300可包括兩個(gè)部分:用于橋接從(源ISA的)應(yīng)用120到(目標(biāo)ISA的)庫(kù)服務(wù)124的調(diào)用的部分300a,和用于橋接從(目標(biāo)ISA的)庫(kù)服務(wù)124到(源ISA的)應(yīng)用120的回調(diào)函數(shù)125的回調(diào)的部分300b。部分300a和300b可獨(dú)立于彼此實(shí)現(xiàn)。而且,各種實(shí)施例不必關(guān)于包裝器函數(shù)和/或回調(diào)函數(shù)而相反可聚焦在嵌套仿真的其它方面上,例如特殊源ISA庫(kù)141、142。
[0020]在圖3中,在框302處,ISA橋接加載器202可加載源應(yīng)用120。在加載應(yīng)用120中,ISA橋接加載器202可分辨對(duì)于庫(kù)服務(wù)124的語義名稱或參考126,并且修改回調(diào)函數(shù)125的語義名稱或參考,如之前描述的。在框304中,在執(zhí)行過程中,應(yīng)用120可能調(diào)用庫(kù)服務(wù)124中的一個(gè)。在各種實(shí)施例中,應(yīng)用120可需要由調(diào)用的庫(kù)服務(wù)124回調(diào)它的回調(diào)函數(shù)125中的一個(gè)。在實(shí)施例中,應(yīng)用120可包括對(duì)回調(diào)函數(shù)125的指針,作為對(duì)調(diào)用庫(kù)服務(wù)124的調(diào)用的部分。代替?zhèn)鬟f對(duì)于回調(diào)函數(shù)125的指針,庫(kù)服務(wù)124的包裝器函數(shù)226可傳遞回調(diào)函數(shù)125的對(duì)應(yīng)包裝器函數(shù)226。在框305處,仿真器130試圖鏈接到庫(kù)并且在這樣做時(shí)鏈接到LIBl 141 (其等同地叫作LIBl 127)。LIBl 141包括將函數(shù)調(diào)用(例如,函數(shù)“A”)重定向到源ISA仿真器204的門。在框306處,源ISA仿真器204 (例如,通過監(jiān)視源ISA IP并且確定IP在參考目標(biāo)庫(kù)的地址范圍內(nèi)的地址)在檢測(cè)到調(diào)用時(shí)可使調(diào)用重定向到以及將執(zhí)行控制傳輸?shù)絃IB仿真器206中的庫(kù)服務(wù)124的對(duì)應(yīng)門224。例如,對(duì)于函數(shù)“A”,LIBl 141的門“A”可使回調(diào)重定向到源ISA仿真器204并且然后到門251的門“A”。在框308處,來自門224的合適的門可進(jìn)一步使調(diào)用重定向到以及將執(zhí)行控制傳輸?shù)秸{(diào)用庫(kù)服務(wù)124的對(duì)應(yīng)包裝器函數(shù)226。在框310處,調(diào)用的庫(kù)服務(wù)124的包裝器函數(shù)226可處理調(diào)用,并且在LIB上下文222中設(shè)置調(diào)用以供調(diào)用的庫(kù)服務(wù)124執(zhí)行,如之前描述的。在框312處,調(diào)用的庫(kù)服務(wù)124的門224可從LIB上下文222收集調(diào)用的返回值、更新源ISA上下文212并且將執(zhí)行控制傳輸?shù)皆碔SA仿真器202。
[0021]從而,圖3圖示嵌套仿真形式,其中應(yīng)用(例如,游戲)在仿真器(例如,仿真器130)頂部上執(zhí)行,其中該應(yīng)用對(duì)于第一 ISA而格式化。仿真器可在ISA橋接層123的頂部上運(yùn)行(B卩,被ISA橋接層123嵌套),該ISA橋接層123執(zhí)行應(yīng)用的透明二進(jìn)制轉(zhuǎn)換并且在與第一 ISA不同的第二 ISA上運(yùn)行仿真器。這使用ISA橋接層123和一個(gè)或多個(gè)特殊源ISA庫(kù)(例如,141、142)完成,該一個(gè)或多個(gè)特殊源ISA庫(kù)使用它自己的加載器131而與仿真器130鏈接。在仿真器130調(diào)用庫(kù)時(shí),仿真器130調(diào)用ISA門(例如,141、142),其然后經(jīng)由門251、252 (其是門224的一般集合的單獨(dú)庫(kù))將函數(shù)調(diào)用映射到目標(biāo)ISA庫(kù)127、128。實(shí)施例可擴(kuò)展來涵蓋任意數(shù)量的仿真層(例如,2、3、4、5個(gè),等)。每個(gè)仿真層與重定向到下一級(jí)仿真層的特殊ISA庫(kù)(其包括或耦合于ISA門)鏈接。
[0022]在圖4 (部分300b)中,在框404處,在完成調(diào)用庫(kù)服務(wù)124的過程中或時(shí),庫(kù)服務(wù)124可回調(diào)應(yīng)用120的回調(diào)函數(shù)125 (例如,通過調(diào)用由應(yīng)用120傳遞的回調(diào)指針)。在框406處,根據(jù)修改的參考,執(zhí)行控制可傳輸?shù)交卣{(diào)函數(shù)125的對(duì)應(yīng)包裝器函數(shù)226。在框408處,包裝器函數(shù)226可處理回調(diào)、在源ISA上下文212中設(shè)置回調(diào)以供應(yīng)用120的回調(diào)函數(shù)125執(zhí)行(如之前描述的),并且之后將執(zhí)行控制傳輸?shù)交卣{(diào)函數(shù)125的對(duì)應(yīng)門224。在框410處,對(duì)應(yīng)于回調(diào)函數(shù)125的門224可使回調(diào)重定向到以及將執(zhí)行控制傳輸?shù)絀SA仿真器,其具有由包裝器函數(shù)226準(zhǔn)備的源ISA上下文。在框412處,源ISA仿真器204可根據(jù)源ISA上下文內(nèi)的IP開始回調(diào)函數(shù)的仿真。在框414處,回調(diào)函數(shù)125的門224可從源ISA上下文212收集回調(diào)的返回值、更新LIB上下文222并且將執(zhí)行控制傳輸?shù)絃IB仿真器204來向庫(kù)服務(wù)124返回回調(diào)函數(shù)125的返回值。
[0023]為了便于理解,各種實(shí)施例已經(jīng)用使一個(gè)源ISA橋接到一個(gè)目標(biāo)ISA的一個(gè)ISA橋接層123描述。然而,本公開不這樣受限制。在實(shí)施例中,多個(gè)ISA橋接層123可使多個(gè)源ISA橋接到目標(biāo)ISA或多個(gè)ISA。在這些實(shí)施例中的一些中,可另外提供調(diào)度器來檢測(cè)需要的橋接,并且例示合適的ISA橋接層或多個(gè)層123來提供需要的ISA橋接。此外,在各種實(shí)施例中,本公開可用對(duì)于應(yīng)用120的部分(在源ISA中)的替代二進(jìn)制文件(在目標(biāo)ISA中)實(shí)踐來減少需要的橋接量。在其它實(shí)施例中,用于橋接的資源中的一些(例如,包裝器函數(shù)中的一些)可定位在對(duì)于ISA橋接層123可訪問的遠(yuǎn)程服務(wù)器上。再進(jìn)一步地,為了便于理解,ISA橋接層123已經(jīng)描述為配置成使源ISA橋接到不同的目標(biāo)ISA。然而,對(duì)于各種應(yīng)用,可采用ISA橋接層123來橋接相同的源ISA和目標(biāo)ISA。在這樣的應(yīng)用中,可能不需要描述的元件中的一個(gè)或多個(gè)(例如,二進(jìn)制轉(zhuǎn)換引擎215)。這樣的應(yīng)用的示例可向計(jì)算設(shè)備102提供增強(qiáng)操作安全性。其它應(yīng)用可同樣從這樣的橋接中獲益。因此,本公開可以是具有支持為另一個(gè)ISA開發(fā)的應(yīng)用的一個(gè)ISA的計(jì)算設(shè)備的技術(shù)問題的解決方案,其中這些應(yīng)用具有有時(shí)需要來自調(diào)用庫(kù)服務(wù)的回調(diào)的使用特性。本公開的優(yōu)勢(shì)可包括避免在計(jì)算設(shè)備的ISA中完全轉(zhuǎn)換或重新實(shí)現(xiàn)應(yīng)用的需要。
[0024]本發(fā)明的實(shí)施例不限于嵌套仿真或上文描述的其它特征中的任何特征。例如,一個(gè)實(shí)施例關(guān)于使BT仿真動(dòng)態(tài)鏈接加速來使這樣的鏈接與靜態(tài)鏈接相當(dāng)(例如,在速度方面)。
[0025]傳統(tǒng)的動(dòng)態(tài)鏈接系統(tǒng)可關(guān)于源ISA應(yīng)用(例如,應(yīng)用120),其必須鏈接到庫(kù)。為了這樣做,應(yīng)用可使用調(diào)用方代碼(利用其來調(diào)用庫(kù))、PLT代碼(其包含用于讀取GOT的代碼)和GOT (其可包括未分辨符號(hào)和函數(shù)位置列表)。BT系統(tǒng)可使用可執(zhí)行加載器、轉(zhuǎn)換器和運(yùn)行時(shí)環(huán)境來仿真應(yīng)用以在目標(biāo)ISA上運(yùn)行。如上文指出的,基于PLT和GOT的方法的使用可需要間接跳躍來將應(yīng)用的庫(kù)調(diào)用指向動(dòng)態(tài)鏈接庫(kù)中的目標(biāo)函數(shù)。然而,動(dòng)態(tài)鏈接的間接跳躍與靜態(tài)鏈接相比時(shí)帶來額外的運(yùn)行時(shí)開銷。圖5描述用于使動(dòng)態(tài)鏈接加速的實(shí)施例,其可使用BT系統(tǒng)中的動(dòng)態(tài)鏈接加速器(DLA)來執(zhí)行。
[0026]BT系統(tǒng)515 (其包括可執(zhí)行加載器520、轉(zhuǎn)換器525和運(yùn)行時(shí)環(huán)境530)仿真目標(biāo)ISA 535上的源ISA應(yīng)用505??蓤?zhí)行加載器520加載源ISA應(yīng)用505和源ISA庫(kù)510,其要?jiǎng)討B(tài)鏈接到應(yīng)用505。轉(zhuǎn)換器525將來自應(yīng)用505的加載指令分組成轉(zhuǎn)換單元(例如轉(zhuǎn)換單元526),并且在每個(gè)轉(zhuǎn)換單元上進(jìn)行源ISA到目標(biāo)ISA 二進(jìn)制轉(zhuǎn)換。運(yùn)行時(shí)環(huán)境530提供支持環(huán)境和助手庫(kù)(未示出)以在目標(biāo)ISA 535上運(yùn)行轉(zhuǎn)換代碼。
[0027]圖5的實(shí)施例通過例如使用DLA加載器521和DLA優(yōu)化器527來增強(qiáng)BT。DLA加載器521使用庫(kù)地址范圍表522來存儲(chǔ)每個(gè)動(dòng)態(tài)鏈接庫(kù)的地址范圍。表522用于地址驗(yàn)證并且用于控制哪些庫(kù)調(diào)用應(yīng)加速。例如,對(duì)某些系統(tǒng)庫(kù)(例如,LIBc或LIBm)的調(diào)用因?yàn)樗鼈兛赡鼙患虞d并且在應(yīng)用505執(zhí)行期間保持加載而是良好的加速候選者。然而,其它用戶庫(kù)(其可能頻繁被加載和卸載)由于將伴隨重復(fù)加載和卸載的重復(fù)轉(zhuǎn)換的操作耗費(fèi)而可能不是良好的候選者。從而,為加速選擇的那些庫(kù)調(diào)用可存儲(chǔ)在表522中,而其它庫(kù)調(diào)用未存儲(chǔ)在表522中。
[0028]如在下文更詳細(xì)解釋的,DLA優(yōu)化器527分析源ISA應(yīng)用505中的PLT代碼507并且計(jì)算對(duì)于源庫(kù)511的地址。該地址然后與存儲(chǔ)在表522 (例如,LIBc是在地址范圍0x4000-0x5000中)中的地址范圍比較。如果地址與任何地址范圍匹配,DLA優(yōu)化器527然后用對(duì)庫(kù)函數(shù)的直接調(diào)用來替換PLT代碼507。利用該DLA增強(qiáng),PLT代理在BT系統(tǒng)515中不再被仿真。因此,動(dòng)態(tài)鏈接可與靜態(tài)鏈接一樣快(或在對(duì)于傳統(tǒng)動(dòng)態(tài)鏈接時(shí)至少得到提高)。用于執(zhí)行動(dòng)態(tài)鏈接的實(shí)施例關(guān)于圖6詳細(xì)提出。
[0029]圖6包括對(duì)于使用DLA加載器521和DLA優(yōu)化器527的加速動(dòng)態(tài)鏈接的過程600。在框605中,當(dāng)源ISA應(yīng)用505在BT系統(tǒng)515上執(zhí)行時(shí),可執(zhí)行加載器520加載應(yīng)用505和它的動(dòng)態(tài)鏈接庫(kù)(例如,庫(kù)510,其可包括例如LIBc、LIBm,LIBc++及類似物)。在框610中,DLA加載器521記錄每個(gè)加載庫(kù)的存儲(chǔ)器地址范圍并且將地址或多個(gè)地址存儲(chǔ)在庫(kù)地址范圍表522中(例如,LIBc是在地址范圍0x4000-0x5000中)。在框615中,轉(zhuǎn)換器525在應(yīng)用的仿真執(zhí)行流后將加載代碼505分組成一個(gè)或多個(gè)轉(zhuǎn)換單元(例如,單元526)。例如,轉(zhuǎn)換器525可將指令添加到一個(gè)轉(zhuǎn)換單元直到滿足控制傳輸指令。在滿足控制傳輸指令時(shí),轉(zhuǎn)換器525可根據(jù)與控制傳輸指令關(guān)聯(lián)的啟發(fā)或歷史信息繼續(xù)在控制傳輸指令的目標(biāo)地址后添加指令(參見例如圖5的框526)。在分組期間,當(dāng)轉(zhuǎn)換器525滿足調(diào)用指令(例如,CALL 0X1230PLT)時(shí),轉(zhuǎn)換器525向DLA優(yōu)化器527發(fā)送調(diào)用目標(biāo)地址(例如,0X123)。在框620中,DLA優(yōu)化器527使用代碼模式匹配(在下文進(jìn)一步解決)來確定調(diào)用目標(biāo)地址(例如,0X123)是否包括在PLT代碼中。如果調(diào)用目標(biāo)確定為在PLT代碼中,則DLA優(yōu)化器527計(jì)算PLT代碼并且從GOT (未示出但包括在代碼505中)調(diào)用(例如,“CALL malloc”,其如由調(diào)用規(guī)定的那樣對(duì)存儲(chǔ)器分配函數(shù))庫(kù)函數(shù)地址。在框625中,DLA優(yōu)化器527將該庫(kù)函數(shù)地址發(fā)送到DLA加載器521用于地址驗(yàn)證(參見圖5的箭頭529 )。在框630中,DLA加載器521將由DLA優(yōu)化器527供應(yīng)的庫(kù)函數(shù)地址與庫(kù)地址范圍表522中的內(nèi)容比較來確保供應(yīng)的地址是加速的有效候選者。一旦執(zhí)行驗(yàn)證,在框635中,DLA優(yōu)化器527用對(duì)庫(kù)函數(shù)511的直接調(diào)用來替換對(duì)PLT 507的原始調(diào)用并且從轉(zhuǎn)換單元去除PLT代碼(參見單元528,其不包括來自單元526的PLT代碼)。因此,PLT代碼在BT系統(tǒng)515中不再被仿真(由此避免仿真開銷)。
[0030]圖7包括用于使用例如DLA加載器521和DLA優(yōu)化器527以及圖6的過程的部分來實(shí)現(xiàn)動(dòng)態(tài)鏈接加速的偽代碼。為了簡(jiǎn)潔起見,未論述代碼的每個(gè)行。行706-707關(guān)于識(shí)別調(diào)用指令和它的目標(biāo)地址。在行708中,如果目標(biāo)地址和它的周邊地址定位在PLT代碼中,則該模式匹配指示調(diào)用可能針對(duì)PLT代碼。在行709-711中,找到正確的庫(kù)地址并且驗(yàn)證它。在行712-713中,用直接調(diào)用替換PLT代碼以由此避免PLT代碼的高代價(jià)仿真和它關(guān)聯(lián)的間接跳躍和查找。不再需要?jiǎng)討B(tài)鏈接來遍歷PLT和GOT用于庫(kù)函數(shù)地址計(jì)算。
[0031]實(shí)施例可在代碼中實(shí)現(xiàn)并且可存儲(chǔ)在存儲(chǔ)介質(zhì)上,該存儲(chǔ)介質(zhì)具有存儲(chǔ)在其上的指令,其可以用于對(duì)系統(tǒng)編程來執(zhí)行指令。存儲(chǔ)介質(zhì)可包括但不限于任何類型的盤,這些盤包括軟盤、光盤、固態(tài)驅(qū)動(dòng)器(SSD)、壓縮盤只讀存儲(chǔ)器(⑶-ROM)、壓縮盤可重寫(⑶-RW)和磁光盤;例如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)(例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM))、可擦除可編程只讀存儲(chǔ)器(EPROM)、閃速存儲(chǔ)器、電可擦除可編程只讀存儲(chǔ)器(EEPROM)等半導(dǎo)體器件、磁或光卡或適合于存儲(chǔ)電子指令的任何其它類型的介質(zhì)。本發(fā)明的實(shí)施例可在本文關(guān)于例如指令、函數(shù)、規(guī)程、數(shù)據(jù)結(jié)構(gòu)、應(yīng)用程序、配置設(shè)置、代碼等數(shù)據(jù)來描述。當(dāng)數(shù)據(jù)被機(jī)器訪問時(shí),該機(jī)器可通過執(zhí)行任務(wù)、限定抽象數(shù)據(jù)類型、建立低級(jí)硬件上下文和/或進(jìn)行其它操作而作出響應(yīng),如在本文更詳細(xì)描述的。數(shù)據(jù)可存儲(chǔ)在易失性和/或非易失性數(shù)據(jù)存儲(chǔ)中。為了該公開的目的,術(shù)語“代碼”或“程序”涵蓋廣泛的組件和構(gòu)造,其包括應(yīng)用、驅(qū)動(dòng)器、進(jìn)程、例程、方法、模塊和子程序。從而,術(shù)語“代碼,,或“程序”可用于指代指令的任何集合,這些指令在被處理系統(tǒng)執(zhí)行時(shí)進(jìn)行期望的操作或多個(gè)操作。另外,備選實(shí)施例可包括使用比公開操作中的全部更少的進(jìn)程、使用額外操作的進(jìn)程、使用處于不同序列的相同操作的進(jìn)程以及其中本文公開的個(gè)體操作組合、細(xì)分或用別的方式更改的進(jìn)程。在一個(gè)實(shí)施例中,術(shù)語控制邏輯的使用包括例如晶體管、寄存器等硬件,或例如可編程邏輯設(shè)備(535)等其它硬件。然而,在另一個(gè)實(shí)施例中,邏輯還包括軟件或代碼(531)。這樣的邏輯可與例如固件或微代碼(536)等硬件集成。處理器或控制器可包括意在代表本領(lǐng)域內(nèi)已知的很多種控制邏輯中的任何控制邏輯的控制邏輯,并且如此,可很好地實(shí)現(xiàn)為微處理器、微控制器、現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路(ASIC)、可編程邏輯設(shè)備(PLD)及類似物。
[0032]參考圖1,對(duì)于一個(gè)實(shí)施例,處理器和存儲(chǔ)器布置104的處理器中的至少一個(gè)可與配置成實(shí)踐圖3、4、6、7的方法的操作(或其子集)的ISA橋接層123的計(jì)算邏輯(或其子集)封裝在一起。對(duì)于一個(gè)實(shí)施例,處理器和存儲(chǔ)器布置104的處理器中的至少一個(gè)可與配置成實(shí)踐圖3、4、6、7的操作(或其子集)的ISA橋接層123的計(jì)算邏輯(或其子集)封裝在一起來形成系統(tǒng)級(jí)封裝(SiP)。對(duì)于一個(gè)實(shí)施例,處理器和存儲(chǔ)器布置104的處理器中的至少一個(gè)可集成在與配置成實(shí)踐圖3、4、6、7的操作(或其子集)的ISA橋接層123的計(jì)算邏輯(或其子集)相同的芯片上。對(duì)于一個(gè)實(shí)施例,處理器和存儲(chǔ)器布置104的處理器中的至少一個(gè)可集成在與ISA橋接層123的計(jì)算邏輯(或其子集)相同的芯片上來形成片上系統(tǒng)(SoC)。對(duì)于至少一個(gè)實(shí)施例,SoC可在臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、智能電話、計(jì)算平板、因特網(wǎng)家電、個(gè)人數(shù)字助理(PDA)、便攜式游戲設(shè)備、服務(wù)器或其它計(jì)算設(shè)備中使用。
[0033]實(shí)施例包括由至少一個(gè)處理器執(zhí)行的方法,其包括:加載具有源指令集架構(gòu)(ISA)的應(yīng)用;使調(diào)用(其是對(duì)于源ISA庫(kù)的庫(kù)服務(wù))重定向到第一庫(kù),因此調(diào)用未觸及源ISA庫(kù);使調(diào)用從第一庫(kù)定向到目標(biāo)ISA庫(kù)的庫(kù)服務(wù);以及經(jīng)由目標(biāo)ISA庫(kù)仿真應(yīng)用。該方法可進(jìn)一步包括分辨對(duì)于應(yīng)用的未定義符號(hào)。分辨未定義符號(hào)包括經(jīng)由第一庫(kù)的第一門間接鏈接到目標(biāo)ISA庫(kù)的目標(biāo)門。第一門可具有第一名稱并且目標(biāo)門可具有目標(biāo)名稱,其包括第一名稱。例如,名稱(不管文件擴(kuò)展)可相同或僅僅相差前綴、后綴及類似物。使調(diào)用重定向到第一庫(kù)可包括使調(diào)用從專用于應(yīng)用的仿真器重定向。使調(diào)用重定向到第一庫(kù)可包括使調(diào)用從專用于應(yīng)用并且不是通用系統(tǒng)加載器的仿真器重定向。方法可包括:對(duì)與應(yīng)用關(guān)聯(lián)的額外庫(kù)服務(wù)提供額外調(diào)用;該額外調(diào)用指向規(guī)程鏈接表(PLT)中包括的代碼;以及用對(duì)源ISA庫(kù)和額外源ISA庫(kù)中的一個(gè)的直接額外調(diào)用(其繞過PLT)替換額外調(diào)用。方法可包括識(shí)別對(duì)于額外調(diào)用的地址;以及基于識(shí)別對(duì)于額外調(diào)用的地址來確定額外調(diào)用指向PLT中包括的代碼。權(quán)利要求1的方法可包括對(duì)與應(yīng)用關(guān)聯(lián)的額外庫(kù)服務(wù)提供額外調(diào)用;該額外調(diào)用指向代碼,其配置成定位規(guī)程;以及用對(duì)源ISA庫(kù)和額外源ISA庫(kù)中的一個(gè)的直接額外調(diào)用(其繞過配置成定位規(guī)程的代碼)替換額外調(diào)用。
[0034]在實(shí)施例中,裝置可包括至少一個(gè)存儲(chǔ)器和耦合于該至少一個(gè)存儲(chǔ)器的至少一個(gè)處理器,以用于進(jìn)行這樣的操作,其包括:加載具有源指令集架構(gòu)(ISA)的應(yīng)用;對(duì)與應(yīng)用關(guān)聯(lián)的庫(kù)服務(wù)提供調(diào)用,額外調(diào)用指向配置成定位規(guī)程的代碼;用對(duì)源ISA庫(kù)的直接調(diào)用(其繞過配置成定位規(guī)程的代碼)替換調(diào)用;以及經(jīng)由目標(biāo)ISA庫(kù)仿真應(yīng)用。配置成定位規(guī)程的代碼可包括在規(guī)程鏈接表(PLT)中。實(shí)施例可進(jìn)行這樣的操作,其包括:識(shí)別對(duì)于調(diào)用的地址;以及基于識(shí)別對(duì)于調(diào)用的地址來確定調(diào)用指向PLT中包括的代碼。實(shí)施例可執(zhí)行這樣的操作,其包括:使額外調(diào)用(其是對(duì)于源ISA庫(kù)和額外源ISA庫(kù)中的一個(gè)的額外庫(kù)服務(wù))重定向到第一庫(kù),因此額外調(diào)用未觸及源ISA庫(kù)和額外源ISA庫(kù)中的一個(gè);以及使額外調(diào)用從第一庫(kù)定向到目標(biāo)ISA庫(kù)和額外目標(biāo)ISA庫(kù)中的一個(gè)。實(shí)施例可進(jìn)行這樣的操作,其包括分辨對(duì)于應(yīng)用的未定義符號(hào)。在實(shí)施例中,分辨未定義符號(hào)包括經(jīng)由第一庫(kù)的門鏈接到目標(biāo)ISA庫(kù)和額外目標(biāo)ISA庫(kù)中的一個(gè)的門。在實(shí)施例中,使額外調(diào)用重定向包括使額外調(diào)用從專用于應(yīng)用的仿真器重定向。在實(shí)施例中,使額外調(diào)用重定向包括使額外調(diào)用從專用于應(yīng)用并且不是通用系統(tǒng)加載器的仿真器重定向。
[0035]從而,各種實(shí)施例包括對(duì)于源應(yīng)用和源仿真器的嵌套仿真。復(fù)制源ISA庫(kù)使源仿真器庫(kù)調(diào)用重定向到目標(biāo)庫(kù),由此迫使本機(jī)仿真器通過第一與第二 ISA之間的正確仿真通道。這提供導(dǎo)致正確仿真的優(yōu)勢(shì)。各種實(shí)施例的優(yōu)勢(shì)也在于增加的動(dòng)態(tài)鏈接效率和速度。例如,效率通過與基于PLT和GOT的方法的先用關(guān)聯(lián)的間接跳躍得到。
[0036]將意識(shí)到本公開可能是向計(jì)算設(shè)備提供增強(qiáng)安全性的技術(shù)問題的解決方案。本公開的優(yōu)勢(shì)可包括但不限于,提供的隔離的魯棒性。
【權(quán)利要求】
1.一種由至少一個(gè)處理器執(zhí)行的方法,其包括: 加載具有源指令集架構(gòu)(ISA)的應(yīng)用; 使調(diào)用重定向到第一庫(kù),所述調(diào)用是對(duì)于源ISA庫(kù)的庫(kù)服務(wù),因此所述調(diào)用未觸及所述源ISA庫(kù); 使所述調(diào)用從所述第一庫(kù)定向到目標(biāo)ISA庫(kù)的庫(kù)服務(wù);以及 經(jīng)由所述目標(biāo)ISA庫(kù)仿真所述應(yīng)用。
2.如權(quán)利要求1所述的方法,其包括分辨對(duì)于所述應(yīng)用的未定義符號(hào)。
3.如權(quán)利要求2所述的方法,其中分辨所述未定義符號(hào)包括經(jīng)由所述第一庫(kù)的第一門間接鏈接到所述目標(biāo)ISA庫(kù)的目標(biāo)門。
4.如權(quán)利要求3所述的方法,其中所述第一門具有第一名稱并且所述目標(biāo)門具有目標(biāo)名稱,其包括所述第一名稱。
5.如權(quán)利要求1所述的方法,其中使所述調(diào)用重定向到所述第一庫(kù)包括使所述調(diào)用從專用于所述應(yīng)用的仿真器重定向。
6.如權(quán)利要求1所述的方法,其中使所述調(diào)用重定向到所述第一庫(kù)包括使所述調(diào)用從專用于所述應(yīng)用并且不是通用系統(tǒng)加載器的仿真器重定向。
7.如權(quán)利要求1所述的方法,其包括: 對(duì)與所述應(yīng)用關(guān)聯(lián)的額外庫(kù)服務(wù)提供額外調(diào)用;所述額外調(diào)用指向規(guī)程鏈接表(PLT)中包括的代碼;以及 用對(duì)所述源ISA庫(kù)和額外源ISA庫(kù)中的一個(gè)的直接額外調(diào)用替換所述額外調(diào)用,所述直接額外調(diào)用繞過所述PLT。
8.如權(quán)利要求1所述的方法,其包括: 識(shí)別對(duì)于所述額外調(diào)用的地址;以及 基于識(shí)別對(duì)于所述額外調(diào)用的地址來確定所述額外調(diào)用指向所述PLT中包括的代碼。
9.如權(quán)利要求1所述的方法,其包括: 對(duì)與所述應(yīng)用關(guān)聯(lián)的額外庫(kù)服務(wù)提供額外調(diào)用;所述額外調(diào)用指向代碼,所述代碼配置成定位規(guī)程;以及 用對(duì)所述源ISA庫(kù)和額外源ISA庫(kù)中的一個(gè)的直接額外調(diào)用替換所述額外調(diào)用,所述直接額外調(diào)用繞過配置成定位規(guī)程的所述代碼。
10.一種裝置,其包括用于執(zhí)行權(quán)利要求1至9中的任一項(xiàng)的部件。
11.至少一個(gè)機(jī)器可讀介質(zhì),其包括多個(gè)指令,所述指令響應(yīng)于在計(jì)算設(shè)備上執(zhí)行而促使所述計(jì)算設(shè)備實(shí)施如權(quán)利要求1至9中任一項(xiàng)所述的方法。
12.一種裝置,其包括: 至少一個(gè)存儲(chǔ)器和耦合于所述至少一個(gè)存儲(chǔ)器的至少一個(gè)處理器,用于進(jìn)行這樣的操作,其包括: 加載具有源指令集架構(gòu)(ISA)的應(yīng)用; 對(duì)與所述應(yīng)用關(guān)聯(lián)的庫(kù)服務(wù)提供調(diào)用,所述額外調(diào)用指向配置成定位規(guī)程的代碼; 用對(duì)源ISA庫(kù)的直接調(diào)用替換所述調(diào)用,所述直接調(diào)用繞過配置成定位規(guī)程的代碼;以及 經(jīng)由目標(biāo)ISA庫(kù)仿真所述應(yīng)用。
13.如權(quán)利要求12所述的裝置,其中配置成定位規(guī)程的代碼包括在規(guī)程鏈接表(PLT)中。
14.如權(quán)利要求13所述的裝置,其中所述至少一個(gè)處理器進(jìn)行這樣的操作,其包括: 識(shí)別對(duì)于所述調(diào)用的地址;以及基于識(shí)別對(duì)于所述調(diào)用的地址來確定所述調(diào)用指向所述PLT中包括的代碼。
15.如權(quán)利要求12所述的裝置,其中所述至少一個(gè)處理器進(jìn)行這樣的操作,其包括: 使額外調(diào)用重定向到第一庫(kù),所述額外調(diào)用是對(duì)于所述源ISA庫(kù)和額外源ISA庫(kù)中的一個(gè)的額外庫(kù)服務(wù),因此所述額外調(diào)用未觸及所述源ISA庫(kù)和所述額外源ISA庫(kù)中的一個(gè);以及使所述額外調(diào)用從所述第一庫(kù)定向到所述目標(biāo)ISA庫(kù)和額外目標(biāo)ISA庫(kù)中的一個(gè)。
16.如權(quán)利要求12所述的裝置,其中所述至少一個(gè)處理器執(zhí)行這樣的操作,其包括分辨對(duì)于所述應(yīng)用的未定義符號(hào)。
17.如權(quán)利要求16所述的裝置,其中分辨未定義符號(hào)包括經(jīng)由所述第一庫(kù)的門鏈接到所述目標(biāo)ISA庫(kù)和所述額外目標(biāo)ISA庫(kù)中的一個(gè)的門。
18.如權(quán)利要求12所述的裝置,其中使所述額外調(diào)用重定向包括使所述額外調(diào)用從專用于所述應(yīng)用的仿真器重定向。
19.如權(quán)利要求12所述的裝置,其中使所述額外調(diào)用重定向包括使所述額外調(diào)用從專用于所述應(yīng)用并且不是通用系統(tǒng)加載器的仿真器重定向。
20.一種計(jì)算機(jī)系統(tǒng),其包括權(quán)利要求12至19所述的至少一個(gè)處理器,所述計(jì)算機(jī)系統(tǒng)進(jìn)一步包括至少一個(gè)顯示器。
【文檔編號(hào)】G06F9/30GK104246695SQ201280071653
【公開日】2014年12月24日 申請(qǐng)日期:2012年3月22日 優(yōu)先權(quán)日:2012年3月22日
【發(fā)明者】鐘學(xué)亮, 李劍慧, 陳建萍, 李庭濤, 伍勇, 譚文, D. 林 X. 申請(qǐng)人:英特爾公司