欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

虛擬機調用本地接口的方法及裝置的制作方法

文檔序號:6424592閱讀:305來源:國知局
專利名稱:虛擬機調用本地接口的方法及裝置的制作方法
虛擬機調用本地接口的方法及裝置
技術領域
本發(fā)明涉及計算機技術,特別是涉及一種虛擬機調用本地接口的方法及裝置。背景技術
虛擬機(Virtual Machine)是運行在物理計算機上的一個應用程序,是通過相關的虛擬機軟件在物理計算機上所模擬出的計算機系統(tǒng),并像真正的計算機那樣工作。虛擬機可以分為Java虛擬機以及開源虛擬機等。在實際使用過程中,Java虛擬機借助Java指令集中本地調用的“本地接口特定指令”來實現(xiàn)內部運行的Java代碼與其它語言編寫的應用程序和庫進行交互,使得任意一個本地應用程序均能嵌入Java虛擬機中。“本地接口特定指令”是Java指令集中專門定義的 “本地編程接口,,特定指令,必須事先在Java指令集中專門定義。但是,Java指令集歸屬于Sim Microsystems公司,使用Java指令集涉及了著作權的問題,并且必須事先在Java指令集中進行定義,在調用本地應用程序的過程中非常地不方便,限制了虛擬機反應速度的提高。開源虛擬機大多沒有本地接口特定指令,例如VirtualGBA、Skyeye。這些開源虛擬機實際上是通過軟件去實現(xiàn)目標CPU (Central Processing Unit,中央處理器)的指令集、 存儲空間和寄存器等。某個開源虛擬機可以模擬ARM (Advanced RISC Machines)平臺以提供在計算機環(huán)境下的模擬實驗。目標CPU集成了中央處理器、存儲器和外設。外設可以是LCD (Liquid Crystal Display,液晶顯示器)控制器、輸入輸出設備和定時器等。例如,此開源虛擬機中的應用程序在訪問顯示屏時,應用程序會將內容直接寫入目標CPU的內存或寄存器中,而目標CPU的內存或寄存器對于虛擬機來說會映射至宿主機的內存中,進而虛擬機在一定時間內刷新顯示到顯示屏中。此開源虛擬機在模擬應用程序時需要將相應的操作與物理計算機中的設備結合起來進行模擬,大大降低了反應速度。

發(fā)明內容基于此,有必要提供一種能提高反應速度的虛擬機調用本地接口的方法。此外,還有必要提供一種能提高反應速度的虛擬機調用本地接口的裝置。一種虛擬機調用本地接口的方法,包括以下步驟載入指令;解釋所述指令以及指令參數(shù);判斷所述指令是否為調用指令,如果是,則判斷調用的目標地址是否為本地接口地址,若是,則讀取所述指令參數(shù);根據(jù)所述指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)。優(yōu)選地,還包括當所述指令不是調用指令或調用的目標地址不是本地接口地址時,解釋并執(zhí)行所述指令。優(yōu)選地,所述根據(jù)所述指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)的步驟之后還包括將所述本地接口函數(shù)的執(zhí)行結果存儲于所述指令參數(shù)中。優(yōu)選地,所述將所述本地接口函數(shù)的執(zhí)行結果存儲于所述的指令參數(shù)中的步驟之后還包括執(zhí)行返回指令的步驟。一種虛擬機調用本地接口的裝置,至少包括指令載入模塊,用于載入指令;指令解釋模塊,用于解釋所述指令以及指令參數(shù);判斷處理模塊,用于判斷所述指令是否為調用指令,如果是,則進一步判斷調用的目標地址是否為本地接口地址,若是,則讀取所述指令參數(shù);本地實現(xiàn)模塊,用于根據(jù)所述指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)。優(yōu)選地,還包括執(zhí)行模塊,用于當所述指令不是調用指令或調用的目標地址不是本地接口地址時解釋并執(zhí)行所述指令。優(yōu)選地,所述本地實現(xiàn)模塊包括本地執(zhí)行單元,用于讀取指令參數(shù),并根據(jù)所述指令參數(shù)執(zhí)行對應的本地接口函數(shù);結果存儲單元,用于將所述本地接口函數(shù)的執(zhí)行結果存儲于所述指令參數(shù)中。優(yōu)選地,所述本地實現(xiàn)模塊還包括返回執(zhí)行模塊,用于執(zhí)行返回指令。上述虛擬機調用本地接口的方法及裝置對于程序中需要進行本地調用的指令通過直接讀取該指令參數(shù)來執(zhí)行該指令,該方法的實現(xiàn)不依賴某種特定指令集,特別是不依賴他方有知識產權的指令集,從而使虛擬機調用本地接口的方法更靈活,不需要通過真實硬件進行指令參數(shù)的讀取以及執(zhí)行指令,極大地提高了反應速度。

圖1為一個實施例中虛擬機調用本地接口的方法的流程圖;圖2為一個實施例中虛擬機調用本地接口的裝置的結構示意圖;圖3為另一個實施例中虛擬機調用本地接口的裝置的結構示意圖;圖4為一個實施例中本地實現(xiàn)模塊的結構示意圖。
具體實施方式圖1示出了一個實施例中虛擬機調用本地接口的方法,包括以下步驟步驟S101,載入指令。本實施例中,應用程序在虛擬機中是以指令的形式表達的, 虛擬機通過執(zhí)行指令來實現(xiàn)應用程序的功能。對于函數(shù)調用,應用程序進入調用的函數(shù)時, 被編譯為調用指令,此時,將該函數(shù)所需要的參數(shù)放入堆?;螂S機存儲器中,進而產生指令完成指令的載入。
步驟S102,解釋指令以及指令參數(shù)。本實施例中,例如,對于“call gui_init”的指令,在虛擬機中是以“OxAB,”的形式出現(xiàn)的,因此經過解釋可以獲知,OxAB為call指令, Ox⑶,oxEF為gui_init函數(shù)的目標地址,即調用的目標地址。步驟S103,判斷指令是否為調用指令,如果是,則進入步驟S105,如果否,則進入步驟S106。本實施例中,判斷指令的類型是否為調用指令,如果是,則需要進入進一步的判斷,以獲知該指令所調用的目標地址是否為本地接口地址。步驟S105,判斷調用的目標地址是否為本地接口地址,若否,則進入步驟S106,若是,則進入步驟S107。本實施例中,本地調用可以是虛擬機對顯示屏、定時器、輸入輸出設備等外設的訪問,也可以是對物理計算機上其他本地應用程序的訪問,即對本地接口地址的訪問,例如,Java虛擬機中的源代碼為Java代碼,Java虛擬機是以Java代碼的形式運行所有指令的,物理計算機上為其它語言(如C語言)編寫的應用程序和庫,通過本地調用允許物理計算機中的應用程序和庫嵌入到Java虛擬機中,實現(xiàn)已有應用程序和庫支持Java代碼,而不必花費大量的時間與Java虛擬機的源代碼相鏈接,也不需要通過Java指令集等有知識產權的指令集來實現(xiàn)虛擬機的本地調用。步驟S106,解釋并執(zhí)行該指令。本實施例中,經過對該指令中目標地址的判斷可以獲知該指令的執(zhí)行不需要進行本地調用,因此通過虛擬機直接解釋并執(zhí)行該指令即可,正常運行該指令。步驟S107,讀取該指令參數(shù)。本實施例中,讀取該指令參數(shù)的步驟為通過虛擬機讀取該指令參數(shù)。從虛擬機的隨機存儲器或當前的堆棧中讀取執(zhí)行該指令所需要的指令參數(shù)。步驟S109,根據(jù)指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)。本實施例中,根據(jù)讀取到的指令參數(shù)虛擬機可以找到對應的本地接口函數(shù),進而跳轉執(zhí)行該本地接口函數(shù)。虛擬機在讀取所需的指令參數(shù)后直接跳轉執(zhí)行對應的本地接口函數(shù),大大地提高了虛擬機的應用程序訪問外設以及本地調用的速度,不需要進行事先定義以及依賴于JAVA指令集及其它類似的指令集,大大增強了虛擬機的靈活性。步驟Sl 10,將本地接口函數(shù)的執(zhí)行結果存儲于指令參數(shù)中,并執(zhí)行返回指令。本實施例中,將執(zhí)行結果存儲于調用該本地接口函數(shù)時所傳入的指令參數(shù)中,通過返回指令的執(zhí)行返回虛擬機的應用程序中繼續(xù)執(zhí)行其它指令。圖2示出了一個實施例中的虛擬機調用本地接口的裝置,包括指令載入模塊10、 指令解釋模塊30、判斷處理模塊50以及本地實現(xiàn)模塊70。指令載入模塊10,用于載入指令。本實施例中,應用程序在虛擬機中是以指令的形式表達的,虛擬機通過執(zhí)行指令來實現(xiàn)應用程序的功能。對于函數(shù)調用,應用程序進入調用的函數(shù)時,被指令載入模塊10編譯為調用指令,此時,指令載入模塊10將該函數(shù)所需要的參數(shù)放入堆?;螂S機存儲器中,進而產生指令完成指令的載入。指令解釋模塊30,用于解釋指令以及指令參數(shù)。本實施例中,例如,對于“call gui_init”的指令,在虛擬機中是以“OxAB,”的形式出現(xiàn)的,因此經過指令解釋模塊30解釋可以獲知,OxAB為call指令,Ox⑶,oxEF為gui_init函數(shù)的目標地址,即調用的目標地址。判斷處理模塊50,用于判斷指令是否為調用指令,如果是,則進一步驟判斷調用的目標地址是否為本地接口地址,若是,則讀取指令參數(shù)。本實施例中,判斷處理模塊50判斷指令的類型是否為調用指令,如果是,則需要進入進一步的判斷,以獲知該指令所調用的目標地址是否為本地接口地址。 本地調用可以是虛擬機對顯示屏、定時器、輸入輸出設備等外設的訪問,也可以是對物理計算機上其他本地應用程序的訪問,即對本地接口地址的訪問,例如,Java虛擬機中的源代碼為Java代碼,Java虛擬機是以Java代碼的形式運行所有指令的,物理計算機上為其它語言(如C語言)編寫的應用程序和庫,通過本地調用允許物理計算機中的應用程序和庫嵌入到Java虛擬機中,實現(xiàn)已有應用程序和庫支持Java代碼,而不必花費大量的時間與Java虛擬機的源代碼相鏈接,也不需要通過Java指令集等有知識產權的指令集來實現(xiàn)虛擬機的本地調用。 本地實現(xiàn)模塊70,用于根據(jù)指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)。本實施例中, 本地實現(xiàn)模塊70取該指令參數(shù)。從虛擬機的隨機存儲器或當前的堆棧中讀取執(zhí)行該指令所需要的指令參數(shù)。另一實施例中,如圖3所示,上述虛擬機調用本地接口的裝置還包括了執(zhí)行模塊 90,該執(zhí)行模塊90用于當指令不是調用指令或調用的目標地址不是本地接口地址時,解釋并執(zhí)行該指令。本實施例中,經過對該指令中目標地址的判斷可以獲知該指令的執(zhí)行不需要進行本地調用,因此通過執(zhí)行模塊90直接解釋并執(zhí)行該指令即可,正常運行該指令。在一個具體的實施例中,如圖4所示,上述虛擬機調用本地接口的裝置中本地實現(xiàn)模塊70包括本地執(zhí)行單元701以及結果存儲單元703。本地執(zhí)行單元701,用于讀取指令參數(shù),并根據(jù)指令參數(shù)執(zhí)行對應的本地接口函數(shù)。結果存儲單元703,用于將本地接口函數(shù)的執(zhí)行結果存儲于指令參數(shù)中。本實施例中,結果存儲單元703將執(zhí)行結果存儲于調用該本地接口函數(shù)時所傳入的指令參數(shù)中。其它實施例中,上述本地實現(xiàn)模塊70還包括了返回執(zhí)行模塊,該返回執(zhí)行模塊用于執(zhí)行返回指令。本實施例中,返回執(zhí)行模塊通過返回指令的執(zhí)行返回虛擬機的應用程序中繼續(xù)執(zhí)行其它指令。上述虛擬機調用本地接口的方法及裝置對于程序中需要進行本地調用的指令通過直接讀取該指令參數(shù)來執(zhí)行該指令,該方法的實現(xiàn)不依賴某種特定指令集,特別是不依賴他方有知識產權的指令集,從而使虛擬機調用本地接口的方法更靈活,不需要通過真實硬件進行指令參數(shù)的讀取以及執(zhí)行指令,極大地提高了反應速度。以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。
權利要求
1.一種虛擬機調用本地接口的方法,包括以下步驟 載入指令;解釋所述指令以及指令參數(shù);判斷所述指令是否為調用指令,如果是,則判斷調用的目標地址是否為本地接口地址, 若是,則讀取所述指令參數(shù);根據(jù)所述指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)。
2.根據(jù)權利要求1所述的虛擬機調用本地接口的方法,其特征在于,還包括當所述指令不是調用指令或調用的目標地址不是本地接口地址時,解釋并執(zhí)行所述指令。
3.根據(jù)權利要求1所述的虛擬機調用本地接口的方法,其特征在于,所述根據(jù)所述指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)的步驟之后還包括將所述本地接口函數(shù)的執(zhí)行結果存儲于所述指令參數(shù)中。
4.根據(jù)權利要求3所述的虛擬機調用本地接口的方法,其特征在于,所述將所述本地接口函數(shù)的執(zhí)行結果存儲于所述的指令參數(shù)中的步驟之后還包括執(zhí)行返回指令的步驟。
5.一種虛擬機調用本地接口的裝置,其特征在于,至少包括 指令載入模塊,用于載入指令;指令解釋模塊,用于解釋所述指令以及指令參數(shù);判斷處理模塊,用于判斷所述指令是否為調用指令,如果是,則進一步判斷調用的目標地址是否為本地接口地址,若是,則讀取所述指令參數(shù);本地實現(xiàn)模塊,用于根據(jù)所述指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)。
6.根據(jù)權利要求5所述的虛擬機調用本地接口的裝置,其特征在于,還包括執(zhí)行模塊,用于當所述指令不是調用指令或調用的目標地址不是本地接口地址時,解釋并執(zhí)行所述指令。
7.根據(jù)權利要求5所述的虛擬機調用本地接口的裝置,其特征在于,所述本地實現(xiàn)模塊包括本地執(zhí)行單元,用于讀取指令參數(shù),并根據(jù)所述指令參數(shù)執(zhí)行對應的本地接口函數(shù); 結果存儲單元,用于將所述本地接口函數(shù)的執(zhí)行結果存儲于所述指令參數(shù)中。
8.根據(jù)權利要求7所述的虛擬機調用本地接口的裝置,其特征在于,所述本地實現(xiàn)模塊還包括返回執(zhí)行模塊,用于執(zhí)行返回指令。
全文摘要
一種虛擬機調用本地接口的方法,包括以下步驟載入指令;解釋所述指令以及指令參數(shù);判斷所述指令是否為調用指令,如果是,則判斷調用的目標地址是否為本地接口地址,若是,則讀取所述指令參數(shù);根據(jù)所述指令參數(shù)跳轉執(zhí)行對應的本地接口函數(shù)。上述虛擬機調用本地接口的方法及裝置對于程序中需要進行本地調用的指令通過直接讀取該指令參數(shù)來執(zhí)行該指令,該方法的實現(xiàn)不依賴某種特定指令集,特別是不依賴他方有知識產權的指令集,從而使虛擬機調用本地接口的方法更靈活,不需要通過真實硬件進行指令參數(shù)的讀取以及執(zhí)行指令,極大地提高了反應速度。
文檔編號G06F9/48GK102193829SQ20111013237
公開日2011年9月21日 申請日期2011年5月20日 優(yōu)先權日2011年5月20日
發(fā)明者鐘衍徽 申請人:深圳市江波龍電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
吉水县| 天镇县| 弋阳县| 汶川县| 璧山县| 天峨县| 泸西县| 淮安市| 万州区| 浪卡子县| 五华县| 湖口县| 宜章县| 鹿邑县| 红桥区| 阿克苏市| 水城县| 曲周县| 河南省| 巧家县| 肥乡县| 民和| 宝山区| 日照市| 高邮市| 石台县| 靖州| 水城县| 贵定县| 罗定市| 汨罗市| 桦甸市| 霸州市| 龙里县| 宣化县| 进贤县| 舒兰市| 始兴县| 敖汉旗| 曲阳县| 新蔡县|