两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于受限系統(tǒng)的分布式動(dòng)態(tài)二進(jìn)制翻譯方法

文檔序號(hào):6482405閱讀:549來(lái)源:國(guó)知局

專利名稱::用于受限系統(tǒng)的分布式動(dòng)態(tài)二進(jìn)制翻譯方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種用于受限系統(tǒng)的分布式的動(dòng)態(tài)二進(jìn)制翻譯方法,具體涉及一種采用分布式架構(gòu),適用于在瘦客戶端等受限系統(tǒng)上使用的動(dòng)態(tài)二進(jìn)制翻譯方法。本發(fā)明屬于動(dòng)態(tài)二進(jìn)制翻譯
技術(shù)領(lǐng)域
。
背景技術(shù)
:動(dòng)態(tài)二進(jìn)制翻譯技術(shù)可以在不重新編譯源代碼的情況下,自動(dòng)翻譯異構(gòu)平臺(tái)的二進(jìn)制代碼,達(dá)到運(yùn)行異構(gòu)平臺(tái)的二進(jìn)制代碼的目的。動(dòng)態(tài)二進(jìn)制翻譯技術(shù)可以使硬件生產(chǎn)商在構(gòu)建新系統(tǒng)結(jié)構(gòu)時(shí),不用更多考慮兼容之前的體系結(jié)構(gòu)。同時(shí)使用動(dòng)態(tài)二進(jìn)制翻譯技術(shù)也能更好地維護(hù)之前遺留的二進(jìn)制代碼,特別是那些硬件已經(jīng)不再生產(chǎn)的平臺(tái)上的二進(jìn)制代碼,又可以加強(qiáng)單個(gè)體系架構(gòu)的應(yīng)用范圍,使單個(gè)體系結(jié)構(gòu)(如Intel平臺(tái))運(yùn)行多個(gè)體系結(jié)構(gòu)(如MIPS,SPARC,PowerPC平臺(tái))的二進(jìn)制代碼。一般動(dòng)態(tài)二進(jìn)制翻譯器必定包括翻譯模塊,執(zhí)行模塊。翻譯模塊將源平臺(tái)的二進(jìn)制代碼直接翻譯到目標(biāo)平臺(tái)可執(zhí)行代碼,對(duì)于翻譯復(fù)雜的源平臺(tái)的二進(jìn)制代碼,如IntelIA32平臺(tái)的二進(jìn)制代碼,其對(duì)應(yīng)的翻譯模塊必定是復(fù)雜而龐大的,在進(jìn)行指令翻譯過(guò)程中,翻譯模塊會(huì)消耗比較多的計(jì)算資源以及內(nèi)存資源,對(duì)于一個(gè)動(dòng)態(tài)二進(jìn)制翻譯器是一個(gè)不小的負(fù)擔(dān)。執(zhí)行模塊主要功能是執(zhí)行經(jīng)過(guò)翻譯模塊翻譯后的目標(biāo)平臺(tái)可執(zhí)行代碼。目前已經(jīng)開(kāi)發(fā)出一些商用的動(dòng)態(tài)二進(jìn)制翻譯器,如Intel的IA32EL、Hp的Dynamo等,但所有這些動(dòng)態(tài)二進(jìn)制翻譯器都并非針對(duì)于一個(gè)受限系統(tǒng)(如手機(jī),ARM平臺(tái)等計(jì)算能力、內(nèi)存容量都相對(duì)比較弱的系統(tǒng))。對(duì)于瘦客戶端等受限系統(tǒng)來(lái)說(shuō),直接移植傳統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯器會(huì)帶來(lái)非常大的開(kāi)銷,并且效果也會(huì)非常低效。原因就是受限系統(tǒng)的運(yùn)算能力,內(nèi)存都相對(duì)較弱,而翻譯器中的復(fù)雜模塊,如翻譯模塊等在受限系統(tǒng)中的運(yùn)行,將消耗巨大的系統(tǒng)資源,帶來(lái)額外開(kāi)銷,使本來(lái)資源就有限的受限系統(tǒng)更難承受。
發(fā)明內(nèi)容本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)的不足,提供一種用于受限系統(tǒng)的分布式動(dòng)態(tài)二進(jìn)制翻譯方法,適用于處理器、內(nèi)存資源都有限的受限系統(tǒng),加強(qiáng)受限系統(tǒng)執(zhí)行異構(gòu)平臺(tái)程序的能力。為實(shí)現(xiàn)上述目的,本發(fā)明對(duì)傳統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯器做改進(jìn),將翻譯器的翻譯和執(zhí)行模塊做劃分,分別安置于服務(wù)端和受限客戶端,服務(wù)端完成翻譯功能,客戶端完成執(zhí)行功能??蛻舳嗽趫?zhí)行異構(gòu)平臺(tái)代碼時(shí),向服務(wù)端發(fā)送翻譯請(qǐng)求,服務(wù)端翻譯完成后,將翻譯后代碼返回給客戶端,由客戶端執(zhí)行此代碼,直至遇到未翻譯的代碼,重新開(kāi)始一輪請(qǐng)求,翻譯,執(zhí)行的過(guò)程。通過(guò)這種模塊劃分,減輕動(dòng)態(tài)二進(jìn)制翻譯器在受限系統(tǒng)的負(fù)擔(dān),加快動(dòng)態(tài)二進(jìn)制翻譯器在受限系統(tǒng)運(yùn)行速度。本發(fā)明用于受限系統(tǒng)的分布式動(dòng)態(tài)二進(jìn)制翻譯方法的步驟如下1.客戶端加載異構(gòu)平臺(tái)的二進(jìn)制代碼,與服務(wù)端建立連接,完成各自初始化。受限系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯器的客戶端加載異構(gòu)平臺(tái)的二進(jìn)制代碼,完成初始化,并通過(guò)網(wǎng)絡(luò)連接與受限系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯器的服務(wù)端連接,發(fā)送二進(jìn)制代碼和同步信息。服務(wù)端根據(jù)此二進(jìn)制行代碼所屬指令集平臺(tái),初始化翻譯器服務(wù)端對(duì)應(yīng)的翻譯模塊,完成服務(wù)端的初始化。2.服務(wù)端接收客戶端翻譯請(qǐng)求,翻譯指定的源二進(jìn)制代碼塊至客戶端的目標(biāo)代碼塊。受限系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯的客戶端在執(zhí)行一個(gè)未翻譯過(guò)的基本塊時(shí),發(fā)送翻譯請(qǐng)求至動(dòng)態(tài)二進(jìn)制翻譯器服務(wù)端。服務(wù)端接收到客戶端的翻譯請(qǐng)求后,先在已翻譯代碼緩存中查找是否存在已經(jīng)翻譯過(guò)的代碼塊,如果存在,則對(duì)代碼塊做修改后,將代碼塊發(fā)送回客戶端;否則開(kāi)始一個(gè)翻譯過(guò)程,翻譯完成后將起始地址和翻譯好的代碼塊存入服務(wù)端的已翻譯代碼緩存區(qū)中,并將翻譯后代碼4塊傳送給客戶端。3.客戶端等待服務(wù)端的回應(yīng),接收翻譯后的代碼塊。在服務(wù)端完成翻譯前,客戶端一直處于等待狀態(tài),直到服務(wù)端翻譯過(guò)程完成,通知客戶端后,客戶端開(kāi)始接收翻譯后的代碼塊,將其存入客戶端本地代碼緩存區(qū)中。4.客戶端執(zhí)行翻譯后代碼塊。客戶端在接收到翻譯后的代碼塊后,開(kāi)始對(duì)其做基本塊連接,保存機(jī)器運(yùn)行狀態(tài),然后開(kāi)始執(zhí)行連接后的基本塊;如果遇到未翻譯的代碼塊,則開(kāi)始新一輪的請(qǐng)求、翻譯、執(zhí)行過(guò)程。5.程序運(yùn)行結(jié)束,退出程序,客戶端和服務(wù)端釋放各自的內(nèi)存資源等。本發(fā)明的所涉及的方法的優(yōu)點(diǎn)在于采用分布式架構(gòu),分離一個(gè)動(dòng)態(tài)二進(jìn)制翻譯器的翻譯模塊和執(zhí)行模塊,翻譯模塊放在服務(wù)端,執(zhí)行模塊放在客戶端,使得對(duì)系統(tǒng)資源有較高要求的翻譯模塊與受限系統(tǒng)分離,大大減輕了作為客戶端的受限系統(tǒng)的負(fù)擔(dān)。本發(fā)明這種分布式動(dòng)態(tài)二進(jìn)制翻譯方法更加合適于受限系統(tǒng),加強(qiáng)了受限系統(tǒng)執(zhí)行異構(gòu)平臺(tái)程序的能力。圖1是分布式動(dòng)態(tài)二進(jìn)制翻譯器的框架圖。具體實(shí)施例方式為了更好的理解本發(fā)明的技術(shù)方案,以下通過(guò)具體的實(shí)施例作進(jìn)一步描述。以下實(shí)施例不構(gòu)成對(duì)本發(fā)明的限定,該方法適合一切受限系統(tǒng)分布式動(dòng)態(tài)二進(jìn)制翻譯器的設(shè)計(jì)。實(shí)施例以一個(gè)分布式的動(dòng)態(tài)二進(jìn)制翻譯器DVEE為例。DVEE分為服務(wù)端和客戶端兩個(gè)部分,如圖1所示。服務(wù)端主要負(fù)責(zé)代碼的翻譯,客戶端負(fù)責(zé)源程序的加載,和執(zhí)行翻譯后的代碼塊。服務(wù)端的目標(biāo)代碼緩存區(qū),即服務(wù)端的已翻譯代碼緩存區(qū),用于存放服務(wù)端每次翻譯后的代碼塊;客戶端的目標(biāo)緩存區(qū),即客戶端本地緩存區(qū),用于接收服務(wù)端發(fā)送來(lái)的翻譯后的代碼塊。服務(wù)端接收到客戶端的翻譯請(qǐng)求,完成翻譯,并將翻譯后的代碼塊傳送給客戶端,客戶端5在接收到翻譯后的代碼塊后,開(kāi)始對(duì)其做基本塊連接,然后開(kāi)始執(zhí)行連接后的基本塊。服務(wù)端和客戶端通過(guò)網(wǎng)絡(luò)連接通信,通信協(xié)議用SOCKET編程接口構(gòu)建于TCP/IP協(xié)議之上。通信時(shí)消息采用的數(shù)據(jù)包格式如表1所示,一共包括五個(gè)部分,消息頭,消息類型,消息長(zhǎng)度,消息內(nèi)容,消息尾。表1傳輸協(xié)議數(shù)據(jù)包格式<table>tableseeoriginaldocumentpage6</column></row><table>本發(fā)明分布式的動(dòng)態(tài)二進(jìn)制翻譯方法的具體步驟如下1、客戶端加載異構(gòu)平臺(tái)的二進(jìn)制代碼,與服務(wù)端建立連接,完成各自初始化。受限系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯器客戶端加載異構(gòu)平臺(tái)的二進(jìn)制代碼,獲得程序入口地址,將此地址賦值給某一全局變量SPC(源程序初始基本塊入口地址),同時(shí)創(chuàng)建一個(gè)空的目標(biāo)代碼緩存區(qū),將此緩存區(qū)的起始地址賦值給全局變量TPC(目標(biāo)平臺(tái)基本塊入口地址)。之后客戶端通過(guò)網(wǎng)絡(luò)連接與動(dòng)態(tài)二進(jìn)制翻譯器服務(wù)端連接,發(fā)送二進(jìn)制代碼和同步信息??蛻舳藢⒍M(jìn)制代碼和同步信息(客戶端所屬平臺(tái),仿真寄存器組在客戶端的內(nèi)存地址)構(gòu)建成一個(gè)初始化類型消息,將此消息發(fā)送給服務(wù)端。服務(wù)端接收到此消息后,讀取消息內(nèi)容,保存在服務(wù)端。服務(wù)端根據(jù)此二進(jìn)制行代碼所屬指令集平臺(tái),初始化翻譯器服務(wù)端對(duì)應(yīng)的翻譯模塊,同時(shí)開(kāi)辟一個(gè)足夠大的目標(biāo)代碼緩存區(qū),完成服務(wù)端的初始化。2、服務(wù)端接收客戶端翻譯請(qǐng)求,翻譯指定的源二進(jìn)制代碼塊至客戶端的目標(biāo)代碼塊。受限系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯的客戶端在執(zhí)行一個(gè)未翻譯過(guò)的基本塊時(shí),發(fā)送翻譯請(qǐng)求至動(dòng)態(tài)二進(jìn)制翻譯器服務(wù)端??蛻舳艘匀肿兞縎PC作為關(guān)鍵字在本地目標(biāo)代碼緩存區(qū)中查找對(duì)應(yīng)的翻譯后的目標(biāo)代碼塊。如果查找命中,則本地目標(biāo)代碼緩存區(qū)已保留翻譯后的代碼塊,將代碼塊起始地址賦值給TPC,轉(zhuǎn)步驟4;如果査找沒(méi)有命中,則首先檢查客戶端翻譯代碼緩存區(qū)是否己經(jīng)滿,滿的話全部將緩存區(qū)全部清空,將TPC設(shè)置為緩存區(qū)的首地址,否則將TPC設(shè)置為緩存區(qū)空閑區(qū)域起始地址。將此時(shí)的SPC和TPC構(gòu)建一個(gè)翻譯請(qǐng)求類型的消息發(fā)送個(gè)服務(wù)端。服務(wù)端接收到客戶端的翻譯請(qǐng)求后,讀取SPC和TPC,先在目標(biāo)代碼緩存區(qū)中査找是否存在己經(jīng)翻譯過(guò)的代碼塊,査找的關(guān)鍵字就是SPC,如果存在,根據(jù)TPC的值對(duì)翻譯過(guò)的代碼塊中的地址偏移指令做修改,構(gòu)建翻譯應(yīng)答類消息,將代碼塊發(fā)送回客戶端;否則開(kāi)始一個(gè)翻譯過(guò)程,從初始化時(shí)得到的源平臺(tái)二進(jìn)制代碼中逐一取出指令,對(duì)指令解碼,生成中間指令,直到遇到的指令滿足基本塊結(jié)束條件,如遇到跳轉(zhuǎn)指令等。再將這些中間指令序列翻譯成目標(biāo)代碼塊,翻譯完成后將起始地址(SPC)和翻譯好的代碼存入服務(wù)端的目標(biāo)代碼緩存區(qū)中,并構(gòu)建翻譯應(yīng)答消息,將翻譯后代碼塊傳送給客戶端,完成此次請(qǐng)求,轉(zhuǎn)步驟3。3、客戶端等待服務(wù)端的回應(yīng),接收翻譯后的代碼塊。當(dāng)服務(wù)端完成翻譯前,客戶端一直處于等待狀態(tài),直到服務(wù)端翻譯過(guò)程完成,通知客戶端??蛻舳碎_(kāi)始接收翻譯后代碼,將其放置在TPC所指向的目標(biāo)代碼緩存區(qū)中,這樣在本地就保存了與SPC所指向的源平臺(tái)基本塊所對(duì)應(yīng)的翻譯后的目標(biāo)平臺(tái)代碼塊,同時(shí)將TPC的值加上目標(biāo)代碼塊大小后的值作為緩存區(qū)空閑區(qū)起始地址,可以作為下一次翻譯后代碼放置位置的起始地址,轉(zhuǎn)步驟4。4、客戶端執(zhí)行翻譯后代碼塊??蛻舳嗽诮邮盏椒g后代碼塊后,開(kāi)始對(duì)其做基本塊連接(連接指將上個(gè)目標(biāo)代碼塊末端跳轉(zhuǎn)的目的地址修改為這個(gè)基本塊的入口地址),保存機(jī)器運(yùn)行狀態(tài),即將目標(biāo)平臺(tái)中通用寄存器保存到棧中,然后開(kāi)始執(zhí)行連接后的基本塊。如果遇到未翻譯的代碼塊,則將下次要執(zhí)行的基本塊的首地址賦給SPC,轉(zhuǎn)步驟2,則開(kāi)始新一輪的請(qǐng)求、翻譯、執(zhí)行過(guò)程。直到任務(wù)結(jié)束,轉(zhuǎn)步驟5。5、程序運(yùn)行結(jié)束,退出程序,客戶端和服務(wù)端釋放各自的內(nèi)存資源等。當(dāng)程序正常結(jié)束,返回翻譯器后,客戶端釋放本地翻譯代碼緩存區(qū),向服務(wù)端發(fā)送結(jié)束類型消息,并且結(jié)束客戶端進(jìn)程。服務(wù)端在接收到結(jié)束消息后,釋放服務(wù)端翻譯代碼緩存區(qū),刪除源程序二進(jìn)制代碼。至此一次完整的受限系統(tǒng)運(yùn)行異構(gòu)平臺(tái)二進(jìn)制代碼過(guò)程全部完成。權(quán)利要求1、一種用于受限系統(tǒng)的分布式動(dòng)態(tài)二進(jìn)制翻譯方法,其特征在于包括如下步驟1)受限系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯器的客戶端加載異構(gòu)平臺(tái)的二進(jìn)制代碼,完成初始化,并通過(guò)網(wǎng)絡(luò)連接與受限系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯器的服務(wù)端連接,發(fā)送二進(jìn)制代碼和同步信息;服務(wù)端根據(jù)此二進(jìn)制代碼所屬指令集平臺(tái),初始化翻譯器服務(wù)端對(duì)應(yīng)的翻譯模塊,完成服務(wù)端的初始化;2)客戶端在執(zhí)行一個(gè)未翻譯過(guò)的基本塊時(shí),發(fā)送翻譯請(qǐng)求至服務(wù)端;服務(wù)端接收到客戶端的翻譯請(qǐng)求后,先在已翻譯代碼緩存中查找是否存在已經(jīng)翻譯過(guò)的代碼塊,如果存在,則對(duì)代碼塊做修改后,將代碼塊發(fā)送回客戶端;否則開(kāi)始一個(gè)翻譯過(guò)程,翻譯完成后將起始地址和翻譯后的代碼塊存入服務(wù)端的已翻譯代碼緩存區(qū)中,并將翻譯后的代碼塊傳送給客戶端;3)在服務(wù)端完成翻譯前,客戶端一直處于等待狀態(tài),直到服務(wù)端翻譯過(guò)程完成,通知客戶端后,客戶端開(kāi)始接收翻譯后的代碼塊,將其存入客戶端本地代碼緩存區(qū)中;4)客戶端在接收到翻譯后的代碼塊后,開(kāi)始對(duì)其做基本塊連接,保存機(jī)器運(yùn)行狀態(tài),然后開(kāi)始執(zhí)行連接后的基本塊;如果遇到未翻譯的代碼塊,則開(kāi)始新一輪的請(qǐng)求、翻譯、執(zhí)行過(guò)程;5)程序運(yùn)行結(jié)束,退出程序,客戶端和服務(wù)端釋放各自的內(nèi)存資源。全文摘要本發(fā)明涉及一種用于受限系統(tǒng)的分布式動(dòng)態(tài)二進(jìn)制翻譯方法,對(duì)傳統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯器做改進(jìn),將翻譯器的翻譯和執(zhí)行模塊做劃分,分別安置于服務(wù)端和受限客戶端,服務(wù)端完成翻譯功能,客戶端完成執(zhí)行功能。客戶端在執(zhí)行異構(gòu)平臺(tái)代碼時(shí),向服務(wù)端發(fā)送翻譯請(qǐng)求,服務(wù)端翻譯完成后,將翻譯后代碼返回給客戶端,由客戶端執(zhí)行此代碼,直至遇到未翻譯的代碼,重新開(kāi)始一輪請(qǐng)求,翻譯,執(zhí)行的過(guò)程。本發(fā)明通過(guò)劃分翻譯模塊和執(zhí)行模塊,大大減輕了瘦客戶端執(zhí)行異構(gòu)代碼的負(fù)擔(dān),使動(dòng)態(tài)二進(jìn)制翻譯同樣使用于瘦客戶端。本發(fā)明不受限于任何特定的硬件平臺(tái),適用于一切受限系統(tǒng)的分布式二進(jìn)制翻譯器,并能取得理想的效果。文檔編號(hào)G06F9/45GK101504613SQ20091004747公開(kāi)日2009年8月12日申請(qǐng)日期2009年3月12日優(yōu)先權(quán)日2009年3月12日發(fā)明者孫廷韜,凌林,梁阿磊,管海兵,超褚申請(qǐng)人:上海交通大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
抚州市| 榆社县| 柏乡县| 宿松县| 勐海县| 湟中县| 海阳市| 元江| 饶平县| 沧州市| 句容市| 翁源县| 石嘴山市| 靖西县| 即墨市| 贵定县| 拉萨市| 阿拉善右旗| 微博| 克东县| 桑植县| 南木林县| 县级市| 布尔津县| 普兰店市| 敦煌市| 湾仔区| 丰原市| 保德县| 丁青县| 剑川县| 泾阳县| 盐源县| 嘉黎县| 福泉市| 麟游县| 沙坪坝区| 陈巴尔虎旗| 北安市| 昌图县| 寿阳县|