專利名稱:在非持久存儲器內(nèi)建立對象并保持可訪問性的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于在非持久存儲器內(nèi)建立對象的一種方法和裝置。更具體地,提出用于基于對象語言的運行時系統(tǒng)中的持久和臨時對象的共存,尤其實現(xiàn)在資源受限環(huán)境(例如靈巧卡特別是由Java環(huán)境提供的靈巧卡如Java卡)下的虛擬機中。此外還提出一種方法,其甚至為小應(yīng)用程序的若干方法保持非持久存儲對象的可訪問性。
作為本發(fā)明的一個應(yīng)用范圍,靈巧卡是適宜的,從而本文中使用靈巧卡以舉例說明本發(fā)明的概念。靈巧卡的一個用途是存儲長期數(shù)據(jù)。因此靈巧卡主要包含持久存儲器(ROM,EEPROM),其臨時存儲器(RAM)量是很有限的。ROM用于存儲在靈巧卡的壽命內(nèi)為有效的不變數(shù)據(jù)和代碼。應(yīng)用程序既可以在生產(chǎn)過程中存儲到ROM中也可以裝入EEPROM中。
一旦把卡插入提供電源、時鐘、通信線的亦稱為“終端”的部件中,該卡被通電,并由運行時環(huán)境接管對系統(tǒng)的控制,和等待終端上的輸入。終端通過向運行時環(huán)境發(fā)送命令,即選擇命令,啟動和應(yīng)用程序的通信,從而選擇一個稱為“目標應(yīng)用程序”的應(yīng)用程序以進行進一步的交互。然后,運行時環(huán)境通過利用給定數(shù)據(jù)調(diào)用該應(yīng)用程序向選定的應(yīng)用程序傳送所有的輸入信號。該應(yīng)用程序處理數(shù)據(jù),并可能建立用于應(yīng)答終端的數(shù)據(jù)。當該應(yīng)用程序完成輸入數(shù)據(jù)的處理后,控制返回到運行時環(huán)境,其把響應(yīng)發(fā)送給終端。此刻終端可以再次向選定的應(yīng)用程序發(fā)送數(shù)據(jù)。終端還可以通過向運行時環(huán)境發(fā)送新的選擇命令關(guān)閉與現(xiàn)行選定應(yīng)用程序的通信。運行時環(huán)境通知現(xiàn)行選定應(yīng)用程序使其清除要執(zhí)行的操作,并且接著選擇新的應(yīng)用程序。通過利用作為變量的消息調(diào)用應(yīng)用程序,重新向新選定的應(yīng)用程序傳送新消息。對話期間的選擇次數(shù)和消息數(shù)量是不受限制的。對于保持運行多個應(yīng)用程序的某卡的完整性,終端和卡之間的交互模式以及運行時和卡上應(yīng)用程序的區(qū)分都是重要的。若這種區(qū)分不恰當,可能以有害方式例如通過檢查用于其它應(yīng)用程序原始消息,交互各應(yīng)用程序。
在如上面概述由運行時環(huán)境進行的消息驅(qū)動調(diào)用期間,應(yīng)用程序必須能夠建立、管理和存儲對象。若希望某對象對于不同選擇之間的某應(yīng)用程序是可使用的,該應(yīng)用程序需要把該對象存儲到持久存儲器,從而使該對象在晚些時候把某卡插入終端后時是可訪問的。
若還可使用暫存器,系統(tǒng)必須提供支持其上的暫時對象的功能性。通常把EEPROM用作暫時對象的存儲技術(shù)在幾方面上是不利的。首先,和對RAM的寫操作相比,EEPROM中對對象的修改操作非常慢。第二,出于技術(shù)上的原因,對EEPROM中某單元的成功寫操作的保證率是有限的。第三,仔細查看持久存儲器中的對象要方便得多,因為即使斷電后它們繼續(xù)駐留在卡上,從而導(dǎo)致潛在的安全脆弱性。
在資源特別受限的執(zhí)行環(huán)境中運行的基于對象的應(yīng)用程序,例如靈巧卡,應(yīng)該能夠建立及管理持久的和暫時的對象。在這種情況下,持久對象是在不同的硬件激活,亦稱為“對話”,之間保持其狀態(tài)的對象,并且是受到(突然)斷電保護的。例如,電子現(xiàn)金應(yīng)用程序可利用持久對象存儲對話之間可使用的現(xiàn)金額。
相反,暫時對象位于暫存器中,并在斷電時丟失。暫時對象的采用提高了應(yīng)用程序的性能并提供附加的安全性。這首先歸因于和持久存儲器相比,暫存器的存取時間大為減小。其次,在斷電時會自動地清除含著安全敏感數(shù)據(jù)的暫時對象。從而,在去掉部件的電源后不能確定該數(shù)據(jù)。
常規(guī)的支持持久對象和暫時對象某種形式的共存的系統(tǒng)通常往往是復(fù)雜的,從而要求許多資源。尤其在資源有限的環(huán)境中,關(guān)鍵在于要減少復(fù)雜性和資源,即使隨之導(dǎo)致減弱功能性。一種已知的機制只允許建立某些類型的暫時對象,即以類似于短數(shù)組或字節(jié)數(shù)組的簡單類型形式。然而減弱的功能性對于一些應(yīng)用程序,尤其對于面向?qū)ο蟮膽?yīng)用程序,過于限制。
一種支持資源有限環(huán)境下的持久對象和暫時對象的機制是對上述問題的建議解決方案。
它僅需要運行時系統(tǒng)的最小支持,并同時仍提供用于暫時和持久對象分配的簡單編程模型。此外,它在各次對話期間無須使用持久存儲器下支持在多次調(diào)用某應(yīng)用程序之間保持暫時對象。它還在未期望的斷電情況下確保應(yīng)用的完整性。
本發(fā)明的一個目的是提供一種方法和一種裝置,用于在非持久存儲器中建立對象,以在選擇對象類型上提供更多的靈活性并且同時適宜于在資源有限環(huán)境下,例如靈巧卡尤其提供Java環(huán)境的靈巧卡,實施。
另一個優(yōu)點是減小分配暫時對象和持久對象的復(fù)雜性。
為實現(xiàn)上述目的,本發(fā)明提供一種在非持久存儲器建立對象的方法,其特征在于,從指令代碼序列(18)中讀出導(dǎo)致執(zhí)行第一函數(shù)(41)的第一指令代碼(31),讀出導(dǎo)致執(zhí)行第二函數(shù)的第二指令代碼(32),第二函數(shù)導(dǎo)致在某存儲器中建立所述對象(56,57,58),因此所述第一函數(shù)(41)導(dǎo)致把所述非持久存儲器(51)選擇為所述存儲器。
提供一種用于在非持久存儲器中建立對象的裝置,它包括用于存儲指令代碼序列(18)的存儲裝置(14)和用于從所述指令代碼序列(18)讀出指令代碼(30,31,32,33,34)的控制裝置(10),其中在讀出第一指令代碼(31)的情況下執(zhí)行第一函數(shù)(41),并且其中在讀出第二指令代碼(32)的情況下執(zhí)行第二函數(shù),該第二函數(shù)導(dǎo)致在某存儲器中建立所述對象(56,57,58),而所述第一函數(shù)(41)導(dǎo)致把所述非持久存儲器(51)選擇為所述存儲器。
與解釋程序(亦稱為“虛擬機”)是用軟件還是用硬件實現(xiàn)無關(guān),上述問題得到解決。
設(shè)定標記種類,即調(diào)用第一函數(shù),提供了一種在持久存儲器和非持久存儲器之間切換的簡單方法,該第一函數(shù)把非持久存儲器選擇成在后續(xù)步驟中可在其中建立對象的存儲器。
采用前括號型函數(shù)是有好處的,因為帶有類似功能性,即標記階段或狀態(tài)的開始并且標記該階段或狀態(tài)的結(jié)束,的用于其它用途的函數(shù)是已經(jīng)知道的,從而通過相應(yīng)的經(jīng)驗簡化對括號函數(shù)的管理。而且把實現(xiàn)對該函數(shù)的識別和正確掌握其含意所帶來的復(fù)雜性保持在最小上。
后括號是處理標記復(fù)位的第三函數(shù)。這開發(fā)了第一函數(shù)的所有優(yōu)點,并且完善了函數(shù)集,從而有可能對用于對象的存儲單元進行審慎的切換。同樣,該函數(shù)的優(yōu)點還在于,具有類似功能性的函數(shù),即標記階段或狀態(tài)的開始并且標記該階段或狀態(tài)的結(jié)束的其它用途的函數(shù),已是知道的,從而通過相應(yīng)的經(jīng)驗簡化對括號函數(shù)的管理。
小應(yīng)用程序的非持久對象組成一個對象圖。持久對象和/或非持久對象的鏈接導(dǎo)致出幾個相連的可達到的對象,從而其中一個對象被指向成來自非持久存儲器外部的根對象。為了訪問這些對象中的任一個對象只需要一個指向各對象的指針。
由于不會清空在其中存儲著指向暫時根對象的指針的堆棧的指針,依據(jù)權(quán)利要求18的方法保證對暫時對象的可訪問性。此外,在后面的方法中防止了從持久對象到暫時對象的指針指向不再存在的對象的問題。
當把指向非持久存儲器中的某對象的指針存儲在堆棧存儲器中時,不需要從持久存儲器到非持久存儲器的指針。所指向的對象是對象圖的一部分并可具有指向其它對象的多個指針。通過存儲在堆棧存儲器中的一個指針,這些鏈接的對象都是可達到的。這在突然斷電的情況下,即當暫時存儲器51為空時,是特別有用的。當再次接通電源時,來自持久存儲器的指針會指向某個不存在的暫時對象,這是一種難以處理的情況并導(dǎo)致額外的復(fù)雜性。借助堆棧存儲器中的指針這種情況得到避免。
當可把堆棧存儲器的指針存儲在某控制裝置的一個存儲位置中時,甚至可以由不同的方法以及不同的小應(yīng)用程序調(diào)用使用暫時對象,因為堆棧清空并不刪除指向非持久對象的指針。利用執(zhí)行保存步驟的第五函數(shù)以及執(zhí)行回寫處理的第六函數(shù)為控制對暫時對象的可訪問性提供一種方便的工具。
所提出的解決方案支持建立持久對象和暫時對象并支持在多次調(diào)用應(yīng)用程序之間傳送暫時對象,而且僅需要運行時系統(tǒng)的最小支持。按照缺省規(guī)定,由于可把基本構(gòu)件看成是把對象分配成持久對象或暫時對象中的一種不同的階段(“分配階段”),在正執(zhí)行的應(yīng)用程序中可區(qū)分暫時和持久環(huán)境并支持隨意地訪問對象的持久集和暫時集(“對象環(huán)境”)。取決于當前的分配階段,持久地或暫時地建立對象。在調(diào)用應(yīng)用程序之前,由運行時環(huán)境預(yù)定義分配階段的類型。若例如在某應(yīng)用程序裝入到靈巧卡后第一次被調(diào)用,按照缺省規(guī)定可以把所有對象分配到持久存儲器。若某應(yīng)用程序在由某終端選擇后第一次調(diào)用,按照缺省規(guī)定分配為暫時分配。在調(diào)用期間,通過調(diào)用運行時環(huán)境提供的函數(shù),應(yīng)用程序隨意改變現(xiàn)行分配階段的類型。運行時系統(tǒng)為維護有關(guān)這些分配階段的信息只需要最少的資源。運行時系統(tǒng)的分配程序只需要一個保持現(xiàn)行分配階段的類型的標志。根據(jù)該標志的值,對象或被分配到持久存儲器或暫時存儲器。這種分配方式不對對象堆的管理也不對已分配對象的布局施加任何限制。為了避免上述因持久產(chǎn)生的可達到性問題,運行時系統(tǒng)拒絕把暫時源對象的引用指派到持久對象。運行時系統(tǒng)為每個引用指派執(zhí)行源對象是否駐留在暫時存儲器中以及目標對象是否駐留在持久存儲器的簡單檢查,當該測試返回“真”時拒絕引用指派。
為了提供上面討論過的靈巧卡應(yīng)用程序所需的服務(wù)等級,可以由運行時系統(tǒng)通過所謂的“暫時環(huán)境”支持應(yīng)用程序多次調(diào)用之間的暫時對象的傳送并且支持隨意訪問應(yīng)用程序內(nèi)的暫時對象。通過對某專用系統(tǒng)類進行子類處理,程序員可以說明這樣的暫時環(huán)境。應(yīng)用程序可以建立該類的一個對象,把對暫時對象的引用存儲在該對象中,并且用運行時系統(tǒng)注冊該暫時環(huán)境。在運行時系統(tǒng)的每次應(yīng)用程序調(diào)用期間,應(yīng)用程序可從運行時系統(tǒng)檢索該暫時環(huán)境,即通過系統(tǒng)調(diào)用檢索本文的虛擬機。接著應(yīng)用程序可以隨意訪問和操縱暫時環(huán)境中的暫時數(shù)據(jù)。
若運行時系統(tǒng)返回一個空的暫時環(huán)境(在應(yīng)用程序的兩次調(diào)用之間發(fā)生斷電),應(yīng)用程序可以建立并注冊新的暫時環(huán)境。在該對話期間對該應(yīng)用程序的隨后調(diào)用中可以重新檢索新建立的暫時環(huán)境。若某應(yīng)用程序不能接受暫時對象的突然丟失事件,總是可以回退到這些對象的持久存儲上。
本文中所呈現(xiàn)的主要思想是分離對暫時對象和持久對象的處理。此外,運行時環(huán)境提供一種盡可能長的保持暫時對象的機制。應(yīng)用程序開發(fā)者完全控制著在APDU中何時分配哪一種類型的對象。從而可以獲得暫時對象的好處,同時可避免與僅基于持久對象的標準系統(tǒng)關(guān)聯(lián)的代價,特別可避免實施的復(fù)雜性。
以示例的方式在附圖中描述并在下面詳細說明本發(fā)明的例子。附圖是
圖1是一種虛擬機以及一個持久存儲器和一個非持久存儲器的構(gòu)局。
出于簡明,附圖不是以真實尺寸示出的,并且各尺寸之間的關(guān)系也不是按實際標度示出的。
下面說明本發(fā)明的不同示范實施例。
用“PHU”標示的協(xié)議處理機15包括一個用“DD”標志的設(shè)備驅(qū)動程序16和一個用“RW”標示的讀寫單元17。PHU15和亦稱為“VM”充當控制裝置的虛擬機10雙向通信,虛擬機10包括一個也稱為“ML”的主環(huán)路單元11和一個也稱為函數(shù)存儲器的函數(shù)部分12,在函數(shù)部分12中存儲著機器碼形式的一組可能的函數(shù)Function1、Function2、Function3、Function4。通過標識符可對每個函數(shù)Function1、Function2、Function3、Function4尋址。
VM10設(shè)有分配給虛擬機指令代碼存儲裝置14的程序計數(shù)器PC,在指令代碼存儲裝置14中存儲屬于小應(yīng)用程序的方法的代碼序列18。小應(yīng)用程序是數(shù)據(jù)和有關(guān)操作方法的集合。小應(yīng)用程序本身作為Applet對象(縮寫為ApO)52、53存儲在縮寫為PM的持久存儲器50中。
代碼序列18由單指令代碼組成,其中第零條指令代碼30代表一條“新”指令,第一指令代碼31代表“調(diào)用函數(shù)”指令,其后面跟著一個前括號函數(shù)的標識參數(shù),第二指令代碼32代表一條“新”指令,第三指令代碼33代表一條后面跟著后括號函數(shù)的一個標識參數(shù)的“調(diào)用函數(shù)”指令,第四指令代碼34代表一條“新”指令。
亦稱為代碼存儲器或CM14的虛擬機指令代碼存儲裝置14和ML10通信,ML10再和持久存儲器50以及非持久存儲器(或暫時存儲器,縮寫為TM)51通信。作為持久存儲器50,例如可以使用EEPROM。PHU15還和隨機存取存儲器或RAM20連接,RAM20包括一個縮寫成AO的APDU對象存儲部分21和一個縮寫成St的堆棧存儲部分或堆棧存儲器22。該St22具有與VM10的函數(shù)部分12的雙向連接并且由ML11提供的堆棧指針SP綁定。RW17可以雙向地和PM50交換數(shù)據(jù)。
經(jīng)電源接通線PON,用“Ini”標示的起始單元13接收外部輸入,并把它的輸出提供給PHU15。PHU15通過傳送縮寫成APDU的應(yīng)用程序協(xié)議數(shù)據(jù)單元的輸入線接收外部輸入。亦稱為運行時環(huán)境19并縮寫成RTE19的小應(yīng)用程序管理單元和VM10雙向通信。
在PM50中存儲兩個小應(yīng)用程序?qū)ο?2、53和兩個持久對象54、55。小應(yīng)用程序52、53中的一個是現(xiàn)行小應(yīng)用程序52,它和持久對象54、55中的第一對象54鏈接,它還和持久對象54、55中的第二對象55鏈接。該鏈接代表一個指針,它使持久對象成為一個在其中小應(yīng)用程序52是起點的對象圖的一部分。
相同的原則施加給TM51,在其中亦稱為暫時對象并縮寫成TO的三個非持久對象56、57、58作為一個對象圖的一部分被存儲。
非持久對象56、57、58中的第一非持久對象56和非持久對象56、57、58中的第二非持久對象57鏈接,后者又和非持久對象56、57、58中的第三非持久對象58鏈接。每個鏈接代表一個指針,它使非持久對象成為一個以第一非持久對象56為起點的鏈的一部分。從而本文中,為了到達所有的非持久對象56、57、58只需要建立一個指針,即到達第一非持久對象56的指針。
被選定的現(xiàn)行小應(yīng)用程序52是由VM10選擇的,在圖1中用虛線“選擇”描繪?,F(xiàn)行小應(yīng)用程序52還確定CM14中的現(xiàn)行方法,也用虛線描述。
在St22中存儲稱為“TOP”的指向第一非持久對象56的指針60。
VM10包括用St TOP標志的以存儲器單元為形式的存儲器位置61,它專用于存儲指針60。
函數(shù)部分12特地存儲第一函數(shù)41、第二函數(shù)、第三函數(shù)43、第四函數(shù)、第五函數(shù)45和第六函數(shù)46。相應(yīng)的第一指令代碼31用“call”(調(diào)用)標示,后跟定義被調(diào)用的函數(shù)的參數(shù),文中用“FC”標志,該參數(shù)用于第一函數(shù)41。
用“Function(“標示的第一函數(shù)41是一個括號函數(shù),它標記一個模式的開始,這里該模式是在非持久存儲器51中建立任何被建立對象的模式。相應(yīng)的第三指令代碼33用“call”標示,之后是定義調(diào)用哪個函數(shù)的參數(shù),文中用“F)”標志該用于第三函數(shù)43的參數(shù)。
這樣,用“Function)”標志的第三函數(shù)43是一個標記該模式的結(jié)束的括號函數(shù),從而在持久存儲器50中建立任何以后被建立的對象。
第零個、第二、第四函數(shù)為相同的類型,即建立對象54、55、56、57、58的類型。相應(yīng)的第零個、第二、第四函數(shù)代碼用“new(新)”標示。
用“gte”標示的第五函數(shù)45專用于把指針60從St22存儲到StTOP61。從而由VM10接收暫時環(huán)境。用“ste”標示的第六函數(shù)46專用于從St TOP61讀出指針60并存儲到S22。暫時環(huán)境被設(shè)在RAM20中。
最好把所描述的構(gòu)局設(shè)置在便攜式載體上,例如靈巧卡上或Java卡上??砂芽ú迦氲阶x卡機中,讀卡機設(shè)有用于外部電路的接口,通過該接口該外部電路和靈巧卡通信。接口是高度標準化的。經(jīng)過讀卡機,APDU到達PHU15的DD16。PHU15可以處理各種類型的APDU,這些類型是“SELECT”APDU、“READ EE”APDU、“WRITEEE”APDU以及其它APDU,它們稱為“標準”APDU。在PHU15中識別到達的APDU的類型。
在起始階段期間,激活起始單元13。一旦加電并經(jīng)PON線路到達時(這可簡單地是一個運行卡電路的必要電源),就清除復(fù)位信號尤其是St22,復(fù)位PC和SP,清除RAM20,在St22中啟動系統(tǒng)APDU對象即寫入APDU對象標題。接著啟動PHU15并等待輸入。
作為下一步,在未把缺省小應(yīng)用程序選擇成所謂的“現(xiàn)行小應(yīng)用程序”的情況下,一旦到達第一APDU即一個SELECT APDU時,PHU15就識別該SELECT APDU,從而CM14中由該SELECT APDU標識的小應(yīng)用程序被選為現(xiàn)行小應(yīng)用程序52。每個存儲的小應(yīng)用程序包含一些方法,其中尤其存儲著處理方法、選擇方法、安裝方法以及撤消選定方法。
標準APDU的到達觸發(fā)使用該標準APDU的預(yù)定的現(xiàn)行小應(yīng)用程序,并且更具體地使用現(xiàn)行小應(yīng)用程序的處理方法。現(xiàn)行小應(yīng)用程序的處理方法的VM執(zhí)行起始地址是存儲在CM14中的執(zhí)行該處理方法的指令代碼的第一個地址。RTE19知道該地址,RTE19經(jīng)過VM10為CM14中該地址上設(shè)置的PC提供該地址。
VM10開始解釋來自VM執(zhí)行起始地址上的指代碼序列18。該解釋包括為該指令代碼序列18執(zhí)行的各個函數(shù),從指令代碼序列18的第零條指令代碼30的函數(shù)開始。
各函數(shù)可執(zhí)行各種動作。某函數(shù)可以例如訪問PM50或TM51或堆棧存儲部分22,從而可修改VM10的SP和/或PC。只要St22不空,PC就遞增一步或幾步,指令代碼含有函數(shù),即,“Goto”或“Jump”函數(shù)。
在完成某方法的最后一條指令代碼的函數(shù)后,堆棧指針SP達到某預(yù)定值,其指示VM10該堆棧存儲部分22是空的。接著,控制交還給PHU15,其返回數(shù)據(jù),例如經(jīng)OUT線路向讀卡機返回狀態(tài)數(shù)據(jù)并期待下個APDU的到達。
PHU15接收APDU,并把它們,通常每次一個,存儲到RAM20的APDU對象負載區(qū),并對APDU分配起始階段期間生成的現(xiàn)有對象標題。
在RAM20中存儲APDU對象,后者接著可由指令代碼訪問。從而,指令代碼可以訪問執(zhí)行某具體動作所需的數(shù)據(jù),例如讀某個要注入到某存儲單元代表貨幣值的數(shù)值,其表示某帳號的數(shù)額(saldo)。
在PHU15識別出SELECT APDU時的情況下,使用現(xiàn)行小應(yīng)用程序,但現(xiàn)在的第一個動作是使用撤消選定方法,而不是使用處理方法。這樣,通過VM10,執(zhí)行撤消選定方法的對應(yīng)指令代碼序列18。然后,作為第二個動作,根據(jù)來自SELECT APDU的信息選擇新的現(xiàn)行小應(yīng)用程序,并由VM10為該新的現(xiàn)行小應(yīng)用程序執(zhí)行選擇方法。
當識別READ APDU時,則不激活VM10,而是由PHU15直接訪問存儲器25進行讀操作,接著經(jīng)過OUT線路把結(jié)果輸出到讀卡機。當識別WRITE APDU時,不激活VM10,而是把WRITE APDU的相應(yīng)內(nèi)容部分作為存儲器25中的某特定存儲單元的新內(nèi)容由PHU15直接訪問存儲器25進行寫操作。為了在靈巧卡上禁用以上動作,可以通過由一種經(jīng)硬件或軟件實現(xiàn)的適當機制禁止READ APDU和WRITE APDU的處理,從而避免濫用以上APDU。
當讀出第零條代碼30時,建立新的對象,因為此時第零條指令代碼30是一條“new”指令。這同樣適用于第二指令代碼32和第四指令代碼34。系統(tǒng)在缺省模式下運行,缺省模式定義為在持久存儲器50中建立任何被建立對象的模式。在持久存儲器50中建立第一持久對象54,并且建立一個現(xiàn)行小應(yīng)用程序?qū)ο?2和該第一持久對象54之間的指針。
下一個指令代碼是第一指令代碼31,它包括對某函數(shù)的調(diào)用,即對把括號函數(shù)作為類別標記或定界符的第一函數(shù)41的調(diào)用。該標記通知系統(tǒng),即運行時環(huán)境19或VM10,該對象的新的缺省存儲位置是非持久存儲器51。
下一個指令代碼是包含著用于建立對象的“new”函數(shù)的第二指令代碼32,假定在此之前同一方法中已經(jīng)生成另外兩個暫時對象,根據(jù)上述標記該對象是在非持久存儲器51中建立的第三暫時對象58。在第二TO57和現(xiàn)在生成的第三TO58之間建立一個指針。
下一個指令代碼是包含著對某函數(shù)即第三函數(shù)43的調(diào)用的第三指令代碼31,第三函數(shù)43把括號函數(shù)作為類別標記或定界符。該標記通知系統(tǒng),即運行時環(huán)境19或VM10,對象的新的缺省存儲位置不再是非持久存儲器51,而重新是持久存儲器50。從而建立的對象是第二持久對象55,由來自第一持久對象54的一個指針指向該對象。
暫時對象56、57、58鏈接在一起,并具有一個存儲在St22中的基本指針,即暫時對象指針60。由于在隨后的小應(yīng)用程序調(diào)用之間自動清空堆棧,所以若不采用輔助系統(tǒng)就不可能從一個處理或SELECT方法向另一個處理傳送堆棧內(nèi)容。該輔助系統(tǒng)由St TOP61構(gòu)成并且利用第五函數(shù)45和第六函數(shù)46。其主要用途是在一個執(zhí)行某方法后不會清空的存儲器中保存TOP60。該存儲器是以St TOP61的形式實現(xiàn)的。若某方法提議為隨后的方法保存TOP 60,則通過相應(yīng)的指令代碼調(diào)用第五函數(shù)45。從而在St TOP61中保存指針60并且避免清空St22。
若以后某時刻一個新的處理或SELECT方法希望訪問暫時對象56、57、58,則利用第六函數(shù)46把St TOP61的內(nèi)容寫入到ST60。
當撤銷選定小應(yīng)用程序時或關(guān)掉電源時,自動刪除暫時對象56、57、58。
指令代碼、存儲單元以及函數(shù)等的數(shù)量僅是示范性的,從而不受限于本文中的選定數(shù)量。此外,可在RAM20中配置一個堆存儲器,該堆存儲器也可由各函數(shù)訪問。
(Javacard是Sun微系統(tǒng)公司的一個商標)。
權(quán)利要求
1.一種在非持久存儲器中建立對象的方法,其特征在于,從指令代碼序列(18)中讀出導(dǎo)致執(zhí)行第一函數(shù)(41)的第一指令代碼(31),讀出導(dǎo)致執(zhí)行第二函數(shù)的第二指令代碼(32),第二函數(shù)導(dǎo)致在某存儲器中建立所述對象(56,57,58),因此所述第一函數(shù)(41)導(dǎo)致把所述非持久存儲器(51)選擇為所述存儲器。
2.根據(jù)權(quán)利要求1的方法,其特征在于,第一數(shù)(41)包括前括號類型的函數(shù)。
3.根據(jù)權(quán)利要求1或2的方法,其特征在于,讀出導(dǎo)致執(zhí)行第三函數(shù)(43)的第三指令代碼(33),第三函數(shù)導(dǎo)致把持久存儲器(50)用為第四指令代碼(34)的所述存儲器,當讀出第四指令代碼時它導(dǎo)致執(zhí)行第四函數(shù),第四函數(shù)導(dǎo)致在所述存儲器中建立另一對象(54,55)。
4.根據(jù)權(quán)利要求3的方法,其特征在于,第三函數(shù)(43)包括后括號類型的函數(shù)。
5.根據(jù)權(quán)利要求1至4中之一的方法,其特征在于,至少非持久存儲器(51)中的對象(56,57,58)的一部分是鏈接的,尤其以一個從所述對象(56,57,58)的第一對象(56)開始的鏈的形式。
6.根據(jù)權(quán)利要求5的方法,其特征在于,在堆棧存儲器(22)中存儲一個指向非持久存儲器(51)中的一個對象(56,57,58)的指針(60)。
7.根據(jù)權(quán)利要求6的方法,其特征在于,堆棧存儲器(22)中的該指針(60)可存儲在某控制裝置(10)中的一個存儲位置(61)上。
8.根據(jù)權(quán)利要求7的方法,其特征在于,執(zhí)行第五函數(shù)(45),它導(dǎo)致把堆棧存儲器(22)中的指針(60)存儲到控制裝置(10)中的存儲位置(61)上。
9.根據(jù)權(quán)利要求7或8的方法,其特征在于,執(zhí)行第六函數(shù)(46),它導(dǎo)致把該指針(60)從控制裝置(10)的存儲位置(61)寫入到堆棧存儲器(22)中。
10.根據(jù)權(quán)利要求1至9中之一的方法,其特征在于,鏈接持久存儲器(50)中的對象(52,54,55),尤其以一個從所述對象(52,54,55)中的第一個開始的鏈的形式。
11.一種用于在非持久存儲器中建立對象的裝置,它包括用于存儲指令代碼序列(18)的存儲裝置(14)和用于從所述指令代碼序列(18)讀出指令代碼(30,31,32,33,34)的控制裝置(10),其中在讀出第一指令代碼(31)的情況下執(zhí)行第一函數(shù)(41),并且其中在讀出第二指令代碼(32)的情況下執(zhí)行第二函數(shù),該第二函數(shù)導(dǎo)致在某存儲器中建立所述對象(56,57,58),而所述第一函數(shù)(41)導(dǎo)致把所述非持久存儲器(51)選擇為所述存儲器。
12.根據(jù)權(quán)利要求11的裝置,其特征在于,在讀出第三指令代碼(33)的情況下可執(zhí)行第三函數(shù)(43),該第三函數(shù)(43)導(dǎo)致為第四指令代碼(34)把持久存儲器(50)選擇為所述存儲器,當讀出第四指令代碼(34)時導(dǎo)致執(zhí)行第四函數(shù),第四函數(shù)導(dǎo)致在所述存儲器中建立另一對象(54,55)。
13.根據(jù)權(quán)利要求11或12的裝置,其特征在于,非持久存儲器(51)中的對象(56,57,58)是鏈接的,尤其以一個從所述對象(56,57,58)的第一對象(56)開始的鏈的形式。
14.根據(jù)權(quán)利要求13的部件,其特征在于,在堆棧存儲器(22)中存儲一個指向非持久存儲器(51)中的第一對象(56)的指針(60),所述指針尤其可存儲在控制裝置(10)中的一個存儲位置(61)上。
15.根據(jù)權(quán)利要求14的裝置,其特征在于,可執(zhí)行第五函數(shù)(45),它導(dǎo)致把堆棧存儲器(22)中的指針(60)存儲到控制裝置(10)的存儲位置(61)上。
16.根據(jù)權(quán)利要求14或15的裝置,其特征在于,可執(zhí)行第六函數(shù)(46),它導(dǎo)致把指針(60)從控制裝置(10)的存儲位置(61)寫入到堆棧存儲器(22)。
17.根據(jù)權(quán)利要求11至16中之一的裝置,其特征在于,持久存儲器(50)中的對象(52,54,55)是鏈接的,尤其以一個從所述對象(52,54,55)中的第一對象開始的鏈的形式。
18.一種根據(jù)權(quán)利要求11至17中之一的和/或用于實現(xiàn)根據(jù)權(quán)利要求1至10中之一的方法的裝置,其特征在于,它包括靈巧卡,特別是Javacard,或者為此的電子電路。
19.一種保持對存儲在非持久存儲器中的第一對象的可訪問性的方法,其特征在于,在堆棧存儲器(22)中存儲一個指向所述非持久存儲器(51)中的所述第一對象(56)的指針(60),并且所述堆棧存儲器(22)中的所述指針(60)是可以從控制裝置(10)中的一個持久存儲位置(61)寫和讀的,其存儲最好是可以由執(zhí)行第五函數(shù)(45)導(dǎo)致的。
20.根據(jù)權(quán)利要求19的方法,其特征在于執(zhí)行第六函數(shù)(46),它導(dǎo)致把該指針(60)從控制裝置(10)的存儲位置(61)寫入到堆棧存儲器(22)中。
全文摘要
提出一種在非持久存儲器中建立對象的方法。從指令代碼序列中,讀出導(dǎo)致執(zhí)行第一函數(shù)的第一指令代碼,第一函數(shù)導(dǎo)致把非持久存儲器選擇成下一個要建立的對象的位置。對象建立是由執(zhí)行第二函數(shù)導(dǎo)致的,第二函數(shù)的執(zhí)行是由讀出第二指令代碼導(dǎo)致的。還提出在堆棧存儲器中存儲一個指向暫時對象的指針,并提出一種從持久存儲器寫和讀該指針的機制。
文檔編號G06F9/45GK1234568SQ9910529
公開日1999年11月10日 申請日期1999年4月30日 優(yōu)先權(quán)日1998年5月4日
發(fā)明者邁克爾·巴恩施, 彼得·布勒, 托馬斯·厄里奇, 弗蘭克·赫林, 馬庫斯·奧斯特賴克 申請人:國際商業(yè)機器公司