亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于資源受限裝置的面向?qū)ο蟮闹噶罴闹谱鞣椒?

文檔序號:6479452閱讀:170來源:國知局
專利名稱:用于資源受限裝置的面向?qū)ο蟮闹噶罴闹谱鞣椒?br> 背景本發(fā)明一般地涉及用于諸如智能卡之類的資源受限裝置的、面向?qū)ο蟮?、體系結(jié)構(gòu)的影響為中性的各種程序。
虛擬機(jī)是由一種被處理器執(zhí)行的軟件應(yīng)用程序或指令序列產(chǎn)生的抽象計(jì)算機(jī)。術(shù)語“體系結(jié)構(gòu)的影響為中性的”指的是可以由一部虛擬機(jī)在具有多種不同的計(jì)算機(jī)體系結(jié)構(gòu)的多種計(jì)算機(jī)平臺上來執(zhí)行的各種程序,例如那些用JavaTM編程語言編寫的程序。因此,例如,在一個基于WindowsTM的個人計(jì)算機(jī)系統(tǒng)上被執(zhí)行的虛擬機(jī),將使用相同于在基于UNIXTM的計(jì)算機(jī)系統(tǒng)上被執(zhí)行的虛擬機(jī)的指令集。虛擬機(jī)指令序列的平臺無關(guān)編碼的結(jié)果是一個或多個字節(jié)碼的流,其中的每一個都是,例如,一個長度為一個字節(jié)的數(shù)字代碼。
使用Java編程語言已經(jīng)找到多種應(yīng)用,包括,例如,那些跟網(wǎng)絡(luò)瀏覽器相關(guān)的應(yīng)用。
Java編程語言是面向?qū)ο蟮?。在一個面向?qū)ο蟮南到y(tǒng)中,“類”描述數(shù)據(jù)的一個集合,以及用于對該數(shù)據(jù)進(jìn)行操作的各種方法。把它們合在一起,數(shù)據(jù)和各種方法描述一個對象的狀態(tài)和行為。
Java還是可驗(yàn)證的,因此,在執(zhí)行用Java編程語言編寫的一段應(yīng)用程序之前,可以對以下問題作出判定在該段程序中,是否有任何指令序列將嘗試為該字節(jié)碼處理一種不適當(dāng)類型的數(shù)據(jù),或者執(zhí)行該段程序中的各字節(jié)碼指令是否會引起一個操作數(shù)棧的下溢或溢出。
JavaTM虛擬機(jī)執(zhí)行用Java編程語言編寫的虛擬機(jī)器碼,并且被設(shè)計(jì)為與32位體系結(jié)構(gòu)配合工作。然而,各種資源受限裝置,例如各種智能卡,具有8位或16位的體系結(jié)構(gòu)。
各種智能卡,也被稱為智能的便攜式數(shù)據(jù)傳輸卡,通常由塑料或金屬制成,并且含有一塊電子芯片,里面包括一個嵌入的、用以執(zhí)行各種程序的微處理器,以及存儲器,用以存儲各種程序和數(shù)據(jù)。這樣的裝置,可能大約只有一張信用卡那樣的大小,典型地具有有限的存儲器容量。例如,某些智能卡具有小于1千字節(jié)(1k)的隨機(jī)存取存儲器(RAM),以及有限的只讀存儲器(ROM),和/或諸如電可擦除可編程只讀存儲器(EEPROM)那樣的非易失性存儲器。受限的體系結(jié)構(gòu)以及存儲器使得在該裝置上實(shí)現(xiàn)全Java虛擬機(jī)成為不實(shí)際的或者是不可能的。
而且,各種智能卡涉及多種處理器和配置。因此,人們希望提供一種能夠在這樣的資源受限裝置上執(zhí)行的、與平臺無關(guān)的編程語言。
概要一般來說,這里所描述的是一種可驗(yàn)證的、基于對象的、類型安全和指針安全的、用于應(yīng)用軟件程序的指令集,這些應(yīng)用軟件程序可以下載到一系列資源受限的裝置上并在其上執(zhí)行。
根據(jù)(本發(fā)明的)一個方面,應(yīng)用軟件程序包括一段駐留在計(jì)算機(jī)可讀介質(zhì)之中的、面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列。該程序可以被裝載到一個資源受限裝置之中并由后者加以執(zhí)行,上述資源受限裝置基于短于32位的體系結(jié)構(gòu),例如16位或8位的體系結(jié)構(gòu)。
根據(jù)(本發(fā)明的)另一個方面,應(yīng)用軟件程序包括一段駐留在計(jì)算機(jī)可讀介質(zhì)之中的、面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列。該程序可以被裝載到一個具有不大于64KB容量的隨機(jī)存取存儲器的資源受限裝置中并由其加以執(zhí)行。
各種實(shí)施方案包括一種或多種下列特征。例如,每一條指令都包括一個8位的操作碼,并且,各指令的序列與硬件平臺無關(guān)。在某些實(shí)施方案中,該序列包括這樣一些指令,它們事先從至少一個Java類文件中被轉(zhuǎn)換過來,并且其中指向一個常數(shù)池的至少某些引用被轉(zhuǎn)換,以便納入數(shù)據(jù)。例如,各指令都可以包括各操作碼和各操作數(shù)。指向常數(shù)池的某些引用被納入到各操作數(shù)之中,并且,指向常數(shù)池的某些引用被納入到各操作碼之中。
類似地,在某些實(shí)施例中,可以由支持多種數(shù)據(jù)類型的裝置來執(zhí)行各種指令。指令序列可以包括各種數(shù)據(jù)操作指令,其中,每一條數(shù)據(jù)操作指令都專用于一種特定的數(shù)據(jù)類型。在某些實(shí)施方案中,跟每一種數(shù)據(jù)操作指令相關(guān)的數(shù)據(jù)類型是從下列各種類型中選擇一種帶符號的8位2的補(bǔ)碼整型數(shù),帶符號的16位2的補(bǔ)碼整型數(shù),以及帶符號的32位2的補(bǔ)碼整型數(shù)。此外,可以由支持多種引用類型的一部裝置來執(zhí)行各種指令,其中,每一種引用類型都是從下列各種類型中選擇一種類類型,接口類型和數(shù)組類型。而且,該程序可以包括一條或多條復(fù)合指令,用以對一個當(dāng)前對象進(jìn)行一次運(yùn)算。
根據(jù)(本發(fā)明的)另一個方面,資源受限裝置含有存儲器,用以存儲一段應(yīng)用軟件程序,其中包括一組面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列。該裝置還包括在一塊微處理器上實(shí)現(xiàn)的一部虛擬機(jī)。該虛擬機(jī)能夠執(zhí)行該指令序列。在各種實(shí)施例中,該裝置可以基于受限的體系結(jié)構(gòu)或者可以具有有限的存儲器容量。例如,在某些實(shí)施方案中,該裝置含有容量不大于64KB的隨機(jī)存取存儲器。在其他的各實(shí)施例中,微處理器基于短于32位的體系結(jié)構(gòu),例如,16位或8位的體系結(jié)構(gòu)。
在其他的各實(shí)施例中,可以用專用集成電路(ASIC)或者硬件與固件的組合來取代運(yùn)行于微處理器之上的虛擬機(jī)。
在本發(fā)明的一個特定的應(yīng)用實(shí)例中,資源受限裝置是一塊智能卡。該智能卡可以包括實(shí)現(xiàn)于一塊微處理器之上的一部虛擬機(jī),其中,該虛擬機(jī)能夠執(zhí)行一個指令序列,例如上面所說的那些。
根據(jù)(本發(fā)明的)另一個方面,公開了使用應(yīng)用軟件程序的各種方法,所述程序中包括一個面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列。可以在一部資源受限裝置(例如,具有有限的存儲器或者基于受限的體系結(jié)構(gòu))中接收該軟件程序。然后,在資源受限裝置中執(zhí)行該指令序列。在某些實(shí)施方案中,在將該程序下載到資源受限裝置之前,可以在一個計(jì)算機(jī)網(wǎng)絡(luò)上訪問該軟件程序。當(dāng)該程序被下載到資源受限裝置時,出現(xiàn)在已接收的指令集之中的常數(shù)池索引可以被轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)數(shù)值。
各種實(shí)施方案都具有下列優(yōu)點(diǎn)中的一條或多條。通過支持Java語言的許多(雖然不是所有的)特征,并且通過使用跟Java類文件相同的語義,可以編寫準(zhǔn)備由一塊智能卡或其他資源受限裝置來執(zhí)行的、與平臺無關(guān)的虛擬機(jī)代碼。
指令集可以將某些數(shù)據(jù)直接地納入各操作碼或各操作數(shù)之中,不這樣的話,這些數(shù)據(jù)將作為常數(shù)池的一部分而出現(xiàn)。因此,若使用Java類文件格式,則指令集本身可以納入某些信息,不這樣的話,這些信息將存儲到常數(shù)池之中,并從其中獲得。通過直接地將某些信息納入到指令集之中,就能縮小常數(shù)池的大小,這就有助于減少為存儲該常數(shù)池所需的存儲器容量,并且還能改進(jìn)字節(jié)碼的執(zhí)行速度。在某些情況下,將信息直接地納入到一個操作碼之中,就能減少為一條特定指令所需的操作數(shù)的數(shù)目。當(dāng)該程序被下載到資源受限裝置時,從常數(shù)池納入信息還能消除在該裝置中保留常數(shù)池的需求,或者縮減常數(shù)池的大小。
其他各項(xiàng)特征,例如對當(dāng)前對象進(jìn)行各種運(yùn)算的復(fù)合指令以及16位體系結(jié)構(gòu)的顯式處理,還能進(jìn)一步地縮短字節(jié)碼程序的長度。
從以下的詳細(xì)說明、諸附圖以及各項(xiàng)權(quán)利要求中,其他特征和優(yōu)點(diǎn)將變得更為明顯。
附圖的簡要說明

圖1表示一個示范性的系統(tǒng),其中包括駐留在根據(jù)本發(fā)明的一塊智能卡上的一部虛擬機(jī)。
圖2是一份流程圖,表示向根據(jù)本發(fā)明的一塊智能卡提供可執(zhí)行代碼的方法。
圖3A和3B分別表示根據(jù)本發(fā)明的虛擬機(jī)指令的示范格式以及虛擬機(jī)的執(zhí)行的一個內(nèi)環(huán)。
圖4A和4B分別表示按操作碼的數(shù)字順序列出的以及按助記符的字母順序列出的虛擬機(jī)的各種操作碼的一個示范性的列表。
圖5是各種數(shù)據(jù)類型的一份列表,這些數(shù)據(jù)類型受到為根據(jù)本發(fā)明的多種數(shù)據(jù)類型而存在的各操作碼的支持。
圖6A表示根據(jù)本發(fā)明的一條“iipush”指令的格式,以及圖6B表示在Java類文件格式中,一條對應(yīng)的“l(fā)dc”指令的格式。
圖7A表示在Java類文件格式中,一條“checkcast”指令的格式,以及圖7B表示根據(jù)本發(fā)明的一條“checkcast”指令的格式。
圖8A表示根據(jù)本發(fā)明的一族“getfield_T”指令的格式,以及圖8B表示在Java類文件格式中,一條對應(yīng)的“getfield”指令的格式。
圖9A和9B表示在根據(jù)本發(fā)明的一個實(shí)施例中,在智能卡上的一段實(shí)施程序如何準(zhǔn)備虛擬機(jī)代碼,以便安裝到智能卡上面。
圖10A和10B表示根據(jù)本發(fā)明,用于獲得相同結(jié)果的可供選擇的各指令。
圖11A表示用于使用Java類文件格式執(zhí)行一個算術(shù)表達(dá)式的字節(jié)碼,以及圖11B表示用于根據(jù)本發(fā)明執(zhí)行同一算術(shù)表達(dá)式的字節(jié)碼。
圖12是可以用來實(shí)施本發(fā)明的資源受限裝置的部分的、非排他性的列表。
說明下面將針對各種應(yīng)用軟件程序來說明一種可驗(yàn)證的、基于對象的、類型安全和指針安全的指令集,上述各種應(yīng)用軟件程序可以被下載到多種資源受限裝置并在其中執(zhí)行。資源受限裝置通常被認(rèn)為是,跟常規(guī)的桌上型計(jì)算機(jī)之類相比,在存儲器容量和/或計(jì)算能力或速度方面相對地受限的那些裝置。雖然下面所討論的特定的實(shí)施方案是引用一塊智能卡來進(jìn)行說明的,但是本發(fā)明可以應(yīng)用于其他的資源受限裝置,包括,但不局限于,各種蜂窩電話,各種邊界掃描裝置,各種現(xiàn)場可編程裝置,各種個人數(shù)字助理(PDAs),以及各種尋呼機(jī),還有其他各種超小型的或小型的足跡裝置。
用下面所說明的指令集來編寫的程序可以被下載到具有64KB(64千字節(jié))或更少的RAM的資源受限裝置,并在其中被執(zhí)行。某些可以在其中執(zhí)行這樣的程序的資源受限裝置可以具有不大于16KB(16千字節(jié))的RAM,并且另外一些則可以具有不大于4KB(4千字節(jié))的RAM。許多這樣的裝置還具有容量受限的其他存儲器,例如不大于24KB(24千字節(jié))的ROM,或者不大于16KB的例如EEPROM那樣的非易失性存儲器。類似地,某些資源受限裝置基于針對短于32位而設(shè)計(jì)的體系結(jié)構(gòu)。例如,可以跟本發(fā)明配合使用的某些裝置基于8位或16位的體系結(jié)構(gòu),而不是32位的體系結(jié)構(gòu)。當(dāng)然,使用下述指令集的各種應(yīng)用都是向上兼容的,并且,假定等效的裝置支持是存在的,也可以在例如其他Java平臺上被執(zhí)行。
參看圖1和2,針對資源受限裝置(例如智能卡40)的一段小應(yīng)用程序的開發(fā),以類似于其他Java程序的開發(fā)的方式來開始。換句話說,開發(fā)者編寫一個或多個Java類(步驟60),并且用Java編譯程序來編譯源代碼,以產(chǎn)生一個或多個類文件10(步驟62)。這段小應(yīng)用程序可以在一部使用仿真工具來仿真卡40的環(huán)境的工作站上運(yùn)行、調(diào)試和除錯。當(dāng)這段小應(yīng)用程序已準(zhǔn)備好下載到卡40上去時,類文件10被轉(zhuǎn)換器14轉(zhuǎn)換為一個已轉(zhuǎn)換的小應(yīng)用程序(CAP)文件16(步驟64)。轉(zhuǎn)換器14可以被實(shí)現(xiàn)為由桌上型計(jì)算機(jī)執(zhí)行的一段Java應(yīng)用程序。除了待轉(zhuǎn)換的類文件10以外,轉(zhuǎn)換器14還可以接納一個或多個導(dǎo)出文件12作為輸入。導(dǎo)出文件12含有由被轉(zhuǎn)換的各類所導(dǎo)入的有關(guān)其他封裝的內(nèi)容的命名或鏈接信息。
一般來說,CAP文件16包括在一個單獨(dú)的Java封裝中被定義的所有各類和各種接口,并且用8位字節(jié)流來表示。通過分別地讀入兩組或4組連續(xù)的8位字節(jié),來構(gòu)成所有的16位和32位的量。其中,CAP文件16包括一個常數(shù)池部件18,它從方法部件20中被單獨(dú)地封裝。常數(shù)池部件18包括從在編譯時所知道的數(shù)字文字到方法與字段引用的各種類型的常數(shù),當(dāng)該程序被下載到智能卡40或者由智能卡在執(zhí)行時將它們解出。方法部件20指定待下載到智能卡40并且隨后由該智能卡執(zhí)行的各指令集。在Sun微系統(tǒng)公司的題為《Java卡運(yùn)行時環(huán)境(JCRE)2.1說明書》(1998)的出版物中,討論了一個示范性的CAP文件16的結(jié)構(gòu)的進(jìn)一步細(xì)節(jié),該出版物作為引用文獻(xiàn)已被全文收入本文。
經(jīng)過轉(zhuǎn)換之后,CAP文件16可以被存儲在計(jì)算機(jī)可讀的介質(zhì)17,例如硬盤,軟盤,光學(xué)存儲介質(zhì),閃爍器件或者某些其他合適的介質(zhì)之中。
然后,可以將CAP文件16復(fù)制或傳送到終端22(步驟66),例如,具有外部卡接納裝置(CAD)24的一部桌上型計(jì)算機(jī)。在某些實(shí)施例中,終端22可以被連接到一個網(wǎng)絡(luò)(未示出),例如因特網(wǎng)、局域網(wǎng)(LAN)或廣域網(wǎng)(WAN),它們跟諸如服務(wù)器那樣的其他計(jì)算裝置進(jìn)行通信。在這樣的情況下,可以在網(wǎng)絡(luò)上存取CAP文件16,并將其發(fā)往終端22。還可以使用載波(例如網(wǎng)絡(luò)數(shù)據(jù)傳輸)將CAP文件16提供給終端22。
CAD 24允許將信息寫入智能卡40并從其中取出。CAD 24包括一個可以將智能卡40插入其中的卡口(未示出)。一旦插入之后,從壓在智能卡40上的表面連接區(qū)域的連接器的各觸點(diǎn)就能提供電源并允許跟智能卡進(jìn)行通信,而在其他各種實(shí)施方案中,可以使用無觸點(diǎn)通信。終端22還包括安裝工具26,它裝載CAP文件16,以便發(fā)往卡40(步驟68)。
智能卡40具有輸入/輸出(I/O)端口42。它可以包括一組觸點(diǎn),通過這些觸點(diǎn)來提供程序、數(shù)據(jù)和其他方面的通信。卡40還包括安裝工具46,用以接收CAP文件16的各項(xiàng)內(nèi)容,并且準(zhǔn)備小應(yīng)用程序,以便在卡40上加以執(zhí)行(步驟70)。安裝工具46可以被實(shí)現(xiàn)為一段Java程序,并且可以在卡40上執(zhí)行???0還具有存儲器,包括易失性存儲器,例如RAM 50???0還具有ROM 52以及非易失性存儲器,例如EEPROM54。由控制器44準(zhǔn)備的小應(yīng)用程序可以被存儲在EEPROM 54之中。
在一個特定的實(shí)施方案中,由運(yùn)行于微處理器48之上的虛擬機(jī)49來執(zhí)行該小應(yīng)用程序(步驟72)。虛擬機(jī)49,可以被稱為Java CardTM虛擬機(jī),不需要裝載或處理CAP文件16。而是Java Card虛擬機(jī)49執(zhí)行作為CAP文件16的一部分而事先存儲的小應(yīng)用程序代碼。介于JavaCard虛擬機(jī)49以及安裝工具46之間的功能劃分使得虛擬機(jī)以及安裝工具二者都能保持相對地小。
一般來說,為諸如智能卡40那樣的資源受限平臺而編寫的實(shí)施方案和各項(xiàng)小應(yīng)用程序都遵循用于Java平臺封裝的標(biāo)準(zhǔn)規(guī)則。在T.Lindholm等人所寫的《Java虛擬機(jī)說明書(1997)》以及K.Arnold等人所寫的《Java編程語言第2版(1998)》中,敘述了Java虛擬機(jī)以及Java編程語言,以上兩篇已作為引用文獻(xiàn)被全文收入本文。用于智能卡平臺的應(yīng)用編程接口(API)類可以被寫成Java源文件,其中包括封裝指定,在這里,一個封裝包括多個編譯單元并且具有一個唯一的名字。各種封裝機(jī)制被用來標(biāo)識和控制對各類、各字段和各方法的訪問。Java Card API允許針對一個啟用了Java Card的平臺而編寫的應(yīng)用程序能運(yùn)行于其他啟用了Java Card的平臺。此外,Java Card API兼容于正規(guī)的國際標(biāo)準(zhǔn),例如ISO 7816,以及各項(xiàng)行業(yè)專用標(biāo)準(zhǔn),例如Europay/MasterCard/visa(EMV)。
本發(fā)明的智能卡平臺支持動態(tài)地生成的各對象,包括類實(shí)例和數(shù)組二者。類可以被實(shí)現(xiàn)為一個單獨(dú)的現(xiàn)有類的擴(kuò)展或子類,并且它的成員是被稱為字段的方法和變量。一種方法聲明這樣的可執(zhí)行代碼,它可以被激活,并且它接收作為自變量的固定數(shù)目的數(shù)值。類還可以定義或?qū)崿F(xiàn)Java接口。類是一種引用類型,其成員是常數(shù)和抽象方法。
被存儲在CAP文件16之中、并且隨后被下載到智能卡40的具體的各指令包括一組8位操作碼(opcode),其后跟隨著0個、1個或多個8位操作數(shù)(圖3A)。某些指令沒有操作數(shù)并且僅包括一個操作碼。Java Card虛擬機(jī)49的執(zhí)行的內(nèi)環(huán)的一般形式示于圖3B。當(dāng)一種方法被激活時,JavaCard虛擬機(jī)49分配1幀,它具有一組局部變量并且含有一個操作數(shù)棧。下面討論的許多操作碼從當(dāng)前幀的操作數(shù)棧中取出一個或多個數(shù)值,對它們進(jìn)行運(yùn)算,并將結(jié)果送回同一個棧。操作數(shù)棧還被用來將自變量送往方法,并接收各方法結(jié)果。
來自操作數(shù)棧的各數(shù)值應(yīng)當(dāng)以適應(yīng)于其類型的方式進(jìn)行運(yùn)算。JavaCard虛擬機(jī)49支持兩種數(shù)據(jù)類型基本類型和引用類型。Java Card虛擬機(jī)49所支持的數(shù)字基本類型為(1)“字節(jié)”,其數(shù)值為帶符號的8位的2的補(bǔ)碼的整數(shù);(2)“短整型”,其數(shù)值為帶符號的16位的2的補(bǔ)碼的整數(shù);以及,可選地,(3)“整型”,其數(shù)值為帶符號的32位的2的補(bǔ)碼的整數(shù)。Java Card虛擬機(jī)49還支持一種“returnAddress”(返回地址)類型,其數(shù)值為在用于虛擬機(jī)的指令中指向操作碼的指針。Java Card虛擬機(jī)49所支持的各引用類型為(1)“類”類型;(2)“接口”類型;以及(3)“數(shù)組”類型。這些引用類型相同于Java虛擬機(jī)所使用的各引用類型。Java Card虛擬機(jī)49在抽象存儲單元的意義上被定義,抽象存儲單元可以指一個字,它具有足夠的字長來容納“字節(jié)”、“短整型”、“引用”或“返回地址”等類型的一個數(shù)值。兩個字連起來則具有足夠的字長來容納“整型”類型的一個數(shù)值。多字節(jié)操作數(shù)數(shù)據(jù)按照高位在前的順序進(jìn)行編碼,換句話說,高量級字節(jié)在先。
Java Card虛擬機(jī)49支持不能用作已聲明的實(shí)體的標(biāo)識符或名字的各種關(guān)鍵字。這些關(guān)鍵字的功能和使用相同于在Java編程語言中對應(yīng)的關(guān)鍵字。
構(gòu)成存儲于CAP文件16的方法部件20之中的可執(zhí)行程序的各操作碼被設(shè)計(jì)成使用相同于用Java語言編寫的類文件10中所使用的語義。因此,例如,當(dāng)轉(zhuǎn)換器14將Java類文件10轉(zhuǎn)換為CAP文件16時,各項(xiàng)數(shù)學(xué)運(yùn)算結(jié)果和類的層次結(jié)構(gòu)得以保留。不過,正如從以下敘述中將得到證實(shí)的那樣,Java Card虛擬機(jī)49能執(zhí)行的指令序列不同于打算僅由納入Java虛擬機(jī)的系統(tǒng)所運(yùn)行的程序。某些差別是由于在下面所討論的指令集中對數(shù)據(jù)類型的支持受到更多的限制。其他差別來源于這樣一個事實(shí),即,下面所討論的指令集旨在由駐留在資源受限裝置之中的一部虛擬機(jī)來執(zhí)行。指令集的某些細(xì)節(jié)旨在使Java Card虛擬機(jī)49或者在其上運(yùn)行的程序在大小和性能方面得以優(yōu)化。這樣的細(xì)節(jié)包括直接將常數(shù)池的數(shù)據(jù)送往各操作碼或各操作數(shù),增加一條特定指令的多種樣式以便處理不同的數(shù)據(jù)類型,生成各種復(fù)合指令,以便對當(dāng)前對象進(jìn)行運(yùn)算,并且以明顯方式來處理16位算術(shù)運(yùn)算。
參照圖4A和4B,為準(zhǔn)備由Java Card虛擬機(jī)49執(zhí)行的程序提供一個示范性的指令集。每一條指令都由一個對應(yīng)的操作碼(opcode)助記符和數(shù)字表示加以標(biāo)識。除了兩個保留的操作碼impdep1和impdep2以外,典型地所有的操作碼都可以用于CAP文件,例如CAP文件16。對應(yīng)于兩個保留的操作碼的指令分別對在軟件和硬件中實(shí)現(xiàn)的實(shí)施方案專用功能提供“后門”或陷阱。相應(yīng)地,這兩個保留的操作碼典型地不會適當(dāng)?shù)爻霈F(xiàn)在CAP文件16之中。它們典型地僅被用來表示那些借助于接收CAP文件以外的方法,被安裝在智能卡40上面的程序。
如上所述,每一條指令都包括一個操作碼,其后跟隨著0個、1個,或多個操作數(shù)。換句話說,這些指令具有下列的一般格式操作碼操作數(shù)1操作數(shù)2…在指令格式中的每一個字都代表一個單獨(dú)的8位字節(jié)或“字節(jié)碼”。該指令的操作碼就是它的數(shù)字表示。每一條指令還有一個對應(yīng)的助記符,這就是它的名字。然而,在CAP文件(例如CAP文件36)的虛擬機(jī)代碼中,僅出現(xiàn)數(shù)字表示。
每一條數(shù)據(jù)操作指令都專用于特定的數(shù)據(jù)類型。對應(yīng)于圖4A所列的操作碼的指令集都支持被Java編程語言所支持的各項(xiàng)特征的一個子集。通過支持Java語言的多種特征(雖然不是所有的),并且通過使用相同于Java類文件10的語義,與平臺無關(guān)的虛擬機(jī)代碼可以被寫成能夠由智能卡40或其他資源受限裝置執(zhí)行的形式。
如上所述,用于Java Card虛擬機(jī)的指令集可直接將某些數(shù)據(jù)納入各操作碼或各操作數(shù)之中,不這樣的話,這些數(shù)據(jù)作為常數(shù)池18的一部分出現(xiàn)。因此,若人們使用Java類文件格式,則指令集本身就納入了某些信息,不這樣的話,這些信息被存入一個常數(shù)池,并從其中獲得。這樣一來,當(dāng)一個或多個Java類文件10被轉(zhuǎn)換為CAP文件16時,指向一個常數(shù)池的至少某些引用被轉(zhuǎn)換,以便納入與該CAP文件相關(guān)的各字節(jié)碼中的數(shù)據(jù)。
例如,若虛擬機(jī)49支持?jǐn)?shù)據(jù)類型“整型”,則可以使用操作碼“iipush”來將一個整型數(shù)值送入操作數(shù)棧?!癷ipush”指令的一般格式示于圖6A,而來自Java類文件格式的一條對應(yīng)的指令“l(fā)dc”的格式則示于圖6B。指令“l(fā)dc”包括操作數(shù)“索引”,它是一個無符號字節(jié),是進(jìn)入常數(shù)池的一個索引。與此相對照,可以由Java虛擬機(jī)49執(zhí)行的指令“iipush”被執(zhí)行時,用不著引用常數(shù)池。雖然指令“iipush”包括4個操作數(shù),從而增加了指令的長度,但是由于用不著在常數(shù)池18中存儲附加的信息,節(jié)省了存儲空間,所以程序稍為長一點(diǎn)的缺點(diǎn)得以彌補(bǔ)。
類似地,可以用操作碼“checkcast”來檢查一個對象是否屬于特定類型。用于Java Card虛擬機(jī)49的指令“checkcast”的一般格式示于圖7A,并且來自Java類文件格式的一條對應(yīng)的指令“checkcast”的格式示于圖7B。與從常數(shù)池中獲得數(shù)據(jù)類型的對應(yīng)的Java指令相對照,Java Card虛擬機(jī)49的數(shù)據(jù)類型已經(jīng)被直接地納入到該指令之中。通過將某些信息直接地納入到指令集之中,就能減少被存儲在CAP文件16之中的常數(shù)池18的大小。
前面的實(shí)例說明了用于Java Card虛擬機(jī)49的指令集如何將某些信息直接地納入到一個操作數(shù)之中。在某些情況下,通過將某些否則就要被存儲在常數(shù)池18之中的信息直接地納入到一個操作碼之中,就能提供一種附加的納入方式。因此,例如,用于Java Card虛擬機(jī)的指令集增加了幾種指令的多種樣式,以便處理不同類型的數(shù)據(jù),使得那些指令表現(xiàn)為共享一項(xiàng)單獨(dú)的說明、格式和操作數(shù)棧圖的相關(guān)指令族的成員。在這樣一個指令族中的每一條指令都隱含地指定在操作碼本身中的數(shù)據(jù)類型。圖5的表提供了各種數(shù)據(jù)類型的目錄,這些數(shù)據(jù)類型被針對多種數(shù)據(jù)類型存在的各種指令所支持。各種指令的廣泛的和復(fù)合的形式?jīng)]有列出。參照圖5,通過用在類型欄中代表該種類型的字母來取代在opcode欄的指令樣板中的“T”,就能獲得一條專門的指令,其數(shù)據(jù)類型已被納入到操作碼之中。在這里,針對一條特定指令的欄被保留空白,則不存在支持對該數(shù)據(jù)類型的特定操作的指令。例如,對數(shù)據(jù)類型“短整型”來說,有一條“l(fā)oad”(裝載)指令,但對數(shù)據(jù)類型“字節(jié)”來說,則沒有“l(fā)oad”指令。
通過以隱含方式將數(shù)據(jù)類型納入到操作碼之中的各指令,跟不這樣做時相比,程序可以運(yùn)行得更快,并且在智能卡40上所需的數(shù)據(jù)較少。由于在指令中直接地對數(shù)據(jù)類型進(jìn)行編碼,而不是從常數(shù)池的一行中取出,所以產(chǎn)生這些優(yōu)點(diǎn)。例如,考慮“getfield_T”的指令族,它包括指令“getfield_a”、“getfield_b”、“getfield_s”和“getfield_i”。用于Java Card虛擬機(jī)49的“getfeld_T”指令的一般格式示于圖8A,與此相對照,在Java類文件格式中的對應(yīng)的“getfield”指令的格式示于圖8B。在用于Java Card虛擬機(jī)49的指令(圖8A)中,數(shù)據(jù)類型不僅被納入到指令之中,而且它已經(jīng)被直接地納入到操作碼之中。另一方面,這樣的特征可以減少存儲在CAP文件16中的信息量,并且還能減少用于該特定指令的操作數(shù)的數(shù)目。另一方面,這些特征擴(kuò)展了獨(dú)特的操作碼的數(shù)目。
以上就操作碼“iipush”和“checkcast”而討論的數(shù)據(jù)類型的納入,對那些不頻繁地使用的指令來說可能是有利的,而就操作碼“getfield_t”指令族而討論的數(shù)據(jù)類型的納入,對那些更加頻繁地使用的指令來說可能是特別有利的。
前面的實(shí)例說明了用于Java Card虛擬機(jī)49的指令集如何固有地納入某些信息。如下面所述,當(dāng)把CAP文件16下載到智能卡40時,可能出現(xiàn)納入信息的另一種方式。
在智能卡40上的安裝工具46可能是專用于某種平臺的,并且允許根據(jù)接收和準(zhǔn)備用于執(zhí)行的虛擬機(jī)代碼的特定平臺來確定CAP文件16的各項(xiàng)內(nèi)容的實(shí)際存儲。因此,在某些實(shí)施方案中,可以按照不同于它被智能卡所接收的方式,將CAP文件16存儲到智能卡40或其他資源受限裝置之中。例如,在某些情況下,當(dāng)CAP文件16被安裝到智能卡40之中時,安裝工具46可以這樣來鏈接CAP文件的各項(xiàng)內(nèi)容,使得常數(shù)池18的大小得以減小,并且,在某些情況下,在智能卡上就不需要保留或存儲常數(shù)池。如圖9A和9B所示,通過在安裝時將表現(xiàn)為CAP文件18的代碼的一部分的常數(shù)池索引轉(zhuǎn)換為對應(yīng)的數(shù)據(jù),就能做到這一點(diǎn)。例如,可以用指向該對象的適當(dāng)字段的一個索引來取代指向常數(shù)池16的一個索引。這樣一來,存儲在卡40之中的虛擬機(jī)代碼將在執(zhí)行時間之前已經(jīng)含有被納入其中的數(shù)據(jù)。隨著常數(shù)池18的撤銷,虛擬機(jī)代碼將減少在使用常數(shù)池的一段程序中所固有的某些迂回。因此,在智能卡40中,為存儲字節(jié)碼所需的存儲器的存儲量得以減少,并且用于該程序的執(zhí)行時間也得以縮短,當(dāng)然,在其他實(shí)施方案中,當(dāng)CAP文件16被下載到智能卡40時,安裝工具46也可以保留常數(shù)池18。
如上所述,用于Java Card虛擬機(jī)的指令集還包括用于對當(dāng)前對象進(jìn)行運(yùn)算的復(fù)合指令。換句話說,Java Card虛擬機(jī)49能執(zhí)行的某些指令允許將多字節(jié)指令壓縮為一條單指令。特別是,包括一個“this”運(yùn)算的各指令,例如“getfield_T_this”指令族,以及“putfield_T_this”指令族,能有效地連接多字節(jié)指令。一般來說,“this”運(yùn)算操作對當(dāng)前對象進(jìn)行運(yùn)算。例如,如圖10A所示,為了從當(dāng)前對象中取出一個字段,可以使用“aload_0”指令和一條“getfield_a”指令的組合??晒┻x擇地,如圖10B所示,也可以使用單個指令“getfield_T_this”。使用后一種指令可能導(dǎo)致較小的和較快的程序代碼。如同前面所指出的那樣,在資源受限裝置(例如智能卡40)中,這些特征是特別有利的。
用于Java Card虛擬機(jī)的指令集也明顯地處理16位算術(shù)運(yùn)算。為了說明如何處理16位算術(shù)運(yùn)算,考慮這樣一種情形,在其中,“a”,“b”和“c”已經(jīng)被聲明為“短整型”類型變量,并且表達(dá)式“c=(short)a+b;”有待于編譯。用Java類文件格式編寫的字節(jié)碼示于圖11A。正如在圖11A中所看到的那樣,使用5個操作碼來裝載數(shù)值“a”和“b”,使數(shù)值“a”和“b”相加,將所得的整型數(shù)轉(zhuǎn)換為短整型數(shù),并且存儲該項(xiàng)結(jié)果。與此相對照,若使用Java Card虛擬機(jī)49的指令集,則由于它排除了將整型數(shù)轉(zhuǎn)換為短整型數(shù)的需求,所以為了獲得和存儲該項(xiàng)結(jié)果,僅需4個操作碼就夠了。而且,除了使用較少的字節(jié)碼之外,由于Java Card虛擬機(jī)對16位而不是32位的量進(jìn)行運(yùn)算,所以堆棧的大小可以縮減50%之多。
因此,提供了一個面向?qū)ο蟮?、可?yàn)證的指令集,并允許一個具有虛擬機(jī)字節(jié)碼的文件被存儲在一個計(jì)算機(jī)可讀的介質(zhì)之中。這樣一個文件可以被下載到資源受限裝置,使得資源受限裝置能夠執(zhí)行該字節(jié)碼。
雖然運(yùn)行于微處理器48之上的虛擬機(jī)49,作為在智能卡40中執(zhí)行各字節(jié)碼的一種實(shí)施方案已經(jīng)作了說明,但是,取而代之的是,在可供選擇的實(shí)施方案中,可以用一種專用集成電路(ASIC)或者硬件與固件的組合來作為控制器,以便執(zhí)行已下載的代碼。
而且,雖然可以用圖4A和4B所列舉的各操作碼來實(shí)施本發(fā)明,但是,其他各操作碼以及具有某些特性的相應(yīng)的指令集也適于實(shí)施本發(fā)明。這些特性包括可驗(yàn)證性、類型安全、指針安全、面向?qū)ο?、動態(tài)鏈接、基于虛擬機(jī)、平臺無關(guān)性,以及使用相同于Java語言的語義,雖然在一個特定的實(shí)施方案中,所有這些特性不需要同時出現(xiàn)。
如上所述,Java Card指令集可以跟多種資源受限裝置配合使用,其中的一些在圖12中列出。
其他各實(shí)施方案都處于下列權(quán)利要求書的范圍內(nèi)。
權(quán)利要求
1.一種應(yīng)用軟件程序包括駐留在計(jì)算機(jī)可讀介質(zhì)上的、面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列,其中,該程序可以被裝載到一個資源受限裝置并由后者加以執(zhí)行,上述資源受限裝置基于短于32位的處理器體系結(jié)構(gòu)。
2.根據(jù)權(quán)利要求1所述軟件程序,其中,可以由基于16位處理器體系結(jié)構(gòu)的一個資源受限裝置來執(zhí)行該程序。
3.根據(jù)權(quán)利要求1所述軟件程序,其中,可以由基于8位處理器體系結(jié)構(gòu)的一個資源受限裝置來執(zhí)行該程序。
4.根據(jù)權(quán)利要求1所述軟件程序,其中,每一條指令都含有一個8位的操作碼。
5.根據(jù)權(quán)利要求1所述軟件程序,其中,各指令的序列與硬件平臺無關(guān)。
6.根據(jù)權(quán)利要求1所述軟件程序,其中,從至少一個Java類文件對各指令進(jìn)行轉(zhuǎn)換,并且其中對一個常數(shù)池的至少某些引用被轉(zhuǎn)換,以便納入數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述軟件程序,其中,各指令都含有操作碼和操作數(shù),并且其中對常數(shù)池的至少某些引用被納入到至少某些指令的操作數(shù)之中。
8.根據(jù)權(quán)利要求6所述軟件程序,其中,各指令都含有操作碼和操作數(shù),并且其中對常數(shù)池的至少某些引用被納入到至少某些指令的操作碼之中。
9.根據(jù)權(quán)利要求1所述軟件程序,其中,可以由運(yùn)行于一個微處理器之上的虛擬機(jī)來執(zhí)行各項(xiàng)指令,上述微處理器駐留在資源受限裝置之中。
10.根據(jù)權(quán)利要求1所述軟件程序,其中,可以在一塊便攜式智能卡中執(zhí)行各指令。
11.根據(jù)權(quán)利要求1所述軟件程序,其中,可以由支持多種數(shù)據(jù)類型的一部裝置來執(zhí)行各指令,其中,指令序列包括各種數(shù)據(jù)操作指令,并且其中,每一條數(shù)據(jù)操作指令都專用于一種特定的數(shù)據(jù)類型。
12.根據(jù)權(quán)利要求11所述軟件程序,其中,跟每一種數(shù)據(jù)操作指令相關(guān)的數(shù)據(jù)類型是從下列各種類型中選擇一種帶符號的8位2的補(bǔ)碼整型數(shù),帶符號的16位2的補(bǔ)碼整型數(shù),以及帶符號的32位2的補(bǔ)碼整型數(shù)。
13.根據(jù)權(quán)利要求11所述軟件程序,其中,可以由支持多種引用類型的一部裝置來執(zhí)行各指令,并且其中,每一種引用類型都是從下列類型中選擇一種類類型,接口類型和數(shù)組類型。
14.根據(jù)權(quán)利要求1所述軟件程序,其中,該程序包括至少一條復(fù)合指令,用以對一個當(dāng)前對象進(jìn)行一次運(yùn)算。
15.一種應(yīng)用軟件程序包括駐留在計(jì)算機(jī)可讀介質(zhì)上的、面向?qū)ο蟮摹⒖沈?yàn)證的、類型安全和指針安全的指令序列,其中,該程序可以被裝載到一個資源受限裝置并由后者加以執(zhí)行,上述資源受限裝置具有容量不大于64KB(千字節(jié))的隨機(jī)存取存儲器。
16.根據(jù)權(quán)利要求15所述軟件程序,其中,可以由具有容量不大于4KB(千字節(jié))的隨機(jī)存取存儲器的一個資源受限裝置來執(zhí)行該程序。
17.根據(jù)權(quán)利要求15所述軟件程序,其中,每一條指令都包括一個8位的操作碼。
18.根據(jù)權(quán)利要求15所述軟件程序,其中,各指令的序列與硬件平臺無關(guān)。
19.根據(jù)權(quán)利要求15所述軟件程序,其中,從至少一個Java類文件對各指令進(jìn)行轉(zhuǎn)換,并且其中,指向一個常數(shù)池的至少某些引用被轉(zhuǎn)換,以便納入數(shù)據(jù)。
20.根據(jù)權(quán)利要求19所述軟件程序,其中,各指令都包括操作碼和操作數(shù),并且其中,指向常數(shù)池的至少某些引用被納入到至少某些指令的操作數(shù)之中。
21.根據(jù)權(quán)利要求19所述軟件程序,其中,各指令都包括操作碼和操作數(shù),并且其中,指向常數(shù)池的至少某些引用被納入到至少某些指令的操作碼之中。
22.根據(jù)權(quán)利要求15所述軟件程序,其中,可以由運(yùn)行于一個微處理器之上的虛擬機(jī)來執(zhí)行各指令,上述微處理器駐留在資源受限裝置之中。
23.根據(jù)權(quán)利要求15所述軟件程序,其中,可以在一塊便攜式智能卡中執(zhí)行各指令。
24.根據(jù)權(quán)利要求15所述軟件程序,其中,可以由支持多種數(shù)據(jù)類型的一部裝置來執(zhí)行各指令,其中,指令序列包括各種數(shù)據(jù)操作指令,并且其中,每一條數(shù)據(jù)操作指令都專用于一種特定的數(shù)據(jù)類型。
25.根據(jù)權(quán)利要求24所述軟件程序,其中,跟每一種數(shù)據(jù)操作指令相關(guān)的數(shù)據(jù)類型是從下列各種類型中選擇一種帶符號的8位2的補(bǔ)碼整型數(shù),帶符號的16位2的補(bǔ)碼整型數(shù),以及帶符號的32位2的補(bǔ)碼整型數(shù)。
26.根據(jù)權(quán)利要求24所述軟件程序,其中,可以由支持多種引用類型的一部裝置來執(zhí)行各種指令,其中,每一種引用類型都是從下列各類型中選擇一種類類型,接口類型和數(shù)組類型。
27.根據(jù)權(quán)利要求15所述軟件程序,其中,該程序包括至少一條復(fù)合指令,用以對一個當(dāng)前對象進(jìn)行一次運(yùn)算。
28.一部資源受限裝置包括用于存儲應(yīng)用軟件程序的存儲器,上述程序包括面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列;具有不大于64KB容量的隨機(jī)存取存儲器;在微處理器上實(shí)現(xiàn)的虛擬機(jī),其中該虛擬機(jī)能夠執(zhí)行該指令序列。
29.根據(jù)權(quán)利要求28所述的裝置,其中,該微處理器基于8位的體系結(jié)構(gòu)。
30.根據(jù)權(quán)利要求28所述的裝置,其中,該微處理器基于16位的體系結(jié)構(gòu)。
31.根據(jù)權(quán)利要求28所述的裝置,其中,每一條指令都包括一個8位操作碼。
32.根據(jù)權(quán)利要求28所述的裝置,其中,該指令序列跟硬件平臺無關(guān)。
33.根據(jù)權(quán)利要求28所述的裝置,其中,從至少一個Java類文件對各指令進(jìn)行轉(zhuǎn)換,并且其中,指向一個常數(shù)池的至少某些引用被轉(zhuǎn)換,以便納入數(shù)據(jù)。
34.根據(jù)權(quán)利要求33所述的裝置,其中,各指令都包括操作碼和操作數(shù),并且其中,指向該常數(shù)池的至少某些引用被納入到至少某些指令的操作數(shù)之中。
35.根據(jù)權(quán)利要求33所述的裝置,其中,各指令都包括操作碼和操作數(shù),并且其中,指向該常數(shù)池的至少某些引用被納入到至少某些指令的操作碼之中。
36.根據(jù)權(quán)利要求28所述的裝置,其中,虛擬機(jī)支持多種數(shù)據(jù)類型,其中,各指令的序列包括數(shù)據(jù)操作指令,并且其中,每一條數(shù)據(jù)操作指令都專用于一種特定的數(shù)據(jù)類型。
37.根據(jù)權(quán)利要求28所述的裝置,其中,該程序包括至少一條復(fù)合指令,用以對一個當(dāng)前對象進(jìn)行運(yùn)算。
38.一部資源受限裝置包括用于存儲應(yīng)用軟件程序的存儲器,上述程序包括面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列;在微處理器上實(shí)現(xiàn)的虛擬機(jī),它基于短于32位的體系結(jié)構(gòu),其中,該虛擬機(jī)能夠執(zhí)行該指令序列。
39.一部資源受限裝置包括用于存儲應(yīng)用軟件程序的存儲器,上述程序包括面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列;具有不大于64KB容量的隨機(jī)存取存儲器;以及一個能執(zhí)行該指令序列的處理器。
40.根據(jù)權(quán)利要求39所述的裝置,其中,該微處理器基于8位的體系結(jié)構(gòu)。
41.根據(jù)權(quán)利要求39所述的裝置,其中,該微處理器基于16位的體系結(jié)構(gòu)。
42.一部資源受限裝置包括用于存儲應(yīng)用軟件程序的存儲器,上述程序包括一個面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列;具有小于64KB容量的隨機(jī)存取存儲器;以及一個能執(zhí)行該指令序列的專用集成電路(ASIC)。
43.根據(jù)權(quán)利要求42所述的裝置,其中,該ASIC基于8位的體系結(jié)構(gòu)。
44.根據(jù)權(quán)利要求42所述的裝置,其中,該ASIC基于16位的體系結(jié)構(gòu)。
45.一塊智能卡包括用于存儲應(yīng)用軟件程序的存儲器,上述程序包括一個面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列;在微處理器上實(shí)現(xiàn)的虛擬機(jī),其中,該虛擬機(jī)能夠執(zhí)行該指令序列。
46.根據(jù)權(quán)利要求45所述的智能卡,其中,該虛擬機(jī)實(shí)質(zhì)上是一部Java Card虛擬機(jī)。
47.根據(jù)權(quán)利要求45所述的智能卡,其中,每一條指令都包括一個8位操作碼。
48.根據(jù)權(quán)利要求45所述的智能卡,其中,該指令序列跟硬件平臺無關(guān)。
49.根據(jù)權(quán)利要求45所述的智能卡,其中,從至少一個Java類文件對各指令進(jìn)行轉(zhuǎn)換,并且其中,指向一個常數(shù)池的至少某些引用被轉(zhuǎn)換,以便納入數(shù)據(jù)。
50.根據(jù)權(quán)利要求45所述的智能卡,其中,各指令都包括操作碼和操作數(shù),并且其中,至少指向該常數(shù)池的某些引用被納入到至少某些指令的操作數(shù)之中。
51.根據(jù)權(quán)利要求45所述的智能卡,其中,各指令都包括操作碼和操作數(shù),并且其中,至少指向該常數(shù)池的某些引用被納入到至少某些指令的操作碼之中。
52.根據(jù)權(quán)利要求45所述的智能卡,其中,虛擬機(jī)支持多種數(shù)據(jù)類型,其中,各指令的序列包括數(shù)據(jù)操作指令,并且其中,每一條數(shù)據(jù)操作指令都專用于一種特定的數(shù)據(jù)類型。
53.根據(jù)權(quán)利要求45所述的智能卡,其中,該程序包括至少一條復(fù)合指令,用以對一個當(dāng)前對象進(jìn)行運(yùn)算。
54.一種使用應(yīng)用軟件程序的方法,上述程序包括一組面向?qū)ο蟮?、可?yàn)證的、類型安全和指針安全的指令序列,該方法包括在一個具有不大于64KB容量的隨機(jī)存取存儲器的資源受限裝置中接收該軟件程序;以及在資源受限裝置中執(zhí)行該指令序列。
55.根據(jù)權(quán)利要求54所述方法還包括在資源受限裝置中存儲該指令序列。
56.根據(jù)權(quán)利要求54所述方法還包括在將該程序下載到資源受限裝置之前,在一個計(jì)算機(jī)網(wǎng)絡(luò)上訪問該軟件程序。
57.根據(jù)權(quán)利要求54所述方法還包括在將該程序下載到資源受限裝置之前,在因特網(wǎng)上訪問該軟件程序。
58.根據(jù)權(quán)利要求54所述方法還包括將出現(xiàn)在已接收的指令集之中的常數(shù)池索引轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)數(shù)值。
全文摘要
一種資源受限裝置,例如一塊智能卡之類,包括用于存儲應(yīng)用軟件程序的存儲器,上述應(yīng)用軟件程序包括一個面向?qū)ο蟮摹⒖沈?yàn)證的、獨(dú)立于平臺的、類型安全和指針安全的指令序列。該裝置還可以包括一部在微處理器上實(shí)現(xiàn)的虛擬機(jī),該虛擬機(jī)能執(zhí)行該指令序列。每一條指令都包括一個操作碼,并且每一條數(shù)據(jù)操作指令都專用于一種特定的數(shù)據(jù)類型。應(yīng)用程序在被資源受限裝置接收之前,可以存儲在一種計(jì)算機(jī)可讀介質(zhì)之中。還公開了使用這種應(yīng)用程序的各種方法,包括在因特網(wǎng)上訪問該程序并將其下載到一塊智能卡中去的方法。
文檔編號G06F9/54GK1359491SQ00804876
公開日2002年7月17日 申請日期2000年2月2日 優(yōu)先權(quán)日1999年2月2日
發(fā)明者朱迪思·E·施瓦布, 喬舒亞·B·蘇瑟 申請人:太陽微系統(tǒng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1