一種智能卡虛擬機(jī)及其實(shí)現(xiàn)方法
【專利摘要】本發(fā)明涉及一種智能卡虛擬機(jī)及其實(shí)現(xiàn)方法,屬于涉及智能卡虛擬機(jī)【技術(shù)領(lǐng)域】。本發(fā)明公開的智能卡虛擬機(jī),至少包括指令裝載器和指令解釋器,所述指令裝載器,持續(xù)地從虛擬機(jī)的可執(zhí)行文件中裝載指令,所述指令解釋器對(duì)裝載的指令進(jìn)行譯碼,判斷出該指令要進(jìn)行的操作,然后進(jìn)行指令的分發(fā),跳轉(zhuǎn)到指令對(duì)應(yīng)的操作處,直至所述可執(zhí)行文件中所有的指令執(zhí)行結(jié)束;其中,可執(zhí)行文件中存儲(chǔ)有指令和指令涉及到的操作數(shù)。本發(fā)明還公開了一種智能卡虛擬機(jī)實(shí)現(xiàn)方法。本申請(qǐng)技術(shù)方案與現(xiàn)有技術(shù)相比更加顯得簡(jiǎn)單而高效。
【專利說明】一種智能卡虛擬機(jī)及其實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及智能卡虛擬機(jī)【技術(shù)領(lǐng)域】,特別涉及一種智能卡虛擬機(jī)及其實(shí)現(xiàn)方法。【背景技術(shù)】
[0002]智能卡(Smart Card)業(yè)界還沒有標(biāo)準(zhǔn)的高級(jí)應(yīng)用接口,應(yīng)用開發(fā)者需要處理很低級(jí)的通信協(xié)議、存儲(chǔ)管理,和其它由專門的智能卡硬件所要求的瑣碎問題。當(dāng)今流行中的大多數(shù)智能卡應(yīng)用都是從頭開發(fā)的定制應(yīng)用,這是一個(gè)很費(fèi)時(shí)間的過程;通常要把一個(gè)產(chǎn)品推向市場(chǎng)得化一兩年的時(shí)間。要把軟件升級(jí)或把應(yīng)用移植到不同的平臺(tái)上就特別困難,甚至不可能。因?yàn)樗_發(fā)的智能卡應(yīng)用只能在專用平臺(tái)上運(yùn)行,所以來自于不同服務(wù)提供者的應(yīng)用不能在一張卡片上并存和運(yùn)行。缺乏互操作性和有限的卡片功能妨礙了智能卡應(yīng)用的更加廣泛的推廣。
[0003]而虛擬機(jī)的出現(xiàn)就是解決智能卡這一問題的有效手段,通過虛擬機(jī)屏蔽掉底層平臺(tái)的不同,達(dá)到上層應(yīng)用開發(fā)的簡(jiǎn)化。JavaCard技術(shù)是智能卡上虛擬機(jī)的典型應(yīng)用。在智能卡硬件平臺(tái)上,通過構(gòu)建一個(gè)軟件系統(tǒng),以支持Java語(yǔ)言下載、運(yùn)行。Java智能卡繼承了Java技術(shù)的平臺(tái)無關(guān)性,將硬件和軟件分離,簡(jiǎn)化了應(yīng)用程序開發(fā),提高了程序移植性。
[0004]目前,Java虛擬機(jī)(簡(jiǎn)稱JVM)主要包括兩個(gè)子系統(tǒng)和兩個(gè)組件:即類裝載器子系統(tǒng)、執(zhí)行引擎子系統(tǒng)、本地方法接口組件和運(yùn)行時(shí)數(shù)據(jù)區(qū)域組件,其架構(gòu)如圖1所示。
[0005]其中,類裝載器子系統(tǒng),根據(jù)給定的全限定名類名(如java.lang.0bject)來裝載class文件的內(nèi)容到運(yùn)行時(shí)數(shù)據(jù)區(qū)域的方法區(qū)域。
[0006]執(zhí)行引擎子系統(tǒng)是Java虛擬機(jī)實(shí)現(xiàn)的核心,執(zhí)行引擎的行為使用指令集定義。在Java虛擬機(jī)中一個(gè)字節(jié)碼流就是一個(gè)指令的序列。
[0007]本地方法接口組件:與本地方法庫(kù)交互,是其它編程語(yǔ)言交互的接口。本地方法是把Java程序和非Java語(yǔ)言程序和平臺(tái)相關(guān)的功能結(jié)合的有效方式。運(yùn)行時(shí)數(shù)據(jù)區(qū)組件:這個(gè)組件就是JVM中的內(nèi)存。下面對(duì)這個(gè)部分進(jìn)行詳細(xì)介紹。
[0008]運(yùn)行時(shí)數(shù)據(jù)區(qū)主要包括五個(gè)部分:堆(Heap),方法區(qū)域(Method Area), Java棧(Stack),程序計(jì)數(shù)器(Program Counter),本地方法棧(Native method stack)。
[0009]堆指Java程序在運(yùn)行時(shí)創(chuàng)建的所有類實(shí)或數(shù)組都放在同一個(gè)堆中。
[0010]方法區(qū)域指:在Java虛擬機(jī)中,裝載的.class信息存儲(chǔ)在方法區(qū)域內(nèi)存中。
[0011]Java棧指:以幀為單位保存線程的運(yùn)行狀態(tài)。虛擬機(jī)只會(huì)直接對(duì)Java棧執(zhí)行兩種操作,即以幀為單位的壓?;虺鰲?。
[0012]程序計(jì)數(shù)器:每個(gè)運(yùn)行中的Java程序,每一個(gè)線程都有它自己的PC寄存器。PC寄存器的內(nèi)容總是指向下一條將被執(zhí)行指令的地址。
[0013]本地方法棧:本地方法棧可以通過本地方法接口組件來訪問虛擬機(jī)的運(yùn)行時(shí)數(shù)據(jù)區(qū)。
[0014]目前Class文件的格式如表I所示。
[0015]表I為ClassFile表的格式
【權(quán)利要求】
1.ー種智能卡虛擬機(jī),其特征在于,至少包括指令裝載器和指令解釋器,其中: 所述指令裝載器,持續(xù)地從虛擬機(jī)的可執(zhí)行文件中裝載指令,所述指令解釋器對(duì)裝載的指令進(jìn)行譯碼,判斷出該指令要進(jìn)行的操作,然后進(jìn)行指令的分發(fā),跳轉(zhuǎn)到指令對(duì)應(yīng)的操作處,直至所述可執(zhí)行文件中所有的指令執(zhí)行結(jié)束; 其中,可執(zhí)行文件中存儲(chǔ)有指令和指令涉及到的操作數(shù)。
2.如權(quán)利要求I所述的智能卡虛擬機(jī),其特征在干, 所述可執(zhí)行文件為ニ進(jìn)制文件。
3.如權(quán)利要求I或2所述的智能卡虛擬機(jī),其特征在于,還包括運(yùn)行時(shí)數(shù)據(jù)區(qū)域組件; 所述運(yùn)行時(shí)數(shù)據(jù)區(qū)域組件至少包括ー個(gè)棧,ー個(gè)表,以及ー個(gè)堆,所述運(yùn)行時(shí)數(shù)據(jù)區(qū)域組件中的表記錄所述指令裝載器可裝載的各種變量類型,引用計(jì)數(shù)和在堆區(qū)存放的偏移地址。
4.如權(quán)利要求I或2所述的智能卡虛擬機(jī),其特征在于,還包括本地方法接ロ組件: 所述指令解釋器判斷出指令需要調(diào)用的本地方法,然后將指令分發(fā)到相應(yīng)的本地方法接ロ組件,所述本地方法接ロ組件對(duì)所接收到的指令進(jìn)行相應(yīng)的操作并存儲(chǔ)操作結(jié)果。
5.如權(quán)利要求3所述的智能卡虛擬機(jī),其特征在干, 所述可執(zhí)行文件中還包括函數(shù)變量釋放指令,所述函數(shù)變量釋放指令在所述可執(zhí)行文件調(diào)用的每個(gè)函數(shù)執(zhí)行結(jié)束后,釋放該函數(shù)的局部變量。
6.一種智能卡虛擬機(jī)實(shí)現(xiàn)方法,其特征在于,該方法包括: 智能卡虛擬機(jī)持續(xù)地從可執(zhí)行文件中裝載指令,對(duì)所裝載的指令進(jìn)行譯碼,判斷出該指令要進(jìn)行的操作,然后進(jìn)行指令的分發(fā),跳轉(zhuǎn)到指令對(duì)應(yīng)的操作處,直至可執(zhí)行文件中所有的指令執(zhí)行結(jié)束; 其中,可執(zhí)行文件中存儲(chǔ)有指令和指令涉及到的操作數(shù)。
7.如權(quán)利要求6所述的方法,其特征在干, 所述可執(zhí)行文件為ニ進(jìn)制文件。
8.如權(quán)利要求6或7所述的方法,其特征在于,所述智能卡虛擬機(jī)還包括運(yùn)行時(shí)數(shù)據(jù)區(qū)域組件,所述運(yùn)行時(shí)數(shù)據(jù)區(qū)域組件至少包括ー個(gè)棧,ー個(gè)表,以及ー個(gè)堆; 所述智能卡虛擬機(jī)通過運(yùn)行時(shí)數(shù)據(jù)區(qū)域組件中的表記錄各種變量類型,引用計(jì)數(shù)和在堆區(qū)存放的偏移地址,通過運(yùn)行時(shí)數(shù)據(jù)區(qū)域組件中的堆和棧管理字節(jié)碼在處理過程中的變量、中間結(jié)果及函數(shù)調(diào)用過程中的信息。
9.如權(quán)利要求6或7所述的方法,其特征在于,所述智能卡虛擬機(jī)還包括本地方法接ロ組件: 所述指令解釋器判斷出指令需要調(diào)用的本地方法,然后將指令分發(fā)到相應(yīng)的本地方法接ロ組件,所述本地方法接ロ組件對(duì)所接收到的指令進(jìn)行相應(yīng)的操作并存儲(chǔ)操作結(jié)果。
10.如權(quán)利要求6或7所述的方法,其特征在于, 所述可執(zhí)行文件中還包括函數(shù)變量釋放指令,所述函數(shù)變量釋放指令在所述可執(zhí)行文件調(diào)用的每個(gè)函數(shù)執(zhí)行結(jié)束后,釋放該函數(shù)的局部變量。
【文檔編號(hào)】G06F9/455GK103530171SQ201310512774
【公開日】2014年1月22日 申請(qǐng)日期:2013年10月25日 優(yōu)先權(quán)日:2013年10月25日
【發(fā)明者】甘露, 李小帆 申請(qǐng)人:大唐微電子技術(shù)有限公司