国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      智能卡中java程序指令的執(zhí)行方法

      文檔序號:6458778閱讀:138來源:國知局
      專利名稱:智能卡中java程序指令的執(zhí)行方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種高級語言的解釋與執(zhí)行方法,尤其是智能卡中 JAVA程序指令的執(zhí)行方法。
      背景技術(shù)
      JAVA語言作為一種高級編程語言,因其具有簡單、安全、可移 植等優(yōu)點(diǎn)而被采用來作為操作系統(tǒng)程序、應(yīng)用軟件的編程工具語言。 由于JAVA語言具有跨平臺性的特點(diǎn),因此, 一般的計(jì)算機(jī)系統(tǒng)硬件 設(shè)備不能直接執(zhí)行由JAVA語言編寫而成的程序。例如,現(xiàn)有的部分 智能卡操作系統(tǒng)程序使用JAVA語言編寫而成,程序經(jīng)過編譯后以字 節(jié)碼的形式存儲在智能卡中,但智能卡的中央處理器不能直接執(zhí)行 JAVA語言編譯成的字節(jié)碼。因此,智能卡中需要設(shè)置一個(gè)虛擬機(jī), 由虛擬機(jī)將JAVA字節(jié)碼翻譯成智能卡可直接執(zhí)行的本地可執(zhí)行代碼 然后再由中央處理器執(zhí)行?,F(xiàn)有的虛擬才幾解釋執(zhí)行字節(jié)碼時(shí),是以不斷循環(huán)地逐條讀取并逐 條解釋字節(jié)碼的方式進(jìn)行的。每次讀取解釋字節(jié)碼時(shí),需要完成讀取 字節(jié)碼、讀取字節(jié)碼解釋程序地址、跳轉(zhuǎn)至該地址并解釋、跳轉(zhuǎn)至循 環(huán)的起點(diǎn)讀取下一字節(jié)碼等步驟。這樣,每次讀取解釋字節(jié)碼需要完 成兩次讀取與兩次跳轉(zhuǎn)過程,這占用了大量時(shí)間,使智能卡運(yùn)行效率 低下,不能滿足人們對智能卡運(yùn)行速度的要求。公告號為CN1173262C的中國發(fā)明專利公開了 一種名為"虛擬機(jī) 指令的優(yōu)化字節(jié)碼解釋器"的發(fā)明創(chuàng)造。該專利公開的虛擬機(jī)使用宏 代碼來代替簡單字節(jié)碼的序列,在虛擬機(jī)中設(shè)置一個(gè)間接線程解釋 器,并使用該間接線程解釋器來解釋宏代碼。虛擬機(jī)解釋字節(jié)碼時(shí), 使用間接線程解釋器解釋宏代碼,而并不逐條解釋字節(jié)碼。這樣,執(zhí) 行一 個(gè)宏代碼的解釋程序即實(shí)現(xiàn)執(zhí)行多條字節(jié)碼解釋程序所實(shí)現(xiàn)的功 能,相對減少了讀取與解釋多條字節(jié)碼的時(shí)間,尤其是減少了因多次 跳轉(zhuǎn)而消耗的時(shí)間,相對加快了智能卡的運(yùn)行速度。但由于這種虛擬機(jī)還是需要將宏代碼翻譯成本地代碼才能執(zhí)行, 仍需要消耗一定的時(shí)間,智能卡的運(yùn)行效率仍不理想。同時(shí),還需要 在虛擬機(jī)中設(shè)置間接線程解釋器,使虛擬機(jī)變得更加復(fù)雜,不利于智 能卡簡^更開發(fā)。發(fā)明內(nèi)容本發(fā)明的主要目的是提供一種使需要運(yùn)行JAVA程序的智能卡運(yùn) 行速度較快的JAVA程序指令執(zhí)行方法。為實(shí)現(xiàn)上述的主要目的,本發(fā)明提供的JAVA程序指令的執(zhí)行方 法中,JAVA程序存儲在一智能卡內(nèi),該智能卡中設(shè)置有可執(zhí)行JAVA 程序的虛擬機(jī)、中央處理器及可由中央處理器訪問的存儲器,該存儲 器中存儲有JAVA程序的字節(jié)碼,該方法包括以下步驟步驟一根據(jù)字節(jié)碼,將其轉(zhuǎn)換成對本地代碼的一系列調(diào)用,形 成本地程序;步驟二將本地程序編譯成本地可執(zhí)行代碼,將本地可執(zhí)行代碼 存儲至智能卡的存儲器中;步驟三虛擬機(jī)讀取字節(jié)碼,并判斷是否有本地程序與所讀取的 字節(jié)碼對應(yīng),若有,則執(zhí)行對應(yīng)的本地程序,否則解釋并執(zhí)行所讀取 的字節(jié)碼。由上述方法可見,由于預(yù)先將字節(jié)碼轉(zhuǎn)換成本地程序,并將本地 程序編譯成智能卡中央處理器能夠直接執(zhí)行的本地可執(zhí)行代碼,同時(shí)將本地可執(zhí)行代碼存儲在智能卡中,虛擬機(jī)讀取字節(jié)碼時(shí)即可判斷在 智能卡中是否有與該字節(jié)碼對應(yīng)的本地程序,如果有對應(yīng)的本地程序 則執(zhí)行本地程序,并不將字節(jié)碼進(jìn)行解釋。由于智能卡執(zhí)行本地程 序,也就是執(zhí)行本地可執(zhí)行代碼所消耗的時(shí)間遠(yuǎn)遠(yuǎn)小于虛擬機(jī)解釋字 節(jié)碼所消耗的時(shí)間,因此,采樣本發(fā)明的方法可大大提高智能卡運(yùn)行 速度。同時(shí),由于虛擬機(jī)解釋字節(jié)碼時(shí)不需要對宏代碼進(jìn)行解釋,因此 不需要在虛擬機(jī)中設(shè)置間接線程解釋器,使虛擬機(jī)變得簡單,也給智 能卡的開發(fā)帶來便利。進(jìn)一步的方案是,智能卡的開發(fā)人員預(yù)先轉(zhuǎn)換好多段本地程序, 并對每一本地程序進(jìn)行編號,通過該編號將每一本地程序與對應(yīng)的字 節(jié)碼對應(yīng)起來,然后再編譯成多段本地可執(zhí)行代碼。當(dāng)虛擬機(jī)讀取字 節(jié)碼后判斷該字節(jié)碼對應(yīng)哪一本地程序,并通過該編號判斷需要執(zhí)行哪一段本地程序,并^l行該本地程序。這樣,虛擬才幾可在執(zhí)行本地程序時(shí)可方^f更地識別需要纟丸行哪一本 地程序,有利于虛擬機(jī)快速準(zhǔn)確的執(zhí)行本地程序,提高智能卡的運(yùn)行 速度。


      圖1是應(yīng)用本發(fā)明JAVA程序指令執(zhí)行方法實(shí)施例的智能卡結(jié)構(gòu) 示意框圖;圖2是本發(fā)明JAVA程序指令執(zhí)行方法實(shí)施例中虛擬機(jī)讀取字節(jié) 碼的示意圖;圖3是本發(fā)明JAVA程序指令執(zhí)行方法實(shí)施例的流程圖。 以下結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn) 一 步說明。
      具體實(shí)施方式
      參見圖1,圖1是應(yīng)用本發(fā)明JAVA程序指令執(zhí)行方法實(shí)施例的 智能卡結(jié)構(gòu)示意框圖。智能卡1包括中央處理器11以及存儲器,其 中存儲器有R0M12、 RAM13以及EEPROMl4, R0M12中存儲有智能卡1 的程序,包括才喿作系統(tǒng)程序以及應(yīng)用程序。智能卡1的操作系統(tǒng)程序 由JAVA語言編寫而成,因此需要在智能卡1中設(shè)置能夠執(zhí)行JAVA程 序的虛擬機(jī)。虛擬機(jī)是一個(gè)通過軟件實(shí)現(xiàn)的虛擬設(shè)備,用于解釋并執(zhí) 行JAVA程序。參見圖2,圖2是本發(fā)明實(shí)施例中虛擬機(jī)讀取字節(jié)碼的示意圖。 智能卡開發(fā)人員使用JAVA語言編寫智能卡的操作系統(tǒng)程序21,該操 作系統(tǒng)程序經(jīng)過編譯后以字節(jié)碼的形式存儲在存儲器中。智能卡運(yùn)行 時(shí),虛擬才幾20逐條讀取字節(jié)碼。虛擬才幾20的虛擬PC (Program Counter,程序計(jì)數(shù)器)指針將指向當(dāng)前操作的字節(jié)碼,在當(dāng)前字節(jié) 碼執(zhí)行完畢后,虛擬PC指針指向下一字節(jié)碼,即虛擬機(jī)20讀取下一字節(jié)碼,同時(shí)執(zhí)行該字節(jié)碼。虛擬機(jī)20不斷讀取并執(zhí)行字節(jié)碼,直 至字節(jié)碼讀取完畢。本發(fā)明JAVA程序指令執(zhí)行方法的流程圖如圖3所示。應(yīng)用本發(fā) 明方法時(shí),智能卡開發(fā)人員根據(jù)開發(fā)出的JAVA程序,選取部分虛擬 機(jī)需要頻繁執(zhí)行的字節(jié)碼,將其轉(zhuǎn)換成對本地代碼,如C語言的一系 列調(diào)用,從而形成本地程序(步驟SI)。這一步驟可在JAVA語言編 譯成字節(jié)碼時(shí)生產(chǎn)的信息來完成,因此本地程序?qū)崿F(xiàn)的功能與被選取 的字節(jié)碼所實(shí)現(xiàn)的功能完全相同,并在虛擬機(jī)執(zhí)行字節(jié)碼時(shí)可代替該 字節(jié)碼。由于智能卡運(yùn)行時(shí)頻繁執(zhí)行的字節(jié)碼往往不止一條,因此可 選取多條字節(jié)碼并分別對其轉(zhuǎn)換成相應(yīng)的對本地代碼的調(diào)用,形成多 段本地程序。并對多,殳本地程序進(jìn)4亍編號,然后將這些本地程序編譯 成中央處理器可直接執(zhí)行的本地可執(zhí)行代碼(步驟S2),并將本地 可執(zhí)行代碼存儲到存儲器中(步驟S3)。多段本地程序可以是連續(xù) 地存儲在智能卡的存儲中,也可以是不連續(xù)存儲。即使多段本地程序 是被連續(xù)地存儲,虛擬機(jī)也不是連續(xù)執(zhí)行多段本地程序,而是每次只 執(zhí)行一段相應(yīng)的本地程序,即多段本地程序是不連續(xù)執(zhí)行的。智能卡運(yùn)行時(shí),虛擬機(jī)逐條讀取字節(jié)碼(步驟S4),并判斷是 否有相應(yīng)的本地程序與讀取的字節(jié)碼向?qū)?yīng)(步驟S5),若有,虛 擬機(jī)不解釋該字節(jié)碼,而直接執(zhí)行對應(yīng)的本地程序(步驟S6),也 就是執(zhí)行該段本地程序所對應(yīng)的本地可執(zhí)行代碼。由于每一本地程序 均有唯一編號,虛擬機(jī)可通過編號找出讀取的字節(jié)碼所對應(yīng)的本地程 序,并執(zhí)行該本地程序。由于執(zhí)行本地程序?qū)崿F(xiàn)的功能與解釋執(zhí)行字 節(jié)碼所實(shí)現(xiàn)的功能相同,而執(zhí)行本地程序所需要的時(shí)間遠(yuǎn)少于解釋執(zhí) 行字節(jié)碼所消耗的時(shí)間,因此,執(zhí)行本地程序能大大減少智能卡運(yùn)行 時(shí)間,提高智能卡運(yùn)行效率。當(dāng)然,智能卡中并不是每一字節(jié)碼均有本地程序與之對應(yīng),當(dāng)虛 擬機(jī)判斷所讀取的字節(jié)碼沒有相應(yīng)的本地程序時(shí),則解釋執(zhí)行所讀取 的字節(jié)碼(步驟S7)。解釋執(zhí)行字節(jié)碼的過程與現(xiàn)有的虛擬機(jī)解釋 執(zhí)行字節(jié)碼的過程相同,都是讀取字節(jié)碼解釋程序地址、跳轉(zhuǎn)至該地 址并解釋、跳轉(zhuǎn)至循環(huán)的起點(diǎn)讀取下一字節(jié)碼,在此不在贅述。虛擬機(jī)判斷所讀取的字節(jié)碼是否有相應(yīng)的本地程序,可使用下面的一段程序?qū)崿F(xiàn)Void interpreter()Byte Ins;While (PC!- INIT—PC)Ins = fetchByte(); Swi tch (Ins)Case IL0AD: I load (); Break; Case PUSH:Push(); Breakj Case POP:Pop(); 〃解釋并執(zhí)行字節(jié)碼 Break;Case I扁KE-VM:I扁ke眉(); 〃執(zhí)行本地程序 Break;虛擬機(jī)讀取字節(jié)碼后,判斷字節(jié)碼的類型,若字節(jié)碼的類型為上 述程序中的ILOAD、 PUSH或POP等類型,則解釋并執(zhí)行該字節(jié)碼,若 字節(jié)碼的類型為INVOKE-VM類型,則虛擬機(jī)判斷該字節(jié)碼有相應(yīng)的本地程序,并通過本地程序的編號找出對應(yīng)的本地程序,同時(shí)執(zhí)行該本 地程序。虛擬機(jī)執(zhí)行完本地程序或字節(jié)碼解釋程序后,判斷字節(jié)碼是否已經(jīng)讀取完畢(步驟S8),若沒有,返回步驟S4,繼續(xù)讀取字節(jié)碼并 進(jìn)行相關(guān)的操作,直至字節(jié)碼讀取完畢或程序終止。若字節(jié)碼已經(jīng)讀 取完畢,即程序已經(jīng)完成,虛擬機(jī)結(jié)束工作。在本發(fā)明的方法中,智能卡中存儲有中央處理器可直接執(zhí)行的本 地可執(zhí)行代碼,虛擬機(jī)讀取字節(jié)碼后判斷若有本地程序與所讀取的字 節(jié)碼相對應(yīng),則扭j于本地程序,即執(zhí)行本地可才丸行代碼,而不解釋執(zhí) 行字節(jié)碼。由于虛擬機(jī)執(zhí)行本地程序時(shí)不需要進(jìn)行跳轉(zhuǎn)、翻譯等過程,其執(zhí)行速度遠(yuǎn)快于解釋執(zhí)行字節(jié)碼的速度,因此,使用本地程序 來代替部分頻繁執(zhí)行的字節(jié)碼,能大大減少虛擬機(jī)解釋執(zhí)行字節(jié)碼所 消耗的時(shí)間,從而提高智能卡運(yùn)行速度。同時(shí),使用本發(fā)明的方法來執(zhí)行JAVA程序,并不需要在智能卡 或虛擬機(jī)中設(shè)置其它軟件或硬件設(shè)備,只需要在智能卡內(nèi)存儲若干本 地可執(zhí)行代碼即可,不增加智能卡開發(fā)成本,不會給智能卡的開發(fā)帶 來不便,本領(lǐng)域的技術(shù)人員很容易即可實(shí)現(xiàn)。當(dāng)然,上述實(shí)施例僅是本發(fā)明的一種實(shí)施方案,實(shí)際應(yīng)用中,還 可以有更多的方式,例如,僅使用一段連續(xù)的本地程序來代替某一條 最頻繁使用字節(jié)碼,這樣本地程序只有一段。當(dāng)虛擬機(jī)讀取該特定的 字節(jié)碼時(shí)即執(zhí)行該本地程序,也可以減少智能卡運(yùn)行時(shí)間。又或者本地程序所代替的字節(jié)碼不一定是頻繁執(zhí)行的字節(jié)碼,還可以是解釋執(zhí) 行時(shí)消耗時(shí)間較長的字節(jié)碼。同樣,本地程序代替的也不一定是單一 的字節(jié)碼,還可以是特定的若干條連續(xù)的字節(jié)碼組成的字節(jié)碼序列, 即使用 一段本地程序來代替一段字節(jié)碼序列,這些均不影響本發(fā)明的 實(shí)現(xiàn)。同樣,本發(fā)明的方法也不只限于執(zhí)行智能卡操作系統(tǒng)程序時(shí)使 用,若智能卡的應(yīng)用程序也是使用JAVA語言開發(fā)的,也可使用本發(fā) 明的方法來提高智能卡的運(yùn)行速度。最后,需要強(qiáng)調(diào)的是,本發(fā)明不限于上述實(shí)施方式,諸如虛擬機(jī)類型的改變、使用的本地程序生產(chǎn)方法的改變等^:小變化也應(yīng)該包括 在本發(fā)明的保護(hù)范圍內(nèi)。
      權(quán)利要求
      1、智能卡中JAVA程序指令的執(zhí)行方法,該智能卡中設(shè)置有可執(zhí)行JAVA程序的虛擬機(jī)以及中央處理器、可由中央處理器訪問的存儲器,該存儲器中存儲有JAVA程序的字節(jié)碼,該方法包括以下步驟步驟一根據(jù)字節(jié)碼,將其轉(zhuǎn)換成對本地代碼的一系列調(diào)用,形成本地程序;步驟二將本地程序編譯成本地可執(zhí)行代碼,將本地可執(zhí)行代碼存儲至智能卡的存儲器中;步驟三虛擬機(jī)讀取所述字節(jié)碼,并判斷是否有本地程序與所讀取的字節(jié)碼對應(yīng),若有,則執(zhí)行對應(yīng)的本地程序,否則解釋并執(zhí)行所讀取的字節(jié)碼。
      2、 根據(jù)權(quán)利要求1所述智能卡中JAVA程序指令的執(zhí)行方法,其 特征在于所述本地程序?yàn)?一段連續(xù)的本地程序。
      3、 根據(jù)權(quán)利要求1所述智能卡中JAVA程序指令的執(zhí)行方法,其 特征在于所述本地程序?yàn)槎位蚨我陨喜贿B續(xù)的本地程序。
      4、 根據(jù)權(quán)利要求3所述智能卡中JAVA程序指令的執(zhí)行方法,其 特征在于所述步驟一 中還包括對本地程序進(jìn)行編號。
      5、 根據(jù)權(quán)利要求1至4任一項(xiàng)所述智能卡中JAVA程序指令的執(zhí) 行方法,其特征在于所述本地程序所對應(yīng)的字節(jié)碼為虛擬機(jī)頻繁讀取解釋的字節(jié)碼。
      全文摘要
      本發(fā)明提供一種智能卡中JAVA程序指令的執(zhí)行方法,該智能卡中設(shè)置有可執(zhí)行JAVA程序的虛擬機(jī)以及中央處理器、可由中央處理器訪問的存儲器,存儲器中存儲有JAVA程序的字節(jié)碼,該方法包括根據(jù)字節(jié)碼,將其轉(zhuǎn)換成對本地代碼的一系列調(diào)用,形成本地程序;將本地程序編譯成本地可執(zhí)行代碼,將本地可執(zhí)行代碼存儲至智能卡的存儲器中;虛擬機(jī)讀取字節(jié)碼,并判斷是否有本地程序與所讀取的字節(jié)碼對應(yīng),若有,則執(zhí)行對應(yīng)的本地程序,否則解釋并執(zhí)行所讀取的字節(jié)碼。應(yīng)用本本發(fā)明的方法執(zhí)行JAVA程序,可大大減少JAVA程序執(zhí)行時(shí)間,提高智能卡的運(yùn)行速度。
      文檔編號G06F9/45GK101231597SQ200810026270
      公開日2008年7月30日 申請日期2008年2月1日 優(yōu)先權(quán)日2008年2月1日
      發(fā)明者施偉周, 怡 朱, 輝 汪 申請人:東信和平智能卡股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1