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

智能卡運行環(huán)境的控制方法

文檔序號:6623837閱讀:183來源:國知局

專利名稱::智能卡運行環(huán)境的控制方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種對智能卡運行環(huán)境進行控制的方法,具體地說,是指一種適用于Java平臺智能卡運行環(huán)境的控制方法。
背景技術(shù)
:Java智能卡技術(shù)是Java虛擬機技術(shù)向有限資源設(shè)備平臺的移植。Java智能卡的Applet經(jīng)過編譯和轉(zhuǎn)換后生成虛擬機指令集的字節(jié)碼程序。這些字節(jié)碼再由卡上虛擬機來運行。Java虛擬機早期地運行技術(shù)主要是解釋執(zhí)行機制,即將字節(jié)碼通過解釋程序翻譯為相應(yīng)的本地執(zhí)行代碼來運行,它適合于在資源較少的設(shè)備中使用。而后,為了提高字節(jié)碼的執(zhí)行速度,又相繼提出了編譯為本地代碼執(zhí)行、動態(tài)編譯和JIT編譯執(zhí)行、HotSpot技術(shù)及直接的專用硬件結(jié)構(gòu)執(zhí)行等運行技術(shù)。編譯為本地代碼的方法雖然顯著地提高了速度,但卻一定程度地影響了Java語言的安全機制和可移植性,這在高安全性要求的智能卡應(yīng)用中顯然并不適合。動態(tài)編譯、JIT編譯技術(shù)和HotSpot技術(shù)是在運行時將字節(jié)碼編譯為本地代碼,這需要大量的運行時的存儲資源,這在通常只有2K左右RAM的智能卡中也不具可行性。目前也有的采用專用的智能卡硬件結(jié)構(gòu)來運行字節(jié)碼以提高速度,這帶來的性能增益是非常顯著的,但同時也成倍地提高了卡片的成本。專用的硬件結(jié)構(gòu)也具有一定的局限性,如偽指令的擴展,并且目前在智能卡芯片和其它的有限資源設(shè)備領(lǐng)域Java專用結(jié)構(gòu)的CPU不能通用。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種智能卡運行環(huán)境的控制方法,該控制方法為了有效地提高應(yīng)用程序的運行效率,在Java卡卡內(nèi)、卡外虛擬機結(jié)構(gòu)的基礎(chǔ)上,運用字節(jié)碼的指令折疊優(yōu)化和解析優(yōu)化方式,并設(shè)計出相應(yīng)的虛擬機偽指令,從而縮減了智能卡上的代碼空間,有效地提高了應(yīng)用程序的運行速度。本發(fā)明的一種智能卡運行環(huán)境的控制方法,所述智能卡至少包括卡內(nèi)虛擬機、卡外虛擬機,所述卡內(nèi)虛擬機內(nèi)設(shè)有解釋器單元,所述解釋器單元用于實現(xiàn)字節(jié)碼序列的解析過程;所述卡外虛擬機內(nèi)設(shè)有轉(zhuǎn)換器單元,所述轉(zhuǎn)換器單元用于實現(xiàn)字節(jié)碼序列的轉(zhuǎn)換過程,其字節(jié)碼序列的處理步驟有(A)對所述轉(zhuǎn)換器單元輸出的字節(jié)碼序列進行折疊類型分類,得到折疊類型;(B)對經(jīng)(A)折疊分類處理后的所述折疊類型按照折疊規(guī)則進行指令折疊優(yōu)化,得到優(yōu)化后的指令折疊優(yōu)化字節(jié)碼序列;(C)對經(jīng)(B)折疊處理后的所述指令折疊優(yōu)化字節(jié)碼序列輸入所述解釋器中進行解析類型分類,得到解析類型;(D)對經(jīng)(C)解析分類處理后的所述解析類型按照解析規(guī)則進行指令解析優(yōu)化,得到對象的物理地址。本發(fā)明智能卡運行環(huán)境的控制方法的優(yōu)點(一)在智能卡的卡外虛擬機上采用指令折疊優(yōu)化有效地提高了指令的執(zhí)行速度和Java卡的響應(yīng)速度,即指令的執(zhí)行速度提高到原來的2.33倍,因此折疊優(yōu)化明顯加快了Java智能卡Applet的執(zhí)行速度和響應(yīng)速度;(二)在智能卡的卡內(nèi)虛擬機上采用指令解析優(yōu)化,使解析優(yōu)化后的指令解析具有(1)降低了卡內(nèi)代碼量,(2)減少了對智能卡內(nèi)部數(shù)據(jù)訪問次數(shù),(3)提高了指令執(zhí)行速度。圖1是Java智能卡運行環(huán)境的結(jié)構(gòu)示意圖。圖2是本發(fā)明指令折疊優(yōu)化的序列結(jié)構(gòu)示意圖。圖3是本發(fā)明的IFA狀態(tài)轉(zhuǎn)換圖。圖4是本發(fā)明解析優(yōu)化后實例化指令解析流程圖。圖5是本發(fā)明解析優(yōu)化后方法調(diào)用指令解析流程圖。圖6是本發(fā)明解析優(yōu)化后靜態(tài)域訪問指令解析流程圖。圖7是本發(fā)明解析優(yōu)化后JCVM系統(tǒng)結(jié)構(gòu)框圖。具體實施例方式下面將結(jié)合附圖對本發(fā)明作進一步的詳細說明。本發(fā)明是一種智能卡運行環(huán)境的控制方法,所述智能卡至少包括卡內(nèi)虛擬機、卡外虛擬機,所述卡內(nèi)虛擬機內(nèi)設(shè)有解釋器單元,所述解釋器單元用于實現(xiàn)字節(jié)碼序列的解析過程;所述卡外虛擬機內(nèi)設(shè)有轉(zhuǎn)換器單元,所述轉(zhuǎn)換器單元用于實現(xiàn)字節(jié)碼序列的轉(zhuǎn)換過程,其字節(jié)碼序列的處理步驟有(A)對所述轉(zhuǎn)換器單元輸出的字節(jié)碼序列進行折疊類型分類,得到折疊類型;(B)對經(jīng)(A)折疊分類處理后的所述折疊類型按照折疊規(guī)則進行指令折疊優(yōu)化,得到優(yōu)化后的指令折疊優(yōu)化字節(jié)碼序列;(C)對經(jīng)(B)折疊處理后的所述指令折疊優(yōu)化字節(jié)碼序列輸入所述解釋器中進行解析類型分類,得到解析類型;(D)對經(jīng)(C)解析分類處理后的所述解析類型按照解析規(guī)則進行指令解析優(yōu)化,得到對象的物理地址。所述對象是指實例化類、被調(diào)用方法或所訪問的靜態(tài)域。(一)指令折疊優(yōu)化技術(shù)為了提高在寄存器型體系結(jié)構(gòu)的處理器中使用解釋器(軟件實現(xiàn))來執(zhí)行字節(jié)碼的Java智能卡的執(zhí)行效率,本發(fā)明將指令折疊的思想引入到Java卡解釋器的軟件實現(xiàn)中,依據(jù)JCVM(Java卡虛擬機)的結(jié)構(gòu)特點提出了卡內(nèi)虛擬機、卡外虛擬機相結(jié)合的指令折疊優(yōu)化的控制方法。指令折疊的基本思想是將一組相關(guān)的運算指令合并成一條單獨的虛擬機偽指令來執(zhí)行,從而避免了通過堆棧訪問操作數(shù)的中間過程。圖1虛線框內(nèi)所示即為指令折疊的卡外部分,它將字節(jié)碼序列(包含在CAP(ConvertedApplet)文件中,CAP文件是Java智能卡應(yīng)用程序經(jīng)過編譯、轉(zhuǎn)化后,即生成將要下載到Java智能卡卡內(nèi)的安裝文件,其中包含有可執(zhí)行代碼稱為字節(jié)碼。)中的一組相關(guān)的面向堆棧結(jié)構(gòu)的可折疊指令折疊成一條單獨的適于寄存器結(jié)構(gòu)執(zhí)行的兩地址或三地址虛擬機偽指令。這些自定義的虛擬機偽指令在下載到卡上后由支持這些偽指令的解釋器來進行解釋執(zhí)行。指令折疊的POC模型結(jié)構(gòu)如下指令折疊是將一組面向堆棧操作的相關(guān)指令合并成一條單獨的復(fù)合指令的過程。指令折疊組即一組可折疊的相關(guān)指令。Java卡虛擬機是一個堆棧計算機,因此根據(jù)對堆棧操作的相關(guān)特性可將字節(jié)碼指令劃分為三種基本角色類型生產(chǎn)者P、操作者O和消費者C。生產(chǎn)者P將常數(shù)、局部變量、靜態(tài)域或this對象域壓入操作數(shù)棧的指令,如sconst_O,sload,getstatic_s,getfield_s_this。操作者O從操作數(shù)棧棧頂獲得操作數(shù)并執(zhí)行相應(yīng)操作的指令,其又可分為如下四類算邏運算OA執(zhí)行算邏運算并將結(jié)果寫回操作數(shù)棧的指令??刂妻D(zhuǎn)移OT無條件控制轉(zhuǎn)移類指令,如jsr,athrow,invoke*,goto,ret,sreturn,stableswitch。改變堆棧狀態(tài)類指令OS無法加入指令折疊組的直接堆棧操作指令或其他改變堆棧狀態(tài)類指令,如pop,swap,dup,轉(zhuǎn)換指令i2s,s2i,非this實例域操作指令getfield,putfield。雜類OM無法加入指令折疊組但不影響折疊判斷的指令,如直接操作局部變量類指令sinc。消費者C從操作數(shù)棧彈出數(shù)據(jù)類指令,其又可分為如下兩類變量存儲CS彈出棧頂數(shù)據(jù)存儲到局部變量、靜態(tài)域或this對象中,如sstore,putstatic_s,putfield_s_this。判斷分支CB彈出棧頂數(shù)據(jù)進行比較以進行程序控制分支,如ifeq,ifnull。指令折疊組中的指令經(jīng)折疊處理后生成的虛擬機偽指令可分為三地址指令和兩地址指令兩種,其格式定義如下三地址折疊指令I(lǐng)3的四元組表示為I3=(O,S1,S2,T),其中O為代表指令語義的操作碼,S1、S2為源操作數(shù)地址,T為目的操作數(shù)地址。兩地址折疊指令I(lǐng)2的三元組表示為I2=(O,S1,T),其中O為代表指令語義的操作碼,S1為源操作數(shù)地址,T為目的操作數(shù)地址。折疊指令是面向JCVM虛擬機體系結(jié)構(gòu)的,因此其中的操作碼使用JCVM規(guī)范中預(yù)留的185到253區(qū)間,指令中的尋址方式包括如下五種立即數(shù)尋址指令中的地址為立即數(shù),可用于S1和S2。局部變量直接尋址指令中的地址為局部變量在局部變量區(qū)中的編號,可用于S1、S2和T。操作數(shù)棧尋址指令中的地址為操作數(shù)棧棧頂,可用于T。偏移量尋址用于條件跳轉(zhuǎn)指令的T,指令中的地址為在方法區(qū)中程序的跳轉(zhuǎn)偏移量或組件偏移量。常數(shù)池尋址指令中的地址為常數(shù)池索引,可用于S1、S2和T。依據(jù)前述的基本定義,指令折疊過程可表示為由P、O、C類指令所構(gòu)成的指令折疊組折疊成一條單獨的I3或I2折疊指令的過程。相應(yīng)于此過程的指令折疊文法F四元組的定義如下F=(VN,VT,G,S),其中終結(jié)符號集VT={x|x為字節(jié)碼指令},非終結(jié)符號集VN={POC模型中的標記符號P、OA、CS、CB}∪{折疊指令標記I3、I2}∪{S}S∈VN,為文法的識別符號。產(chǎn)生式集G={S→I3|I2I3→PPOACS|PPCB|PPOAI2→PCSP→<P類字節(jié)碼序列>OA→<OA類字節(jié)碼序列>CS→<CS類字節(jié)碼序列>CB→<CB類字節(jié)碼序列>}集合G中的產(chǎn)生式I3、I2的右部既為可識別的指令折疊組,指令的折疊過程即為同操作數(shù)類型指令由產(chǎn)生式右部到左部的規(guī)約過程,P指令中的操作數(shù)即為折疊指令中的源操作數(shù),CS指令中的操作數(shù)為折疊指令中的目的操作數(shù),PPCB折疊后的目的地址為跳轉(zhuǎn)指令CB中的偏移量,PPOA折疊后的目的操作數(shù)地址為OA的目的地址-操作數(shù)棧棧頂。若指令折疊組中含O類指令,則折疊指令語義由其決定,否則由C類指令決定。編譯轉(zhuǎn)換后的字節(jié)碼序列中指令折疊組的折疊類型有第一折疊類型、第二折疊類型、第三折疊類型和第四折疊類型。指令折疊組結(jié)構(gòu)請參見圖2所示。第一折疊類型實現(xiàn)兩個指令折疊組按順序出現(xiàn)。第二折疊類型實現(xiàn)指令組B被指令組A分隔開,且指令組A與指令組B無數(shù)據(jù)相關(guān)連。第三折疊類型,實現(xiàn)指令組B被指令組A分隔開,且指令組A與指令組B存在單重數(shù)據(jù)相關(guān)連。(sload3和sstore3)第四折疊類型,實現(xiàn)指令組B被指令組A分隔開,且指令組A與指令組B存在雙重數(shù)據(jù)相關(guān)連。(sload3和sstore3,sload2和sstore2)數(shù)據(jù)相關(guān)(DataDependence)數(shù)據(jù)相關(guān)是對于指令i和指令j,如果(1)指令j使用指令i產(chǎn)生的結(jié)果,或者(2)指令j與指令k數(shù)據(jù)相關(guān),指令k與指令i數(shù)據(jù)相關(guān),則指令j與指令i之間存在一個先寫后讀相關(guān)鏈。單重數(shù)據(jù)相關(guān)是指存在一個先寫后讀相關(guān)鏈;雙重數(shù)據(jù)相關(guān)是指存在兩個先寫后讀相關(guān)鏈。針對每種類型相應(yīng)的折疊處理規(guī)則如下折疊規(guī)則一,實現(xiàn)將所述第一折疊類型按順序進行折疊;折疊規(guī)則二,首先將所述第二折疊類型中的指令組A進行折疊,并將指令組A折疊后的指令從指令隊列中彈出,然后將所述第二折疊類型中的指令組B進行折疊;折疊規(guī)則三,為將第三折疊類型中指令組A先進行折疊,折疊后將其從指令隊列中彈出,從而使指令組B中的指令相鄰形成待折疊組,然后再折疊指令組B,使代碼執(zhí)行順序生成為指令組B和指令組A;折疊規(guī)則四,為將第四折疊類型中的指令組A進行折疊;每種序列的具體示例如圖2所示。指令折疊的過程可分為兩個基本步驟首先,是依據(jù)折疊規(guī)則完成對輸入字節(jié)碼序列的指令折疊組的識別。其次,判斷相鄰指令折疊組的類型(第一折疊類型、第二折疊類型、第三折疊類型或第四折疊類型),依據(jù)前述給出的每種類型相應(yīng)的折疊規(guī)則來進行處理,從而保證算法輸出的字節(jié)碼和折疊指令混合序列執(zhí)行的正確性。指令折疊過程由一個移進——規(guī)約分析器來完成,首先設(shè)置一個字節(jié)碼符號棧,依據(jù)系統(tǒng)的當前狀態(tài)來決定將輸入緩沖區(qū)中適當?shù)淖止?jié)碼移入符號棧中,一旦棧頂符號串與產(chǎn)生式的右部相匹配則可進行規(guī)約。在此過程中應(yīng)遵循如下原則折疊過程在一個基本塊內(nèi)進行,CB和OT類指令標示著基本塊的結(jié)束,因此在處理完此類指令后即可終止折疊過程。OS類改變操作數(shù)棧狀態(tài)的指令無法進行進一步的折疊判斷,遇到此類指令應(yīng)清空符號棧,重置系統(tǒng)空閑狀態(tài)。不改變操作數(shù)棧狀態(tài)的OM類指令不進入符號棧進行折疊處理。當遇到移進-規(guī)約沖突時采用移進策略,既給較長的產(chǎn)生式以較高的優(yōu)先權(quán)?;谝七M-規(guī)約分析器的指令折疊算法的有限狀態(tài)機模型IFA的數(shù)學表述如下IFA為一五元組IFA=(Q,∑,f,qo,E),其中Q為移進-規(guī)約分析器狀態(tài)的有限集合,除空閑狀態(tài)和終止狀態(tài)外,遇到P、O、C類指令系統(tǒng)轉(zhuǎn)入相應(yīng)的狀態(tài),因此狀態(tài)集合如下Q={空閑狀態(tài),P狀態(tài),OA狀態(tài),CB狀態(tài),CS狀態(tài),終止狀態(tài)}∑為有限輸入符號集,在此即為文法F中的終結(jié)符號集VT。f為狀態(tài)轉(zhuǎn)換函數(shù),定義域為狀態(tài)集與輸入符號集的笛卡爾乘積,值域為狀態(tài)集fQ×∑→Q,具體的圖形表述請參見圖3.4。qo∈Q是狀態(tài)機的初態(tài),在此qo=空閑狀態(tài)。E為終止狀態(tài),表示一個基本塊指令折疊的結(jié)束。圖3采用UML建模語言中的狀態(tài)圖對IFA的狀態(tài)轉(zhuǎn)換進行了圖形描述。在進行折疊的過程(D2)中必須進行折疊組類型和數(shù)據(jù)相關(guān)的判斷,因此設(shè)置折疊緩存隊列QF,將需進行相關(guān)判斷的折疊組加入此隊列中并在輸出時移出,若令當前折疊組為IG,其中的最右一條指令的類型為R(IG),則折疊過程描述如下FoldAndCheckDependency(){從符號棧中彈出IG;  if(隊列QF為空)  if(同前續(xù)P類指令存在相關(guān))  IG加入隊列QF中;  else  折疊IG并輸出;  else  {  if(IG同QF中IP構(gòu)成類型3序列)  放棄折疊IG,折疊IP并輸出;  else//類型2  {  switchR(IG)  caseCS,OA  折疊并輸出IGIP;<!--SIPO<DPn="6">--><dpn="d6"/>  caseCB  放棄折疊IG,折疊IP并輸出;  }  }  }(二)解析優(yōu)化技術(shù)JCVM在解釋執(zhí)行命令前,需對其進行解析。但傳統(tǒng)的解析過程頻繁的訪問位于智能卡內(nèi)部的類、方法和域組件等內(nèi)部數(shù)據(jù),耗費了大量的系統(tǒng)時間。因此我們根據(jù)JCVM的特殊實現(xiàn)結(jié)構(gòu),提出并實現(xiàn)了卡內(nèi)虛擬機、卡外虛擬機相結(jié)合的解析優(yōu)化技術(shù)來加速卡內(nèi)指令的執(zhí)行。根據(jù)解析過程是否與卡內(nèi)存儲分配相關(guān),可將解析分為靜態(tài)綁定解析過程和動態(tài)綁定解析過程。靜態(tài)綁定解析過程,只訪問本CAP文件,而無需智能卡內(nèi)資源,因此與卡內(nèi)存儲結(jié)構(gòu)無關(guān),為一編譯時過程。而動態(tài)綁定解析過程,必須獲得卡內(nèi)資源,才能完成其解析過程,因此該過程與卡內(nèi)存儲結(jié)構(gòu)相關(guān),為一運行時過程。從JCVM虛擬機的卡外和卡內(nèi)兩部分協(xié)同實現(xiàn)的設(shè)計構(gòu)思出發(fā),我們可以把指令的標準解析過程分解,編譯時的靜態(tài)綁定解析過程放至卡外完成,同時用創(chuàng)建新的指令操作碼(偽指令操作碼,其值大于184)和解析后的結(jié)果(偏移量或token)構(gòu)造成偽指令,并創(chuàng)建偽指令集,如表一所示。而將運行時的動態(tài)綁定過程放至卡內(nèi)完成,通過卡內(nèi)虛擬機解釋偽指令,獲得上述靜態(tài)綁定解析的結(jié)果,并完成后續(xù)的卡內(nèi)解析過程。表一偽指令集實例化指令的解析優(yōu)化在執(zhí)行指令之前,首先要根據(jù)指令參數(shù)得到將要實例化的類,即完成類解析過程。根據(jù)定義包的不同,被實例化類可分為本包所定義的類(簡稱本包類)和外包所定義的類(簡稱外包類)兩種情況。如圖4所示,本包類的解析將執(zhí)行以下操作步驟1先將指令參數(shù)作為常數(shù)池數(shù)組索引,并將之乘4(常數(shù)池數(shù)組元素大小)后與常數(shù)池組件在CAP上的基址相加,即得到對應(yīng)的常數(shù)項在CAP上的相對地址,該過程的數(shù)學表達式為常數(shù)項地址=4倍常數(shù)池索引+常數(shù)池基址(以下簡稱函數(shù)式)步驟2取出常數(shù)項中表示被實例化類的class_token,class_token在數(shù)值上等于被實例化的類位于CAP類組件中的偏移量。步驟3將此偏移量與卡內(nèi)類組件基址相加,得到被實例化類的類信息在卡上的物理地址。以上解析過程中步驟1和步驟2為靜態(tài)綁定過程,可放至卡外執(zhí)行,并將執(zhí)行結(jié)果和偽指令操作碼構(gòu)造為偽指令返回CAP,替代CAP中原指令。步驟3則為動態(tài)綁定過程,在卡上解釋偽指令,確定類信息物理地址,完成類解析過程。外包類的解析過程步驟1和本包類的解析過程相同,但由于外包類的class_token由package_token(表示定義此類的包)和class_token(表示被實例化的類)組成。先通過package_token找到卡內(nèi)CAP文件地址,再由class_token得到類信息在CAP的類組件中的物理地址。其中步驟1為靜態(tài)綁定過程,放在卡外完成,并返回偽指令。其余過程則為動態(tài)綁定過程,在卡內(nèi)解釋偽指令,繼續(xù)類解析過程,最后得到類信息在卡內(nèi)的物理地址。方法調(diào)用指令的解析優(yōu)化方法調(diào)用指令執(zhí)行前,首先要根據(jù)指令參數(shù)得到對應(yīng)的方法,即完成方法解析過程。根據(jù)方法所屬的類的不同,可將方法分為本包定義的類的方法(簡稱本包方法)和外包定義的類的方法(簡稱外包方法)。如圖5所示,本包方法的解析需執(zhí)行以下操作步驟1調(diào)用函數(shù)式,將常數(shù)池索引轉(zhuǎn)化為對應(yīng)的常數(shù)項在CAP上的相對地址。步驟2取出常數(shù)項中class_token(表示定義此方法的類)和method_token(表示被調(diào)用的方法)。并對class_token進行類解析,得到定義此方法的類的類信息在CAP文件中的相對地址。步驟3根據(jù)method_token(數(shù)值上等于方法表索引),查找類信息中的方法表,得到此方法的方法代碼在方法組件中的偏移量。方法組件(MethodComponent)描述了本包中所定義的每一個方法,包括類所定義的虛方法和每一個方法所聯(lián)系的異常處理。方法組件中的所有方法和異常處理代碼都為二進制虛擬機指令,通過虛擬機解釋器對其解釋執(zhí)行,即可實現(xiàn)該方法所定義的功能。步驟4將此偏移量與卡內(nèi)方法組件基址相加,得到將要調(diào)用方法代碼的物理地址。步驟1、步驟2和步驟3為靜態(tài)綁定過程,將之放在卡外完成,并返回相應(yīng)的偽指令。步驟4則為動態(tài)綁定過程,在卡內(nèi)解釋偽指令,得到被調(diào)用方法代碼的物理地址,完成方法解析過程。外包方法的解析過程與本包方法相似,只是由于定義方法的類為外包類,所以先要完成外包類解析過程,得到類信息在卡內(nèi)的物理地址,其余過程則完全相同。以上過程中,只有步驟1為靜態(tài)綁定過程,在卡外完成,并將構(gòu)造的偽指令作為結(jié)果返回,其他步驟則為動態(tài)綁定過程,在卡內(nèi)解釋偽指令,繼續(xù)方法解析過程,最后得到方法代碼在卡內(nèi)的物理地址。靜態(tài)域訪問指令的解析優(yōu)化靜態(tài)域訪問指令執(zhí)行前,也先要得到所要訪問靜態(tài)域的物理地址,即需先完成靜態(tài)域解析過程。根據(jù)靜態(tài)域的所屬類的不同,靜態(tài)域可分為本包定義的類的靜態(tài)域(簡稱本包靜態(tài)域)和外包定義的類的靜態(tài)域(簡稱外包靜態(tài)域)兩種情況。如圖6所示,本包靜態(tài)域解析需執(zhí)行以下操作步驟1調(diào)用函數(shù)式,將常數(shù)池索引轉(zhuǎn)化為對應(yīng)的常數(shù)項在CAP上的相對地址。步驟2取出常數(shù)項中staticfield_token(在數(shù)值上等于該靜態(tài)域在靜態(tài)域鏡像中的偏移量)。步驟3將此偏移量與卡內(nèi)靜態(tài)域鏡像基址相加,即可得到被訪問的靜態(tài)域在卡上的物理地址。步驟1和步驟2為靜態(tài)綁定過程,可在卡外完成,并返回相應(yīng)的偽指令。步驟3則為動態(tài)綁定過程,在卡內(nèi)解釋偽指令,確定靜態(tài)域的物理地址,完成靜態(tài)域解析過程。由于外包靜態(tài)域解析所需信息不在本CAP內(nèi),因此執(zhí)行步驟1后,得到的常數(shù)項由package_token(表示此靜態(tài)域所屬的包),class_token(表示此靜態(tài)域所屬的類)與staticfield_token(表示將訪問的靜態(tài)域)組成,需先根據(jù)package_token得到定義此靜態(tài)域的CAP文件地址,然后由class_token和staticfield_token由CAP中信息得到此靜態(tài)域的卡內(nèi)物理地址。由解析過程可知,只有步驟1為靜態(tài)綁定過程,放至卡外執(zhí)行,并返回相應(yīng)的偽指令,而其他過程則為動態(tài)綁定過程,在卡內(nèi)解釋偽指令,將token轉(zhuǎn)化為被訪問靜態(tài)域在卡內(nèi)的物理地址。CAP文件解析優(yōu)化的實現(xiàn)也相應(yīng)的分為卡外實現(xiàn)和卡內(nèi)實現(xiàn)兩部分??ㄍ膺^程在PC平臺上執(zhí)行,在這里我們用Java語言實現(xiàn),用Java中的輸入流將CAP文件中的指令讀出,通過定義不同解析函數(shù)完成各類指令的卡外解析,然后通過Java中的輸出流將結(jié)果替換原指令寫入CAP中,即完成了卡外解析過程??▋?nèi)解析過程所要實現(xiàn)的內(nèi)容是對偽指令的解釋執(zhí)行。在解釋偽指令時,我們采用表跳轉(zhuǎn)方法為每條偽指令定位,根據(jù)不同的偽指令操作碼,系統(tǒng)跳至相應(yīng)的處理代碼處,繼續(xù)執(zhí)行未完的解析過程,并將最后的解析結(jié)果返回給解釋器,解釋器將根據(jù)此結(jié)果,訪問Java棧、堆等數(shù)據(jù)結(jié)構(gòu),調(diào)用相關(guān)的本地方法,完成指令的解釋執(zhí)行。優(yōu)化后的JCVM的系統(tǒng)框圖如圖7所示。有益效果(一)指令折疊優(yōu)化技術(shù)本發(fā)明提高了指令的執(zhí)行速度和Java卡的響應(yīng)速度。定義指令折疊所帶來的性能增益Pg為在折疊前后的平均執(zhí)行時間如下表所示表二折疊前后的指令執(zhí)行時間因此本折疊算法的平均性能增益為即指令的執(zhí)行速度提高到原來的2.33倍。因此折疊優(yōu)化明顯加快了Java智能卡Applet的執(zhí)行速度和響應(yīng)速度。(二)解析優(yōu)化技術(shù)優(yōu)化后的解析流程有以下幾個方面的優(yōu)點(1)降低了卡內(nèi)代碼量由解析流程可以看出,解析優(yōu)化將原本在卡上的部分解析過程,移至卡外執(zhí)行,因此減少了卡內(nèi)程序代碼量,表三顯示了優(yōu)化前、后卡內(nèi)代碼量比較,可見通過解析優(yōu)化,卡內(nèi)代碼量可降至原來的1/2甚至1/4。表三優(yōu)化前、后代碼量比較(2)減少了對智能卡內(nèi)部數(shù)據(jù)訪問次數(shù)表四顯示了優(yōu)化前后卡內(nèi)數(shù)據(jù)的訪問次數(shù)比較,優(yōu)化后卡內(nèi)數(shù)據(jù)的總訪問次數(shù)下降到原來的3/8。表四優(yōu)化前、后卡內(nèi)數(shù)據(jù)訪問次數(shù)比較(3)提高了指令執(zhí)行速度表五顯示了優(yōu)化前后指令解析時間的比較,可見優(yōu)化后指令的解析速度提高到原來的3.45倍,因此極大地提高了解析指令的執(zhí)行速度。表五優(yōu)化前后指令解析時間比較權(quán)利要求1.一種智能卡運行環(huán)境的控制方法,所述智能卡至少包括卡內(nèi)虛擬機、卡外虛擬機,所述卡內(nèi)虛擬機內(nèi)設(shè)有解釋器單元,所述解釋器單元用于實現(xiàn)字節(jié)碼序列的解析過程;所述卡外虛擬機內(nèi)設(shè)有轉(zhuǎn)換器單元,所述轉(zhuǎn)換器單元用于實現(xiàn)字節(jié)碼序列的轉(zhuǎn)換過程,其特征在于字節(jié)碼序列的處理步驟有(A)對所述轉(zhuǎn)換器單元輸出的字節(jié)碼序列進行折疊類型分類,得到折疊類型;(B)對經(jīng)(A)折疊分類處理后的所述折疊類型按照折疊規(guī)則進行指令折疊優(yōu)化,得到優(yōu)化后的指令折疊優(yōu)化字節(jié)碼序列;(C)對經(jīng)(B)折疊處理后的所述指令折疊優(yōu)化字節(jié)碼序列輸入所述解釋器中進行解析類型分類,得到解析類型;(D)對經(jīng)(C)解析分類處理后的所述解析類型按照解析規(guī)則進行指令解析優(yōu)化,得到對象的物理地址。2.根據(jù)權(quán)利要求1所述的智能卡運行環(huán)境的控制方法,其特征在于折疊類型有第一折疊類型,實現(xiàn)兩個指令折疊組按順序出現(xiàn);和第二折疊類型,實現(xiàn)指令組B被指令組A分隔開,且指令組A與指令組B無數(shù)據(jù)相關(guān)連;和第三折疊類型,實現(xiàn)指令組B被指令組A分隔開,且指令組A與指令組B存在單重數(shù)據(jù)相關(guān)連;和第四折疊類型,實現(xiàn)指令組B被指令組A分隔開,且指令組A與指令組B存在雙重數(shù)據(jù)相關(guān)連。3.根據(jù)權(quán)利要求1所述的智能卡運行環(huán)境的控制方法,其特征在于折疊規(guī)則有折疊規(guī)則一,將所述第一折疊類型按順序進行折疊;折疊規(guī)則二,首先將所述第二折疊類型中的指令組A進行折疊,并將指令組A折疊后的指令從指令隊列中彈出,然后將所述第二折疊類型中的指令組B進行折疊;折疊規(guī)則三,將第三折疊類型中指令組A先進行折疊,折疊后將其從指令隊列中彈出,從而使指令組B中的指令相鄰形成待折疊組,然后再折疊指令組B,使代碼執(zhí)行順序生成為指令組B和指令組A;折疊規(guī)則四,將第四折疊類型中的指令組A進行折疊。4.根據(jù)權(quán)利要求1所述的智能卡運行環(huán)境的控制方法,其特征在于解析類型有第一解析類型,由所述指令折疊優(yōu)化字節(jié)碼序列中的指令參數(shù)經(jīng)過所述卡外虛擬機和卡內(nèi)虛擬機解析得到實例化類的物理地址,實現(xiàn)實例化指令的解析優(yōu)化;第二解析類型,由所述指令折疊優(yōu)化字節(jié)碼序列中的指令參數(shù)經(jīng)過所述卡外虛擬機和卡內(nèi)虛擬機解析得到被調(diào)用方法的物理地址,實現(xiàn)方法調(diào)用指令的解析優(yōu)化;第三解析類型,由所述指令折疊優(yōu)化字節(jié)碼序列中的指令參數(shù)經(jīng)過所述卡外虛擬機和卡內(nèi)虛擬機解析得到所訪問靜態(tài)域的物理地址,實現(xiàn)靜態(tài)域訪問指令的解析優(yōu)化。5.根據(jù)權(quán)利要求4所述的智能卡運行環(huán)境的控制方法,其特征在于解析類型中對所述第一解析類型中實例化指令的解析優(yōu)化過程為(1)先將所述指令折疊優(yōu)化字節(jié)碼序列中的指令參數(shù)作為常數(shù)池數(shù)組索引,然后用4倍的所述常數(shù)池數(shù)組索引與常數(shù)池組件在CAP文件上的基址相加得到常數(shù)項地址,即常數(shù)項地址=4倍常數(shù)池索引+常數(shù)池基址;(2)取出常數(shù)項中表示被實例化類的類標記;(3)將所述類標記與卡內(nèi)類組件基址相加得到被實例化類在智能卡中的物理地址(即實例化類的解析)。6.根據(jù)權(quán)利要求5所述的智能卡運行環(huán)境的控制方法,其特征在于解析優(yōu)化過程中所述步驟(1)和所述步驟(2)為靜態(tài)綁定過程,可放至卡外虛擬機上執(zhí)行,并將新創(chuàng)建的指令操作碼(其值大于184)和所述靜態(tài)綁定解析后的結(jié)果結(jié)合定義為偽指令,返回CAP文件,替代CAP中的原指令;所述步驟(3)為動態(tài)綁定過程,在卡內(nèi)虛擬機上解析偽指令,用于確定類信息物理地址完成所述實例化類的解析。7.根據(jù)權(quán)利要求4所述的智能卡運行環(huán)境的控制方法,其特征在于解析類型中對所述第二解析類型中方法調(diào)用指令的解析優(yōu)化過程為(1)先將所述指令折疊優(yōu)化字節(jié)碼序列中的指令參數(shù)作為常數(shù)池數(shù)組索引,然后用4倍的所述常數(shù)池數(shù)組索引與常數(shù)池組件在CAP文件上的基址相加得到常數(shù)項地址,即常數(shù)項地址=4倍常數(shù)池索引+常數(shù)池基址;(2)取出常數(shù)項中類標記和方法標記,并對所述類標記進行類解析,得到定義此方法的類的類信息在CAP文件中的相對地址;(3)根據(jù)所述方法標記在(2)步驟中得到的所述類信息中查找,得到所述方法的方法代碼在方法組件中的偏移量;(4)將經(jīng)步驟(3)得到的偏移量與所述方法組件基址相加得到所需調(diào)用方法代碼的物理地址。8.根據(jù)權(quán)利要求4所述的智能卡運行環(huán)境的控制方法,其特征在于解析類型中對所述第三解析類型中靜態(tài)域訪問指令的解析優(yōu)化過程為(1)先將所述指令折疊優(yōu)化字節(jié)碼序列中的指令參數(shù)作為常數(shù)池數(shù)組索引,然后用4倍的所述常數(shù)池數(shù)組索引與常數(shù)池組件在CAP文件上的基址相加得到常數(shù)項地址,即常數(shù)項地址=4倍常數(shù)池索引+常數(shù)池基址;(2)取出常數(shù)項中的靜態(tài)域標記;(3)將步驟(2)中取出的靜態(tài)域標記與靜態(tài)域鏡像基址相加得到被訪問的靜態(tài)域在智能卡上的物理地址。9.根據(jù)權(quán)利要求2所述的智能卡運行環(huán)境的控制方法,其特征在于折疊類型中的所述第三折疊類型是單重數(shù)據(jù)相關(guān)連。10.根據(jù)權(quán)利要求2所述的智能卡運行環(huán)境的控制方法,其特征在于折疊類型中的所述第四折疊類型是雙重數(shù)據(jù)相關(guān)連。11.根據(jù)權(quán)利要求1所述的智能卡運行環(huán)境的控制方法,其特征在于所述對象是指實例化類、被調(diào)用方法或所訪問的靜態(tài)域。全文摘要本發(fā)明公開了一種智能卡運行環(huán)境的控制方法,該控制方法先將輸入的字節(jié)碼序列進行折疊類型的分類,其次采用折疊規(guī)則對折疊類型進行折疊,然后對輸出的折疊指令參數(shù)進行解析分類,最后得到適用于本發(fā)明智能卡運行環(huán)境的字節(jié)碼序列。本發(fā)明的控制方法為了有效地提高應(yīng)用程序的運行效率,在Java卡卡內(nèi)、卡外虛擬機結(jié)構(gòu)的基礎(chǔ)上,運用字節(jié)碼的指令折疊優(yōu)化和解析優(yōu)化方式,設(shè)計出相應(yīng)的虛擬機偽指令,從而縮減了智能卡上的代碼空間,有效地提高了應(yīng)用程序的運行速度。文檔編號G06F9/45GK1687900SQ200510077160公開日2005年10月26日申請日期2005年6月16日優(yōu)先權(quán)日2005年6月16日發(fā)明者張其善,張大偉,楊東凱,姚黎明,吳鑫山申請人:北京航空航天大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
建德市| 清流县| 吴忠市| 沙河市| 阜平县| 上虞市| 万源市| 罗定市| 信阳市| 蒙阴县| 西峡县| 莱芜市| 菏泽市| 柘荣县| 姚安县| 江川县| 图片| 库车县| 蓬溪县| 沂南县| 康定县| 东平县| 秦安县| 大城县| 班戈县| 龙里县| 襄城县| 威宁| 龙山县| 西乌珠穆沁旗| 方正县| 桐乡市| 长沙县| 元氏县| 凤山县| 栾城县| 松原市| 闵行区| 通化县| 武汉市| 甘孜县|