《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > JCVM中棧與幀的研究和設計
JCVM中棧與幀的研究和設計
來源:微型機與應用2011年第7期
何利明,李代平,徐宏寧,謝晶晶,馬海峰
(廣東工業大學 計算機學院,廣東 廣州 510006)
摘要: 介紹了Java Card虛擬機的相關知識,并就其存儲資源有限的特點,提出了一套有效的資源管理策略和一個符合規范且可行的棧與幀的結構設計方案,詳細說明了該方案中棧與幀的執行過程。
Abstract:
Key words :

摘  要: 介紹了Java Card虛擬機的相關知識,并就其存儲資源有限的特點,提出了一套有效的資源管理策略和一個符合規范且可行的的結構設計方案,詳細說明了該方案中棧與幀的執行過程。
關鍵詞: Java卡;Java卡虛擬機;棧;幀;存儲空間

 近年來,智能卡已經越來越廣泛地應用于社會生產、生活的各個領域,相關技術也得到了迅猛發展。Java技術具有安全、簡單、即時編譯和跨平臺的眾多優點,將Java技術運用于智能卡的開發領域,已經成為智能卡技術發展的熱點。Java卡是一種能運行Java應用程序的智能卡,支持部分Java編程語言,是Java技術和智能卡的一個成功結合。Java卡技術的核心是Java卡虛擬機JCVM(Java Card Virtual Machine)。不同于一般的Java虛擬機,由于受到智能卡存儲與處理能力的限制,JCVM的可用資源非常有限。通常JCVM對于內部資源的管理和使用非常嚴格。
1 JCVM和相關技術簡介
 由于智能卡的可用資源非常有限,不可能在智能卡內實現JCVM的全部功能,所以,通常將JCVM分為卡外虛擬機和卡內虛擬機兩部分??ㄍ馓摂M機可運行于一般的PC或SUN工作站上,主要工作是將由Java語言編寫的class文件轉換成為字節碼形式的CAP文件。而卡內虛擬機在智能卡內部實現,負責裝載、執行字節碼和支持Java語言。下面所說的JCVM主要是指卡內虛擬機部分。Java卡應用程序的開發和其他Java應用程序的開發在最初階段基本相同,開發者編寫若干Java類源代碼,利用Java編譯器編譯成類文。然后,將相應的類文件用Java卡轉換器轉換成為CAP文件,CAP文件相比起類文件更加緊湊、短小,將其下載到卡內虛擬機。卡內虛擬機執行CAP文件中的代碼,完成應用的安裝,使應用處于能夠被卡內虛擬機執行的狀態。
 對于JCVM的載體,Java卡的系統結構如圖1所示。

 Java卡系統主要由三個部分組成:COS和本地方法層、JCRE、Java卡應用程序。其中,JCRE包括JCVM、Java Card API和企業添加類。
 在系統結構圖1中,位于最下層的COS和本地方法層主要用于對智能卡的硬件進行管理和操作。JCRE是Java卡的核心部分,主要工作是維護Java卡系統運行時的環境,同時也負責應用的執行和安全。JCVM是完成Java程序字節碼解析和執行的主要部分。最上面的是Java卡應用程序。Java卡允許一卡多用的存在,當卡中有多個應用時,應用需要通過被選擇,才能處于工作狀態,其程序字節碼才能通過JCVM進行解析和執行。
 從圖1所示可以明確得到JCVM在Java卡內所處的層次關系。JCVM本身是JCRE的一部分。JCVM通過調用COS提供的命令和一些本地方法,控制硬件的運算、存儲等操作。JCVM被各個Applet通過企業添加類和API調用,執行應用程序的字節碼。
2 JCVM實現難點
 對于JCVM棧與幀結構的實現,主要難點可以歸結為以下幾點:
 (1)智能卡因為其受到存儲空間的限制,需要一套科學有效的管理和利用方案,以保證存儲空間的高效使用。
 (2)JCVM中棧與幀的結構設計,需要做到既能高效地利用有限的空間,同時又能保證Java應用程序正常執行。
 (3)在棧中,如何實現幀的創建和銷毀,這并非只是簡單地申請空間或釋放空間的操作,而且還包括整個程序執行過程的相關動態鏈接、全局控制等數據的處理。
 (4)如何符合規范地進行幀內部數據的處理。
 下面將就這些實現難點進行分析,提出設計思路和解決方案。
3 JCVM中存儲空間的劃分
 因為受到智能卡平臺的資源限制,JCVM中的存儲空間非常有限。為了能夠科學節約地使用和管理這些空間,將JCVM的存儲空間虛擬劃分為以下部分:
 (1)應用代碼區:用于存儲CAP文件通過安裝器安裝以后的中間代碼,主要是方法字節碼等。
 (2)靜態變量區:用于存儲非易失性應用數據內容,一般是應用的域、應用處理的最終結果、方法調用過程中Token和方法地址的轉換表、常量池等重要信息。應用可以通過相關的指令讀寫靜態空間存儲的各種內容。
 (3)信息共享區:屬于易失性存儲區域,主要用于公共信息內容的交換,由OS負責提供,應用和終端均可訪問OS中的內容。其主要存儲APDU的內容,也存儲棧運行過程中需要用到的一些臨時變量。
 (4)方法執行區:用于虛擬機執行過程中棧操作的空間,保存運行的執行數據、中間結果等。
應用代碼區和靜態變量區可以通過文件系統進行存儲,保存在智能卡的Flash中。信息共享區和方法執行區一般通過物理地址讀寫,保存在智能卡的RAM中。
4 JCVM中棧與幀的執行對象
 由于具有方便移植、安全和程序代碼小等優點,JCVM中執行的程序都是以字節碼的形式存在,而棧與幀的主要執行對象就是存放在應用代碼區的Java卡應用程序方法字節碼。方法字節碼由2個或4個字節的方法頭和之后若干長度的方法執行字節碼組成。方法頭中主要包含了max_local,max_stack,narg等信息,其中,max_local指出了該方法需要申請用于局部變量區數組的空間大小,max_stack指出了該方法需要申請用于操作數棧執行的空間空間大小,narg則說明了需要傳遞的參數個數。這些信息為之后創建相應的幀提供了重要的信息。而方法執行字節碼則是一串符合JCVM規范并得以實現該方法的16字節操作碼。
5 JCVM中棧與幀的結構設計
 通過對JCVM中存儲空間的劃分,可以得到一片預留的區域(即方法執行區)用于專門實現JCVM中棧的虛擬。給這片預留的區域制定一個類似于棧先進后出的操作規則,即為虛擬的出棧。而入棧的基本單位,則為幀(Frame)。幀和方法具有一一對應的映射關系,每調用一個方法,就需要創建一個幀,并且入棧,而當方法執行完并返回值之后,相應的幀也將出棧并銷毀。
 幀主要用于存儲數據和操作結果,返回方法的值。它主要由局部變量區、操作數棧和幀控制信息(FrameCI)組成。局部變量區主要是以1個單元,也就是2個字節作為其基本單位的局部變量數組(local variable array),而存在其中的每一個元素都是屬于該方法的一個local array。其主要用來存儲方法傳遞的參數和相關變量,是數組的結構,在字節碼執行過程中,通過數組的索引值進行讀寫。操作數棧(operand stacks)也是以1個單元作為其基本單位,是字節碼執行過程中用于臨時存儲中間數據和操作結構的一片預留區,根據相應方法的方法頭信息確定預留空間的大小,通過執行字節碼進行出入操作數棧的操作。此外,在調用方法的時候,操作數棧還負責存儲傳遞給該方法的參數值以及存儲由該方法返回的返回值。而幀的控制信息主要包括當前方法物理地址(thismethodP)、當前方法上下文(thiscontext)、調用者幀的地址(invmethodP)、調用者方法Bytecode執行進度(invbytecodenum)、調用者方法操作數棧指針(invoperandSP)。這些信息將棧中的每一個幀都動態鏈接起來,并起到對每個方法執行進度進行記錄的作用。當前方法物理地址用于讀取當前方法的Bytecode,上下文的作用相當于防火墻,用來阻止跨界的非法訪問,調用者方法物理地址是在當前方法執行完成后讀取調用者幀的地址,調用者方法Bytecode執行進度和操作數棧指針用于還原調用者幀的在調用前的現場。
棧與幀的結構設計如圖2所示。
6 方法調用與返回操作的處理
 如圖2所示,每一個運行的方法對應著一個幀的結構。當一個方法需要調用另一個方法時,首先要求將被調用者方法的參數壓入當前幀的操作數棧中,然后為該新方法創建一個新的幀,并入棧,將新的幀設置為當前幀。創建新幀的過程,首先是分配一個足夠大小的空間給新的幀,這里,通過讀取該方法的方法頭,可以準確知道局部變量和操作數棧所需要的空間大?。蝗缓蟪跏蓟瘞?,將新方法的相關信息傳入FrameCI,并對一些全局變量和指針進行修改;接著是參數的傳遞。在Java卡中,新方法所需要調用的參數之前已經被壓入調用者方法的幀中,在不考慮疊加技術的情況下,當方法調用執行時,先將參數從調用者方法幀的操作數棧中出棧,然后在順序進入新方法幀的局部變量區,最后根據新方法的Bytecode,執行相關操作。

 對應方法結束的操作,需要銷毀一個幀。這里的方法執行結果分為正常結束執行和不正常結束執行。在正常結束執行的情況下,有可能會有一個返回值給調用者方法,這時,首先將返回結果出該幀的操作數棧,通過invmethodP找到調用者幀,將調用者幀設為當前幀,再進調用者幀的操作數棧。然后修改相關全局變量和指針的值。最后回收原方法幀的使用空間,以留給下次幀的創建。若是不正常結束執行,虛擬機內將產生exception或因執行到一個拋出指令而拋出exception,這時的方法就不會有返回值返回給調用者了。
 另外,之前提到的疊加技術,就是在實現JCVM時,可以將調用者方法幀操作數棧和被調用者方法幀的局部變量區進行疊加的技術,即不需要把之前壓入到調用者方法幀操作數棧中的參數出操作數棧再寫到被調用者方法幀的局部變量區,而是直接將調用者方法幀操作數棧的參數部分看做被調用者方法幀的局部變量區的一部分,使之實現部分區域重合。采用疊加技術不會對方法的創建和銷毀產生任何影響,卻能簡化方法間參數傳遞的機制,同時有效節約方法執行區的空間。
7 幀內部數據的操作
 除了方法調用需要用到的棧操作之外,事實上在JCVM中,更多的是幀內部數據的操作。這些操作主要包括對局部變量區的讀寫操作和對操作數棧的出入棧操作。這些操作連同調用方法的操作一起,完成整個方法的執行。
 例如,有這樣一個方法short add(short a,short b),其執行步驟如下:
 Sload_1   //Load short from local variable 1,then push
 Sload_2//oad short from local variable 2,then push
 Sadd//Pop two shorts,add them,then push the result
 Sstore_3//Pop,then store short into local variable 3
 Sreturn//Return short from method,then destroy the Frame
 當有某方法需要調用這個方法時,首先根據方法頭創建幀結構,將局部變量區和操作數棧初始化,控制信息賦值,接著根據方法的執行指令對操作數棧和局部變量區進行操作。具體操作步驟如圖3所示。

 

 

 在上例的幀執行演示中,圖3的初始化步驟是根據方法頭進行空間的申請,并將相關數據進行初始化賦值。Objectref是對象引用,視具體調用方法而定,一般調用中會以參數的形式傳給新的方法幀,賦值給Local variable 0,而相關參數a、b,也以參數形式在新的方法里分別賦值給Local variable 1、Local variable 2。而方法字節碼的前兩個指令,將存儲在局部變量區索引為1、2的兩個數據壓入操作數棧,其后Sadd指令從操作數棧中彈出這兩個數據,進行加法,再將結果壓回操作數棧中。然后Sstore_3從操作數棧中彈出結果值,存儲到局部變量區索引為3的位置。最后,Sreturn將該方法幀銷毀,完成該方法的全過程。
 通過對JCVM開發規范和一些智能卡開發公司需求和測試文檔的研究和分析,本論文中所提出的存儲資源管理策略,棧與幀結構的設計完全符合要求。通過利用各大公司提供的軟件模擬環境和Applet應用數據包對棧與幀的設計方案進行測試,證明該方案正確可行。
JCVM中棧與幀的設計與實現是開發JCVM的核心問題。本文提出了符合JCVM開發規范的棧與幀的結構設計和執行策略,并對存儲空間進行劃分管理,優化了有限的智能卡存儲空間,并成功使用疊加技術改進了參數傳遞的機制,很好地完成了JCVM中棧與幀的基本功能。本文的研究已經成功運用到華大電子股份有限公司和清華同方公司的芯片上,并已經通過相關部門的軟件測試。
參考文獻
[1] 接觸式智能卡國際規范[S].ISO7816(1-9).
[2] Java Card 2.2.2. Virtual Machine Specification[S]. 2006.
[3] Java Card 2.2.2. Application Programming Interface[S]. 2006.
[4] Java Card 2.2.2. Runtime Environment Specification[S]. 2006.
[5] Java Card Forum. http://www.javacardforum.org/.
[6] 吳東輝,周捷,陳章龍.Java卡的設計[J].微型電腦應用, 2003,19(12).

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美日本在线观看| 国产精品夜夜夜一区二区三区尤| 亚洲品质自拍| 欧美伦理影院| 国产主播在线一区| 国产真实精品久久二三区| 亚洲精品视频啊美女在线直播| 午夜精品视频在线观看一区二区| 欧美日本不卡视频| 1024欧美极品| 国产又爽又黄的激情精品视频| 亚洲欧洲精品天堂一级| 欧美精品久久久久久久免费观看| 9色国产精品| 亚洲深夜福利| 尹人成人综合网| 欧美视频官网| 国产精品欧美日韩久久| 一区二区三区欧美亚洲| 久久视频一区二区| 国产欧美日韩视频一区二区| 亚洲午夜日本在线观看| 亚洲欧美日本视频在线观看| 一区二区三区无毛| 亚洲综合999| 国产精品国产三级国产专播品爱网| 久久人人97超碰人人澡爱香蕉| 久久另类ts人妖一区二区| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美日本一区二区视频在线观看| 国产精品日韩欧美一区二区| 亚洲伦理在线免费看| 尤物九九久久国产精品的分类| 免费毛片一区二区三区久久久| 在线精品福利| 久久福利一区| 欧美一区二区三区免费大片| 亚洲深夜福利视频| 亚洲欧美一区二区三区极速播放| 国产欧美综合在线| 亚洲日韩欧美视频一区| 国产午夜精品理论片a级探花| 精品成人国产在线观看男人呻吟| 99视频日韩| 日韩一级大片在线| 欧美激情1区2区| 一区二区三区欧美成人| 夜夜嗨网站十八久久| 欧美日韩成人在线视频| 欧美一区二区三区在线视频| 欧美午夜不卡在线观看免费| 欧美日韩另类一区| 亚洲一区二区三区四区在线观看| 欧美日韩国产成人精品| 亚洲精品国偷自产在线99热| 亚洲精品视频在线看| 亚洲毛片视频| 欧美日韩国产精品一区二区亚洲| 在线精品在线| 欧美一二三视频| 在线观看日韩一区| 国产欧美 在线欧美| 国产精品毛片一区二区三区| 亚洲日本成人网| 欧美国产日本韩| 一区二区日韩免费看| 欧美肥婆在线| 午夜精品免费| 一区二区三区免费在线观看| 巨乳诱惑日韩免费av| 国产日韩一区在线| 亚洲免费网址| 久久久久国产成人精品亚洲午夜| 亚洲综合好骚| 国内精品福利| 一色屋精品视频在线看| 一区二区免费在线观看| 亚洲人体一区| 在线播放日韩欧美| 欧美日韩美女在线观看| 久久精品夜色噜噜亚洲aⅴ| 国产毛片久久| 在线观看亚洲一区| 亚洲欧美精品| 99re热这里只有精品免费视频| 亚洲精品一区二区在线观看| 欧美日韩在线亚洲一区蜜芽| 国内成人在线| 亚洲国产高清在线观看视频| 欧美日韩国产麻豆| 欧美噜噜久久久xxx| 国产精品国产自产拍高清av| 欧美成人小视频| 亚洲国产老妈| 欧美91视频| 国产综合色在线视频区| 日韩网站在线看片你懂的| 久久精品国产亚洲5555| 在线看日韩欧美| 欧美91福利在线观看| 日韩香蕉视频| 黄色小说综合网站| 亚洲欧美日韩中文视频| 欧美午夜视频在线观看| 99re这里只有精品6| 亚洲欧美日韩国产一区二区三区| 欧美精品v日韩精品v韩国精品v| 亚洲黄一区二区| 精品成人一区| 亚洲欧美卡通另类91av| 欧美一二三区在线观看| 欧美国产日本韩| 国产精品久久97| 在线观看av一区| 国产精品久久久久久五月尺| 99v久久综合狠狠综合久久| 另类酷文…触手系列精品集v1小说| 欧美日本簧片| 国产日韩欧美一区二区三区四区| 影音先锋国产精品| 亚洲午夜电影在线观看| 亚洲精品欧美极品| 国产精品欧美风情| 欧美午夜久久久| 欧美国产日本高清在线| 亚洲美女免费视频| 狠狠色综合色区| 国产精品尤物| 蜜桃久久精品一区二区| 国产一区二区欧美| 亚洲国产精品一区二区久| 亚洲精品网站在线播放gif| 激情五月综合色婷婷一区二区| 亚洲欧美精品中文字幕在线| 国产精品久久久久久亚洲调教| 国产精品日韩欧美| 国产一级揄自揄精品视频| 正在播放欧美一区| 欧美主播一区二区三区美女 久久精品人| 欧美3dxxxxhd| 久久阴道视频| 免费观看欧美在线视频的网站| 亚洲一区二区三区三| 国产精品一区二区在线观看网站| 欧美一二区视频| 免费一级欧美片在线观看| 欧美日韩国产999| 亚洲精品国产精品乱码不99| 欧美有码视频| 国产精品有限公司| 久久午夜av| 欧美午夜精品一区二区三区| 久久久xxx| 国产一区视频在线看| 亚洲国产网站| 开心色5月久久精品| 亚洲成色777777在线观看影院| 欧美日韩另类视频| 久久久精品免费视频| 国产午夜精品在线观看| 久久久久久9| 国产精品免费观看视频| 欧美在线视频播放| 看欧美日韩国产| 一区二区免费在线播放| 久久福利一区| 国产精品视频久久| 99视频有精品| 欧美极品在线视频| 国产欧美精品一区二区色综合| 国产精品国产福利国产秒拍| 国产精品视频内| 亚洲桃色在线一区| 国产精品视频一区二区三区| 欧美激情中文字幕在线| 午夜精品一区二区三区四区| 欧美麻豆久久久久久中文| 亚洲欧美精品suv| 国产欧美日韩精品a在线观看| 欧美三日本三级少妇三2023| 欧美激情按摩在线| 久久婷婷成人综合色| 欧美一区二区在线免费观看| 久久aⅴ乱码一区二区三区| 日韩一级片网址| 欧美+日本+国产+在线a∨观看| 欧美国产亚洲另类动漫| 一区二区三区波多野结衣在线观看| 欧美精品免费在线| 亚洲二区在线| 国产精品久久久久久av福利软件| 免费高清在线视频一区·| 免费观看成人www动漫视频| 亚洲国产精品成人一区二区| 免费人成网站在线观看欧美高清| 国产女人水真多18毛片18精品视频| 欧美日韩精品免费观看视一区二区| 亚洲天堂av电影| 国产欧美一区二区三区久久人妖| 红桃视频国产精品| 欧美午夜激情小视频| 欲色影视综合吧| 欧美日本不卡| 校园春色综合网| 国产精品永久入口久久久| 免费看的黄色欧美网站| 久久久久综合一区二区三区| 黄色av成人| 国产欧美一区二区白浆黑人| 国产亚洲va综合人人澡精品| 国产日韩欧美夫妻视频在线观看| 国产亚洲成av人在线观看导航| 欧美aⅴ99久久黑人专区| 欧美日韩1区| 久久精品国产一区二区三区| 又紧又大又爽精品一区二区| 亚洲精品国产欧美| 欧美日韩精品一区二区三区| 亚洲欧美激情一区| 韩国精品主播一区二区在线观看| 久久久精品一区二区三区| 国产美女精品视频| 一区二区三区四区国产精品| 亚洲人屁股眼子交8| 亚洲国产欧美国产综合一区| 久久免费观看视频| 欧美91大片| 午夜欧美电影在线观看| 久久av资源网站| 久久免费国产精品| 亚洲国产精品激情在线观看| 欧美一区二区三区的| 欧美欧美天天天天操| 欧美天堂亚洲电影院在线播放| 狠狠干狠狠久久| 国产精品大片wwwwww| 亚洲黄色成人| 欧美日本国产精品| 日韩午夜免费视频| 久久久中精品2020中文| 久久午夜精品| 极品av少妇一区二区| 亚洲综合久久久久| 国产日韩一区二区三区| 欧美一区二区在线观看| 黄色亚洲精品| 久久精品国产久精国产一老狼| 国产麻豆一精品一av一免费| 欧美激情视频网站| 亚洲综合首页| 欧美一区三区三区高中清蜜桃| 香蕉国产精品偷在线观看不卡| 国语自产精品视频在线看一大j8| 国产精品视频在线观看| 国产欧美一区二区三区国产幕精品| 久久久久一区二区三区| 国产精品免费一区二区三区在线观看| 亚洲一区二区三区在线看| 亚洲专区在线视频| 久久久美女艺术照精彩视频福利播放| 亚洲欧洲日韩女同| 国产日韩1区| 在线日韩视频| 欧美精品久久久久久久久久| 亚洲日本一区二区| 午夜一区二区三区在线观看| 韩国精品一区二区三区| 老色鬼久久亚洲一区二区| 在线观看亚洲视频啊啊啊啊| 国产在线播放一区二区三区| 欧美精品高清视频| 久久婷婷国产麻豆91天堂| 亚洲视频在线播放| 久久亚洲国产精品日日av夜夜| 欧美国产极速在线| 欧美一区2区三区4区公司二百| 激情欧美一区二区三区在线观看| 欧美日韩亚洲一区二区三区在线| 亚洲欧美日韩国产综合在线| 影音先锋久久精品| 国产精品草莓在线免费观看| 久久久久九九九九| 久久国产综合精品| 久热精品视频在线观看| 久久激情久久| 欧美激情久久久久久| 久久精品亚洲乱码伦伦中文| 99综合精品| 久久久精品一品道一区| 久久成人在线| 欧美高清一区| 久久成人综合网| 久久久久久伊人| 欧美香蕉视频| 国产欧美日韩一区二区三区在线| 亚洲午夜激情免费视频| 中文av一区二区| 一区二区三区视频在线观看| 久久久人成影片一区二区三区| 久久九九全国免费精品观看| 国产美女精品一区二区三区| 91久久精品视频| 亚洲第一中文字幕| 久久精精品视频| 久久九九全国免费精品观看| 99天天综合性| 欧美久久久久久久| 麻豆九一精品爱看视频在线观看免费| 在线亚洲免费| 欧美三级韩国三级日本三斤| 国产精品亚洲综合天堂夜夜| 国产亚洲福利| 亚洲精品免费一区二区三区| 欧美日韩欧美一区二区| 国产精品狼人久久影院观看方式| 国产精品男gay被猛男狂揉视频| 韩国成人精品a∨在线观看| 欧美大尺度在线| 国产精品嫩草99a| 91久久综合亚洲鲁鲁五月天| 在线观看国产成人av片| 狠狠爱成人网| 好吊日精品视频| 亚洲国产精品一区二区第四页av| 一本色道久久综合一区| 亚洲高清不卡在线| 欧美日韩精品欧美日韩精品一| 欧美在线视频观看免费网站|