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