專利名稱:應(yīng)用程序的運(yùn)行方法、模擬器、宿主機(jī)及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別涉及一種應(yīng)用程序的運(yùn)行方法、模擬器、宿主機(jī)及系 統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的發(fā)展,出現(xiàn)了不同的計(jì)算機(jī)系統(tǒng)架構(gòu),應(yīng)用程序在每種計(jì)算機(jī) 系統(tǒng)架構(gòu)下運(yùn)行時,都需要當(dāng)前計(jì)算機(jī)系統(tǒng)架構(gòu)執(zhí)行對應(yīng)的機(jī)器指令,但由于不同系統(tǒng)架 構(gòu)上可執(zhí)行的機(jī)器指令不同,從而造成了應(yīng)用程序的不通用性。如ARM (Advanced RISC Machines,微處理器)架構(gòu)中的應(yīng)用程序無法在X86系統(tǒng)中直接運(yùn)行。為了解決應(yīng)用程序的不通用性問題,現(xiàn)有技術(shù)在運(yùn)行應(yīng)用程序時,采用模擬器的 方式,通過模擬(仿真)技術(shù)來運(yùn)行原本不能在當(dāng)前宿主機(jī)上運(yùn)行的應(yīng)用程序。其工作原 理是首先進(jìn)行系統(tǒng)調(diào)用,即由模擬器先獲取應(yīng)用程序的模擬器原語,根據(jù)該模擬器原語加 載相應(yīng)模擬器動態(tài)鏈接庫中的指令集合,此時的指令集合為模擬器指令集合,一條模擬器 原語對應(yīng)多條模擬器指令;模擬器將該模擬器指令集合轉(zhuǎn)換為宿主機(jī)指令集合,然后發(fā)送 給宿主機(jī),由宿主機(jī)執(zhí)行轉(zhuǎn)換后的宿主機(jī)指令集合,從而實(shí)現(xiàn)在不同架構(gòu)中運(yùn)行應(yīng)用程序 的目的。在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺點(diǎn)現(xiàn)有技術(shù)中的應(yīng)用程序在運(yùn)行時,由于模擬器原語對應(yīng)多條模擬器指令,因此將 模擬器指令轉(zhuǎn)換為宿主機(jī)指令需要耗費(fèi)大量的系統(tǒng)資源,從而使系統(tǒng)損耗非常大,導(dǎo)致應(yīng) 用程序運(yùn)行的效率較真實(shí)的系統(tǒng)有了大幅度的降低,使得用戶體驗(yàn)較差。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種應(yīng)用程序的運(yùn)行方法、模擬器、宿主機(jī)及系統(tǒng)。解決了現(xiàn) 有技術(shù)中應(yīng)用程序在運(yùn)行過程中的系統(tǒng)損耗較大,應(yīng)用程序的運(yùn)行效率不高的問題,所述 技術(shù)方案如下—方面,本發(fā)明實(shí)施例提供了一種應(yīng)用程序的運(yùn)行方法,所述方法包括獲取模擬器中的應(yīng)用程序?qū)?yīng)的模擬器原語;將所述模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語,并將所述宿主機(jī)原語發(fā)送給宿主 機(jī),以便所述宿主機(jī)執(zhí)行所述宿主機(jī)原語。另一方面,本發(fā)明實(shí)施例提供了一種模擬器,所述模擬器包括獲取模塊,用于獲取所述模擬器中的應(yīng)用程序?qū)?yīng)的模擬器原語;轉(zhuǎn)換模塊,用于將所述獲取模塊獲取的所述模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原 語;發(fā)送模塊,用于將所述轉(zhuǎn)換模塊轉(zhuǎn)換得到的所述宿主機(jī)原語發(fā)送給宿主機(jī),以便 所述宿主機(jī)執(zhí)行所述宿主機(jī)原語。另一方面,本發(fā)明實(shí)施例還提供了一種應(yīng)用程序的運(yùn)行方法,所述方法包括
接收模擬器在獲取模擬器原語后將所述模擬器原語進(jìn)行轉(zhuǎn)換得到的宿主機(jī)原 語;執(zhí)行接收到的所述宿主機(jī)原語。另一方面,本發(fā)明實(shí)施例還提供了一種宿主機(jī),所述宿主機(jī)包括接收模塊,用于接收模擬器在獲取模擬器原語后將所述模擬器原語進(jìn)行轉(zhuǎn)換得到 的宿主機(jī)原語;執(zhí)行模塊,用于執(zhí)行所述接收模塊接收的所述宿主機(jī)原語。另一方面,本發(fā)明實(shí)施例還提供了一種應(yīng)用程序的運(yùn)行系統(tǒng),所述系統(tǒng)包括模擬 器和宿主機(jī)所述模擬器如上述模擬器,所述宿主機(jī)如上述宿主機(jī)。本發(fā)明實(shí)施例提供的技術(shù)方案的有益效果是通過啟動模擬器中的應(yīng)用程序并獲取模擬器原語,將模擬器原語轉(zhuǎn)換為宿主機(jī)原 語并發(fā)送給宿主機(jī),由宿主機(jī)執(zhí)行該宿主機(jī)原語,減少了從模擬器指令集合向宿主機(jī)指令 集合轉(zhuǎn)換的過程,由于只進(jìn)行了一次原語的轉(zhuǎn)換和傳遞,從而降低應(yīng)用程序在運(yùn)行過程中 的系統(tǒng)損耗,提高應(yīng)用程序運(yùn)行的效率。
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。圖1是本發(fā)明實(shí)施例一提供的應(yīng)用程序的運(yùn)行方法流程圖;圖2是本發(fā)明實(shí)施例二提供的應(yīng)用程序的運(yùn)行方法流程圖;圖3是本發(fā)明實(shí)施例三提供的第一種模擬器結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例三提供的第二種模擬器結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例三提供的第三種模擬器結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例四提供的第一種宿主機(jī)結(jié)構(gòu)示意圖;圖7是本發(fā)明實(shí)施例四提供的第二種宿主機(jī)結(jié)構(gòu)示意圖;圖8是本發(fā)明實(shí)施例五提供的應(yīng)用程序的運(yùn)行系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方 式作進(jìn)一步地詳細(xì)描述。實(shí)施例一參見圖1,本發(fā)明實(shí)施例提供了一種應(yīng)用程序的運(yùn)行方法,該方法流程具體如下101 獲取模擬器中的應(yīng)用程序?qū)?yīng)的模擬器原語;具體地,先啟動模擬器中的應(yīng)用程序,可以在應(yīng)用程序啟動時或者應(yīng)用程序運(yùn)行 的過程中獲取應(yīng)用程序?qū)?yīng)的模擬器原語。102 將該模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語;
針對該步驟,在將該模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語之前,先判斷該模擬器 原語是否能轉(zhuǎn)換為宿主機(jī)原語,如果能,則執(zhí)行將該模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語 的步驟。判斷的方式為將該模擬器原語與原語匹配表進(jìn)行匹配如果該模擬器原語與原語匹配表相匹配,則判斷該模擬器原語能轉(zhuǎn)換為宿主機(jī)原 語;如果該模擬器原語與原語匹配表不相匹配,則判斷該模擬器原語不能轉(zhuǎn)換為宿主 機(jī)原語。其中,將能轉(zhuǎn)換的模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語,轉(zhuǎn)換的具體方式為將模 擬器坐標(biāo)系轉(zhuǎn)換為宿主機(jī)坐標(biāo)系,根據(jù)該宿主機(jī)坐標(biāo)系對模擬器原語中的參數(shù)進(jìn)行修改, 得到宿主機(jī)原語。103 將該宿主機(jī)原語發(fā)送給宿主機(jī),以便宿主機(jī)執(zhí)行該宿主機(jī)原語。進(jìn)一步地,在宿主機(jī)執(zhí)行該宿主機(jī)原語之后,還接收宿主機(jī)發(fā)送的返回值,該返回 值是由宿主機(jī)接收到宿主機(jī)原語,并根據(jù)宿主機(jī)原語加載宿主機(jī)動態(tài)鏈接庫中對應(yīng)的宿主 機(jī)指令集合后,執(zhí)行該宿主機(jī)指令集合而得到的。本發(fā)明實(shí)施例提供的方法,通過啟動模擬器中的應(yīng)用程序并獲取模擬器原語,將 模擬器原語轉(zhuǎn)換為宿主機(jī)原語并發(fā)送給宿主機(jī),由宿主機(jī)執(zhí)行該宿主機(jī)原語,減少了從模 擬器指令集合向宿主機(jī)指令集合轉(zhuǎn)換的過程,由于只進(jìn)行了一次原語的轉(zhuǎn)換和傳遞,從而 降低應(yīng)用程序在運(yùn)行過程中的系統(tǒng)損耗,提高應(yīng)用程序運(yùn)行的效率。實(shí)施例二本發(fā)明實(shí)施例提供了一種應(yīng)用程序的運(yùn)行方法,由于應(yīng)用程序運(yùn)行的過程當(dāng)中需 要執(zhí)行原語,在不同架構(gòu)的系統(tǒng)中,有很大一部分的原語是相同的,或是可以簡單轉(zhuǎn)換的, 如繪圖中的繪制點(diǎn)、線、矩形等的原語,在不同架構(gòu)下的命令及參數(shù)有可能是一致的。由此, 本發(fā)明通過模擬器在獲取應(yīng)用程序的模擬器原語后,經(jīng)過簡單的轉(zhuǎn)換發(fā)送給宿主機(jī),由宿 主機(jī)執(zhí)行該宿主機(jī)原語,可大幅減少模擬器指令集合轉(zhuǎn)換的系統(tǒng)消耗。參見圖2,方法流程 具體如下201 獲取模擬器中的應(yīng)用程序?qū)?yīng)的模擬器原語,并判斷該模擬器原語是否能轉(zhuǎn) 換為宿主機(jī)原語;具體地,先啟動模擬器中的應(yīng)用程序,可以在應(yīng)用程序啟動時或者應(yīng)用程序運(yùn)行 的過程中獲取應(yīng)用程序?qū)?yīng)的模擬器原語。本發(fā)明實(shí)施例不對獲取模擬器原語的方式進(jìn)行 具體限定,可在模擬器啟動模擬器中的應(yīng)用程序后,通過調(diào)用模擬器動態(tài)鏈接庫,獲取模擬 器原語。模擬器獲取到該模擬器原語后,根據(jù)該模擬器原語與原語匹配表判斷該模擬器原 語是否能轉(zhuǎn)換為宿主機(jī)原語如果該模擬器原語與原語匹配表相匹配,則判斷該模擬器原語能轉(zhuǎn)換為宿主機(jī)原 語;如果該模擬器原語與原語匹配表不相匹配,則判斷該模擬器原語不能轉(zhuǎn)換為宿主 機(jī)原語。當(dāng)該模擬器原語能轉(zhuǎn)換為宿主機(jī)原語時,按照本發(fā)明實(shí)施例的后續(xù)步驟對其進(jìn)行處理。當(dāng)該模擬器原語不能轉(zhuǎn)換為宿主機(jī)原語時,加載模擬器動態(tài)鏈接庫中對應(yīng)的指令集合,將該模擬器原語對應(yīng)的指令集合轉(zhuǎn)換為宿主機(jī)指令集合,由宿主機(jī)直接執(zhí)行該宿主 機(jī)指令集合。由于這種情況與現(xiàn)有技術(shù)中的模擬器工作原理相同,在此不再加以贅述。其中,本發(fā)明實(shí)施例不對原語匹配表進(jìn)行具體限定。該原語匹配表是模擬器擬定 的,并根據(jù)不同架構(gòu)不同系統(tǒng)的特征動態(tài)的進(jìn)行調(diào)整。以在Windows XP操作系統(tǒng)中啟用Windows Mobile模擬器的應(yīng)用場景進(jìn)行說明。 先在Windows Mobile模擬器中啟動某一個繪圖應(yīng)用程序,并要在Windows Mobile模擬器 的顯示屏幕上繪制一個橢圓。繪圖應(yīng)用程序需要調(diào)用Windows Mobile模擬器中的繪制橢 圓的系統(tǒng)調(diào)用,即繪圖原語 B00L Ellipse (HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect)。因此,調(diào)用Windows Mobile模擬器動態(tài)鏈接庫,得到繪 圖原語,此時,Windows Mobile模擬器通過hook(掛鉤)等技術(shù)獲取該繪圖原語,并將該繪 圖原語與原語匹配表進(jìn)行匹配,判斷得出該繪圖原語能轉(zhuǎn)換為Windows XP宿主機(jī)原語。其 中,本發(fā)明實(shí)施例僅以通過hook (掛鉤)等技術(shù)獲取繪圖原語為例,不對模擬器獲取模擬器 原語的技術(shù)進(jìn)行具體限定。202 如果判斷出該模擬器原語能轉(zhuǎn)換為宿主機(jī)原語,則將該模擬器原語轉(zhuǎn)換為對 應(yīng)的宿主機(jī)原語;其中,原語轉(zhuǎn)換的方式為將模擬器坐標(biāo)系轉(zhuǎn)換為宿主機(jī)坐標(biāo)系;根據(jù)宿主機(jī)坐標(biāo)系對該模擬器原語中的參數(shù)進(jìn)行修改,得到宿主機(jī)原語。以上述在Windows XP操作系統(tǒng)中啟用Windows Mobile模擬器的應(yīng)用場景進(jìn)行 說明。獲取的繪圖原語不加載相應(yīng)Windows Mobile模擬器動態(tài)鏈接庫中的指令集合,而 是先進(jìn)行原語轉(zhuǎn)換,即將該繪圖原語中的坐標(biāo)進(jìn)行轉(zhuǎn)換,對該繪圖原語中的參數(shù)進(jìn)行簡單 的修改。具體地,該繪圖原語中的坐標(biāo)為Windows Mobile模擬器顯示屏幕的坐標(biāo),可以通 過 B00L ClientToScreen (HWND hffnd, LPP0INT IpPoint)函數(shù),將其轉(zhuǎn)換為 Windows XP 顯 示屏幕的坐標(biāo)。從而可以根據(jù)Windows XP顯示屏幕的坐標(biāo)對該繪圖原語中的nLeftRect、 nTopRect、nRightRect、nBottomRect 四個參數(shù)進(jìn)行修改,進(jìn)而達(dá)到了將 Windows Mobile 模 擬器繪圖原語轉(zhuǎn)換為Windows XP宿主機(jī)原語的目的。203 將轉(zhuǎn)換得到的宿主機(jī)原語發(fā)送給宿主機(jī);針對該步驟,本發(fā)明實(shí)施例不對發(fā)送宿主機(jī)原語的方式進(jìn)行具體限定,僅以上述 在Windows XP操作系統(tǒng)中啟用Windows Mobile模擬器的應(yīng)用場景為例進(jìn)行說明。將 Windows Mobile模擬器繪圖原語轉(zhuǎn)換為Windows XP宿主機(jī)原語后,通過socket或共享內(nèi) 存等方式,Windows Mobile模擬器將繪圖原語名稱El 1 ipse及修改后的參數(shù)newjidc、neW_ nLeftRect、new_nTopRect> new_nRightRect> new_nBottomRect 發(fā)送給 Windows XP 操作系 統(tǒng)。204 宿主機(jī)接收模擬器發(fā)送的宿主機(jī)原語,并執(zhí)行該宿主機(jī)原語,得到對應(yīng)的返 回值;其中,宿主機(jī)接收到模擬器發(fā)送的宿主機(jī)原語后,執(zhí)行該宿主機(jī)原語的具體步驟 為根據(jù)該宿主機(jī)原語調(diào)用宿主機(jī)動態(tài)鏈接庫并加載宿主機(jī)動態(tài)鏈接庫中對應(yīng)的宿主機(jī)指 令集合,即將宿主機(jī)原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)指令集合;宿主機(jī)執(zhí)行該宿主機(jī)指令集合并 得到對應(yīng)的返回值。
以上述在Windows XP操作系統(tǒng)中啟用Windows Mobile模擬器的應(yīng)用場景進(jìn)行 說明。Windows XP操作系統(tǒng)接收到相應(yīng)的繪圖原語后,執(zhí)行繪圖原語B00LE11 ipse (HDC new_hdc, int new_nLeftRect, int new_nTopRect, int new_nRightRect, int new_nBot tomRect),得到對應(yīng)的運(yùn)行結(jié)果,即對應(yīng)的返回值。205 將得到的對應(yīng)的返回值發(fā)送給模擬器。針對該步驟,本發(fā)明實(shí)施例不對發(fā)送返回值的方式進(jìn)行具體限定,僅以上述在 Windows XP操作系統(tǒng)中啟用Windows Mobile模擬器的應(yīng)用場景為例進(jìn)行說明。Windows XP操作系統(tǒng)得到對應(yīng)的返回值后,通過socket或共享內(nèi)存等方式,將該返回值發(fā)送給 Windows Mobile 模擬器。如果模擬器接收到返回值后需要繼續(xù)進(jìn)行原語操作,則重復(fù)執(zhí)行201到205。需要說明的是,本發(fā)明實(shí)施例提供的方法不僅僅適用于模擬器,還適用于虛擬機(jī) 等其他類似的場景,本發(fā)明實(shí)施例對此不作具體限定。本發(fā)明實(shí)施例提供的方法,通過模擬器啟動模擬器中的應(yīng)用程序并獲取模擬器原 語,將模擬器原語轉(zhuǎn)換為宿主機(jī)原語并發(fā)送給宿主機(jī),由宿主機(jī)執(zhí)行該宿主機(jī)原語,減少了 從模擬器指令集合向宿主機(jī)指令集合轉(zhuǎn)換的過程,由于只進(jìn)行了一次原語的轉(zhuǎn)換和傳遞, 從而降低應(yīng)用程序在運(yùn)行過程中的系統(tǒng)損耗,提高應(yīng)用程序運(yùn)行的效率。實(shí)施例三參見圖3,本發(fā)明實(shí)施例提供了一種模擬器,該模擬器包括獲取模塊301,用于獲取模擬器中的應(yīng)用程序?qū)?yīng)的模擬器原語;轉(zhuǎn)換模塊302,用于將獲取模塊301獲取的模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語;發(fā)送模塊303,用于將轉(zhuǎn)換模塊302轉(zhuǎn)換得到的宿主機(jī)原語發(fā)送給宿主機(jī),以便宿 主機(jī)執(zhí)行該宿主機(jī)原語。其中,轉(zhuǎn)換模塊302,具體用于將模擬器坐標(biāo)系轉(zhuǎn)換為宿主機(jī)坐標(biāo)系;根據(jù)宿主機(jī) 坐標(biāo)系對該模擬器原語中的參數(shù)進(jìn)行修改,得到宿主機(jī)原語。具體地,參見圖4,該模擬器,還包括判斷模塊304,用于判斷獲取模塊301獲取的模擬器原語是否能轉(zhuǎn)換為宿主機(jī)原 語;所述轉(zhuǎn)換模塊302在所述判斷模塊304判斷所述模擬器原語能轉(zhuǎn)換為宿主機(jī)原語后,將 所述模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語。進(jìn)一步地,判斷模塊304,具體用于將所述模擬器原語與原語匹配表進(jìn)行匹配如 果該模擬器原語與所述原語匹配表相匹配,則判斷該模擬器原語能轉(zhuǎn)換為宿主機(jī)原語;如 果該模擬器原語與所述原語匹配表不相匹配,則判斷該模擬器原語不能轉(zhuǎn)換為宿主機(jī)原語。另外,參見圖5,該模擬器,還包括接收模塊305,用于接收宿主機(jī)發(fā)送的返回值,該返回值是由宿主機(jī)接收到宿主機(jī) 原語,并根據(jù)該宿主機(jī)原語加載宿主機(jī)動態(tài)鏈接庫中對應(yīng)的宿主機(jī)指令集合后,執(zhí)行該宿 主機(jī)指令集合而得到的。本發(fā)明實(shí)施例提供的模擬器,通過啟動模擬器中的應(yīng)用程序并獲取模擬器原語, 將模擬器原語轉(zhuǎn)換為宿主機(jī)原語并發(fā)送給宿主機(jī),由宿主機(jī)執(zhí)行該宿主機(jī)原語,減少了從 模擬器指令集合向宿主機(jī)指令集合轉(zhuǎn)換的過程,由于只進(jìn)行了一次原語的轉(zhuǎn)換和傳遞,從而降低應(yīng)用程序在運(yùn)行過程中的系統(tǒng)損耗,提高應(yīng)用程序運(yùn)行的效率。實(shí)施例四參見圖6,本發(fā)明實(shí)施例提供了一種宿主機(jī),該宿主機(jī)包括接收模塊601,用于接收模擬器在獲取模擬器原語后將該模擬器原語進(jìn)行轉(zhuǎn)換得 到的宿主機(jī)原語;執(zhí)行模塊602,用于執(zhí)行接收模塊601接收的宿主機(jī)原語。其中,執(zhí)行模塊602,具體用于根據(jù)接收模塊601接收的宿主機(jī)原語加載宿主機(jī)動 態(tài)鏈接庫中對應(yīng)的宿主機(jī)指令集合,執(zhí)行該宿主機(jī)指令集合并得到返回值。進(jìn)一步地,參見圖7,該宿主機(jī),還包括發(fā)送模塊603,用于將執(zhí)行模塊602得到的返回值發(fā)送給模擬器。本發(fā)明實(shí)施例提供的宿主機(jī),通過接收模擬器發(fā)送的宿主機(jī)原語并執(zhí)行該宿主機(jī) 原語,得到對應(yīng)的返回值并發(fā)送給模擬器,減少了從模擬器指令集合向宿主機(jī)指令集合轉(zhuǎn) 換的過程,由于只進(jìn)行了一次原語的轉(zhuǎn)換和傳遞,從而降低應(yīng)用程序在運(yùn)行過程中的系統(tǒng) 損耗,提高應(yīng)用程序運(yùn)行的效率。實(shí)施例五參見圖8,本發(fā)明實(shí)施例提供了一種應(yīng)用程序的運(yùn)行系統(tǒng),該系統(tǒng)包括模擬器801 和宿主機(jī)802 模擬器801如上述實(shí)施例三提供的模擬器,宿主機(jī)802如上述實(shí)施例四提供的宿主機(jī)。綜上所述,本發(fā)明實(shí)施例通過啟動模擬器中的應(yīng)用程序并獲取模擬器原語,將模 擬器原語轉(zhuǎn)換為宿主機(jī)原語并發(fā)送給宿主機(jī),由宿主機(jī)執(zhí)行該宿主機(jī)原語,減少了從模擬 器指令集合向宿主機(jī)指令集合轉(zhuǎn)換的過程,由于只進(jìn)行了一次原語的轉(zhuǎn)換和傳遞,從而降 低應(yīng)用程序在運(yùn)行過程中的系統(tǒng)損耗,提高應(yīng)用程序運(yùn)行的效率。需要說明的是在應(yīng)用程序運(yùn)行的過程中,上述實(shí)施例提供的模擬器和宿主機(jī),僅 以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由 不同的功能模塊完成,即將模擬器和宿主機(jī)的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以 上描述的全部或者部分功能。另外,上述實(shí)施例提供的模擬器、宿主機(jī)與應(yīng)用程序的運(yùn)行方 法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。本發(fā)明實(shí)施例中的全部或部分步驟,可以利用軟件實(shí)現(xiàn),相應(yīng)的軟件程序可以存 儲在可讀取的存儲介質(zhì)中,如光盤或硬盤等。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和 原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
9
權(quán)利要求
1.一種應(yīng)用程序的運(yùn)行方法,其特征在于,所述方法包括獲取模擬器中的應(yīng)用程序?qū)?yīng)的模擬器原語;將所述模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語,并將所述宿主機(jī)原語發(fā)送給宿主機(jī),以 便所述宿主機(jī)執(zhí)行所述宿主機(jī)原語。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述模擬器原語轉(zhuǎn)換為對應(yīng)的宿 主機(jī)原語,具體包括將模擬器坐標(biāo)系轉(zhuǎn)換為宿主機(jī)坐標(biāo)系;根據(jù)所述宿主機(jī)坐標(biāo)系對所述模擬器原語中的參數(shù)進(jìn)行修改,得到所述宿主機(jī)原語。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述模擬器原語轉(zhuǎn)換為對應(yīng)的宿 主機(jī)原語之前,還包括判斷所述模擬器原語是否能轉(zhuǎn)換為宿主機(jī)原語,如果能,則執(zhí)行將所述模擬器原語轉(zhuǎn) 換為對應(yīng)的宿主機(jī)原語的步驟。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述判斷所述模擬器原語是否能轉(zhuǎn)換為 宿主機(jī)原語,具體包括將所述模擬器原語與原語匹配表進(jìn)行匹配如果所述模擬器原語與所述原語匹配表相匹配,則判斷所述模擬器原語能轉(zhuǎn)換為宿主 機(jī)原語;如果所述模擬器原語與所述原語匹配表不相匹配,則判斷所述模擬器原語不能轉(zhuǎn)換為 宿主機(jī)原語。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述宿主機(jī)原語發(fā)送給宿主機(jī),以 便所述宿主機(jī)執(zhí)行所述宿主機(jī)原語之后,還包括接收所述宿主機(jī)發(fā)送的返回值,所述返回值是由所述宿主機(jī)接收到所述宿主機(jī)原語, 并根據(jù)所述宿主機(jī)原語加載宿主機(jī)動態(tài)鏈接庫中對應(yīng)的宿主機(jī)指令集合后,執(zhí)行所述宿主 機(jī)指令集合而得到的。
6.一種模擬器,其特征在于,所述模擬器包括獲取模塊,用于獲取所述模擬器中的應(yīng)用程序?qū)?yīng)的模擬器原語;轉(zhuǎn)換模塊,用于將所述獲取模塊獲取的所述模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語;發(fā)送模塊,用于將所述轉(zhuǎn)換模塊轉(zhuǎn)換得到的所述宿主機(jī)原語發(fā)送給宿主機(jī),以便所述 宿主機(jī)執(zhí)行所述宿主機(jī)原語。
7.根據(jù)權(quán)利要求6所述的模擬器,其特征在于,所述轉(zhuǎn)換模塊,具體用于將模擬器坐標(biāo) 系轉(zhuǎn)換為宿主機(jī)坐標(biāo)系;根據(jù)所述宿主機(jī)坐標(biāo)系對所述模擬器原語中的參數(shù)進(jìn)行修改,得 到所述宿主機(jī)原語。
8.根據(jù)權(quán)利要求6所述的模擬器,其特征在于,所述模擬器,還包括判斷模塊,用于判斷所述獲取模塊獲取的所述模擬器原語是否能轉(zhuǎn)換為宿主機(jī)原語;所述轉(zhuǎn)換模塊在所述判斷模塊判斷所述模擬器原語能轉(zhuǎn)換為宿主機(jī)原語后,將所述模 擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語。
9.根據(jù)權(quán)利要求8所述的模擬器,其特征在于,所述判斷模塊,具體用于將所述模擬器 原語與原語匹配表進(jìn)行匹配如果所述模擬器原語與所述原語匹配表相匹配,則判斷所述 模擬器原語能轉(zhuǎn)換為宿主機(jī)原語;如果所述模擬器原語與所述原語匹配表不相匹配,則判斷所述模擬器原語不能轉(zhuǎn)換為宿主機(jī)原語。
10.根據(jù)權(quán)利要求6所述的模擬器,其特征在于,所述模擬器,還包括接收模塊,用于接收所述宿主機(jī)發(fā)送的返回值,所述返回值是由所述宿主機(jī)接收到所 述宿主機(jī)原語,并根據(jù)所述宿主機(jī)原語加載宿主機(jī)動態(tài)鏈接庫中對應(yīng)的宿主機(jī)指令集合 后,執(zhí)行所述宿主機(jī)指令集合而得到的。
11.一種應(yīng)用程序的運(yùn)行方法,其特征在于,所述方法包括接收模擬器在獲取模擬器原語后將所述模擬器原語進(jìn)行轉(zhuǎn)換得到的宿主機(jī)原語;執(zhí)行接收到的所述宿主機(jī)原語。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述執(zhí)行接收到的所述宿主機(jī)原語,具 體包括根據(jù)接收到的所述宿主機(jī)原語加載宿主機(jī)動態(tài)鏈接庫中對應(yīng)的宿主機(jī)指令集合,執(zhí)行 所述宿主機(jī)指令集合并得到返回值;相應(yīng)地,得到所述返回值之后,還包括將所述返回值發(fā)送給所述模擬器。
13.一種宿主機(jī),其特征在于,所述宿主機(jī)包括接收模塊,用于接收模擬器在獲取模擬器原語后將所述模擬器原語進(jìn)行轉(zhuǎn)換得到的宿 主機(jī)原語;執(zhí)行模塊,用于執(zhí)行所述接收模塊接收的所述宿主機(jī)原語。
14.根據(jù)權(quán)利要求13所述的宿主機(jī),其特征在于,所述執(zhí)行模塊,具體用于根據(jù)所述接 收模塊接收的所述宿主機(jī)原語加載宿主機(jī)動態(tài)鏈接庫中對應(yīng)的宿主機(jī)指令集合,執(zhí)行所述 宿主機(jī)指令集合并得到返回值;所述宿主機(jī),還包括發(fā)送模塊,用于將所述執(zhí)行模塊得到的所述返回值發(fā)送給所述模擬器。
15.一種應(yīng)用程序的運(yùn)行系統(tǒng),其特征在于,所述系統(tǒng)包括模擬器和宿主機(jī)所述模擬器如上述權(quán)利要求6至權(quán)利要求10中任一權(quán)利要求所述的模擬器,所述宿主 機(jī)如上述權(quán)利要求13或權(quán)利要求14所述的宿主機(jī)。
全文摘要
本發(fā)明公開了一種應(yīng)用程序的運(yùn)行方法、模擬器、宿主機(jī)及系統(tǒng),屬于計(jì)算機(jī)領(lǐng)域。所述方法包括獲取模擬器中的應(yīng)用程序?qū)?yīng)的模擬器原語;將模擬器原語轉(zhuǎn)換為對應(yīng)的宿主機(jī)原語,并將宿主機(jī)原語發(fā)送給宿主機(jī),以便宿主機(jī)執(zhí)行宿主機(jī)原語。所述模擬器包括獲取模塊、轉(zhuǎn)換模塊和發(fā)送模塊。所述方法包括接收模擬器在獲取模擬器原語后將模擬器原語進(jìn)行轉(zhuǎn)換得到的宿主機(jī)原語;執(zhí)行接收到的宿主機(jī)原語。所述宿主機(jī)包括接收模塊和執(zhí)行模塊。所述系統(tǒng)包括模擬器和宿主機(jī)。本發(fā)明通過獲取模擬器原語,將模擬器原語轉(zhuǎn)換為宿主機(jī)原語并發(fā)送給宿主機(jī)直接執(zhí)行,達(dá)到了降低應(yīng)用程序在運(yùn)行過程中的系統(tǒng)損耗、提高應(yīng)用程序運(yùn)行效率的效果。
文檔編號G06F9/455GK102141929SQ20101052684
公開日2011年8月3日 申請日期2010年10月21日 優(yōu)先權(quán)日2010年10月21日
發(fā)明者秦晉, 薛傳頌, 謝軍安, 郁明星, 黃晨 申請人:華為技術(shù)有限公司