專利名稱:一種虛擬機(jī)的單棧設(shè)計(jì)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域與虛擬機(jī)技術(shù)領(lǐng)域,特別涉及一種虛擬機(jī)的單棧式設(shè)計(jì)方法,可簡化棧式虛擬機(jī)的設(shè)計(jì)及實(shí)現(xiàn)復(fù)雜度,簡化虛擬機(jī)指令集體系結(jié)構(gòu),易于程序開 發(fā)和移植。
背景技術(shù):
目前,虛擬機(jī)系統(tǒng)的設(shè)計(jì)方法多采用多棧形式,這類虛擬機(jī)設(shè)計(jì)和實(shí)現(xiàn)的復(fù)雜度 高,實(shí)現(xiàn)的功能雖強(qiáng),但需要運(yùn)行在資源豐富的支撐平臺(tái)上。如果運(yùn)行在資源受限的嵌入式 計(jì)算環(huán)境下,其功能一般會(huì)受到嚴(yán)重影響;而此時(shí)如果不使用其提供的復(fù)雜功能,又造成虛 擬機(jī)資源的浪費(fèi)。此外,這類虛擬機(jī)一般指令集規(guī)模龐大,使用這類虛擬機(jī)開發(fā)程序成本較 高。針對這一問題,需要設(shè)計(jì)一種簡化虛擬機(jī)設(shè)計(jì)和實(shí)現(xiàn)的方法。本發(fā)明實(shí)現(xiàn)一種虛擬機(jī) 的單棧設(shè)計(jì)方法,對結(jié)構(gòu)復(fù)雜的多棧設(shè)計(jì)所實(shí)現(xiàn)功能進(jìn)行規(guī)約簡化,在保證虛擬機(jī)棧式運(yùn) 行功能的前提下,以簡化的單棧形式實(shí)現(xiàn)。此外,為基于單棧設(shè)計(jì)的虛擬機(jī)系統(tǒng)提供簡化的 指令集系統(tǒng),以降低應(yīng)用程序開發(fā)的成本。單棧設(shè)計(jì)的虛擬機(jī)系統(tǒng)更適合在資源受限的嵌 入式計(jì)算環(huán)境中應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的目的是針對多棧虛擬機(jī)不適于在資源受限的嵌入式環(huán)境中應(yīng)用的問題, 提供一種虛擬機(jī)的單棧設(shè)計(jì)方法,及規(guī)約簡化的虛擬機(jī)指令集。單棧設(shè)計(jì)的虛擬機(jī)系統(tǒng)更 易于在嵌入式環(huán)境中運(yùn)行,程序開發(fā)成本也更低。本發(fā)明實(shí)現(xiàn)一種虛擬機(jī)的單棧設(shè)計(jì)方法,包括使用一個(gè)指令寄存器指示當(dāng)前指令 地址;二個(gè)指令區(qū)段寄存器,指示指令區(qū)段首尾地址;二個(gè)堆區(qū)段寄存器,指示堆區(qū)段首尾 地址;二個(gè)棧區(qū)段寄存器,指示棧區(qū)段首尾地址。指令區(qū)段,用于存儲(chǔ)所述虛擬機(jī)可執(zhí)行程 序的指令集合;堆區(qū)段用于存儲(chǔ)所述虛擬機(jī)可執(zhí)行程序在運(yùn)行過程中產(chǎn)生的所有變量信 息;單棧區(qū)段以一個(gè)單棧形式實(shí)現(xiàn)所述虛擬機(jī)指令執(zhí)行的工作棧、所述虛擬機(jī)函數(shù)調(diào)用棧、 變量地址存儲(chǔ)棧和變量引用棧。本發(fā)明的工作流程和步驟為1、所述虛擬機(jī)初始化;2、所述虛擬機(jī)裝載應(yīng)用程序;3、執(zhí)行引擎工作,載入并識別指令,并予以執(zhí)行;4、指令執(zhí)行過程中產(chǎn)生的工作棧、所述虛擬機(jī)函數(shù)調(diào)用棧、變量地址存儲(chǔ)棧和變 量引用棧均由所述虛擬機(jī)的單棧實(shí)現(xiàn);5、指令執(zhí)行過程中產(chǎn)生的變量值存儲(chǔ)在堆區(qū)段中;6、通過單棧調(diào)用可選的堆管理模塊,實(shí)現(xiàn)所述虛擬機(jī)堆區(qū)段的管理;7、通過單棧調(diào)用可選的本地方法,與支撐操作系統(tǒng)通信;8、通過單棧調(diào)用可選通信模塊,實(shí)現(xiàn)網(wǎng)絡(luò)通信;
9、通過單棧調(diào)用可選數(shù)值計(jì)算模塊,實(shí)現(xiàn)數(shù)值計(jì)算;10、最后執(zhí)行應(yīng)用程序的停機(jī)指令,結(jié)束虛擬機(jī)系統(tǒng)。本發(fā)明實(shí)現(xiàn)一種虛擬機(jī)的單棧設(shè)計(jì)方法,可以實(shí)現(xiàn)指令集規(guī)模簡約、體系結(jié)構(gòu)簡 單、開發(fā)成本低、方便移植、功能全面的單棧虛擬機(jī)系統(tǒng),易于在嵌入式計(jì)算環(huán)境下部署和 運(yùn)行。
圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)框圖;圖中1為虛擬機(jī)初始化模塊,2為虛擬機(jī)裝載器 模塊,3為內(nèi)存映像,4為指令區(qū)段,5為堆區(qū)段,6為單棧區(qū)段,7為虛擬機(jī)執(zhí)行引擎,8為指 令寄存器,9為指令區(qū)段首寄存器,10為指令區(qū)段尾寄存器,11為堆區(qū)段首寄存器,12為堆 區(qū)段尾寄存器,13為單棧區(qū)段首寄存器,14為單棧區(qū)段尾寄存器,15為解釋器,16為本地 (I/O)模塊,17為堆管理模塊,18為通信模塊,19為數(shù)值計(jì)算模塊,20為宿主支撐平臺(tái)。
具體實(shí)施方式
結(jié)合實(shí)施例進(jìn)一步說明本發(fā)明的結(jié)構(gòu)方案和工作過程。如圖1所示,所述單棧虛擬機(jī)系統(tǒng)包括虛擬機(jī)初始化模塊1,虛擬機(jī)裝載器模塊2, 內(nèi)存映像3,指令區(qū)段4,堆區(qū)段5,單棧區(qū)段6,虛擬機(jī)執(zhí)行引擎7,指令寄存器8,指令區(qū)段 首寄存器9,指令區(qū)段尾寄存器10,堆區(qū)段首寄存器11,堆區(qū)段尾寄存器12,單棧區(qū)段首寄 存器13,單棧區(qū)段尾寄存器14,解釋器15,本地(I/O)模塊16,堆管理模塊17,通信模塊18, 數(shù)值計(jì)算模塊19,宿主支撐平臺(tái)20。所述虛擬機(jī)的核心是虛擬機(jī)執(zhí)行引擎7,它通過單棧區(qū) 段6簡化了虛擬機(jī)設(shè)計(jì)和實(shí)現(xiàn)的復(fù)雜度,并通過指令區(qū)段4、堆區(qū)段5與單棧區(qū)段6實(shí)現(xiàn)虛 擬機(jī)系統(tǒng)的功能。如圖1所示,本發(fā)明的工作流程包括以下步驟(1)所述虛擬機(jī)初始化,包括在內(nèi)存映像中建立指令區(qū)段4,堆區(qū)段5和單棧區(qū)段 6 ;同時(shí)初始化虛擬機(jī)寄存器,包括指令寄存器8,指向零地址;指令區(qū)段首寄存器9,指向指 令區(qū)段首;指令區(qū)段尾寄存器10,指向指令區(qū)段尾;堆區(qū)段首寄存器11,指向堆區(qū)段首;堆 區(qū)段尾寄存器12,指向堆區(qū)段尾;單棧區(qū)段首寄存器13,指向單棧區(qū)段首;單棧區(qū)段尾寄存 器14,指向單棧區(qū)段尾;(2)所述虛擬機(jī)裝載應(yīng)用程序,虛擬機(jī)裝載器模塊2讀取虛擬機(jī)可執(zhí)行程序,進(jìn)行 安全檢測,然后將其載入指令區(qū)段4 ;(3)虛擬機(jī)執(zhí)行引擎7工作,通過指令寄存器8載入應(yīng)用程序指令,由解釋器15予 以解釋和執(zhí)行;此后步驟(4)-(9)循環(huán),直到(10);(4)指令執(zhí)行過程中產(chǎn)生的工作棧、所述虛擬機(jī)函數(shù)調(diào)用棧、變量地址存儲(chǔ)棧和變 量引用棧均由所述虛擬機(jī)的單棧區(qū)段6實(shí)現(xiàn);(5)指令執(zhí)行過程中產(chǎn)生的變量值存儲(chǔ)在堆區(qū)段5中;(6)通過單棧區(qū)段6調(diào)用可選的堆管理模塊17,實(shí)現(xiàn)所述虛擬機(jī)堆區(qū)段的管理;(7)通過單棧區(qū)段6調(diào)用可選的本地(I/O)模塊16,與宿主支撐平臺(tái)20通信;(8)通過單棧區(qū)段6調(diào)用可選通信模塊18,實(shí)現(xiàn)網(wǎng)絡(luò)通信;(9)通過單棧區(qū)段6調(diào)用可選數(shù)值計(jì)算模塊19,實(shí)現(xiàn)數(shù)值計(jì)算;
(10)最后執(zhí)行應(yīng)用程序的停機(jī)指令,結(jié)束虛擬機(jī)系統(tǒng)。虛擬機(jī)的單棧設(shè)計(jì)方法可以實(shí)現(xiàn)指令集規(guī)模簡化、體系結(jié)構(gòu)簡單、開發(fā)成本低、方便移植、功能全面的單棧虛擬機(jī)系統(tǒng),易于在嵌入式計(jì)算環(huán)境下部署和運(yùn)行。
權(quán)利要求
一種虛擬機(jī)的單棧設(shè)計(jì)方法,其特征在于該方法包括以下步驟1)虛擬機(jī)在內(nèi)存映像中構(gòu)建指令區(qū)段,存儲(chǔ)所述虛擬機(jī)可執(zhí)行程序的指令集合;2)虛擬機(jī)在內(nèi)在映像中構(gòu)建堆區(qū)段,存儲(chǔ)所述虛擬機(jī)可執(zhí)行程序在運(yùn)行過程中產(chǎn)生的所有變量信息;3)虛擬機(jī)在內(nèi)在映像中構(gòu)建單棧區(qū)段,以一個(gè)單棧形式實(shí)現(xiàn)所述虛擬機(jī)指令執(zhí)行的工作棧、函數(shù)調(diào)用棧、變量地址存儲(chǔ)棧和變量引用棧。
全文摘要
一種虛擬機(jī)的單棧設(shè)計(jì)方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。所述虛擬機(jī)構(gòu)建的內(nèi)存映像中包括指令區(qū),用于存儲(chǔ)和識別所述虛擬機(jī)指令集;堆區(qū),存儲(chǔ)所述虛擬機(jī)運(yùn)行過程中產(chǎn)生的所有變量值;棧區(qū),使用單獨(dú)的棧區(qū)作為所述虛擬機(jī)指令執(zhí)行的工作區(qū)和函數(shù)調(diào)用棧,同時(shí)也存儲(chǔ)所述虛擬機(jī)產(chǎn)生的變量地址。單棧設(shè)計(jì)方法簡化了棧式虛擬機(jī)的設(shè)計(jì)復(fù)雜度,簡化所述虛擬機(jī)的指令集規(guī)模,在保證程序可移植性的前提下降低程序開發(fā)成本,適用于具有嵌入式計(jì)算環(huán)境的多種平臺(tái)。
文檔編號G06F9/455GK101833471SQ20101016537
公開日2010年9月15日 申請日期2010年5月7日 優(yōu)先權(quán)日2010年5月7日
發(fā)明者徐野 申請人:沈陽理工大學(xué)