在非持久存储器内建立对象并保持可访问性的方法和装置的制作方法

文档序号:6416389阅读:186来源:国知局
专利名称:在非持久存储器内建立对象并保持可访问性的方法和装置的制作方法
技术领域
本发明涉及用于在非持久存储器内建立对象的一种方法和装置。更具体地,提出用于基于对象语言的运行时系统中的持久和临时对象的共存,尤其实现在资源受限环境(例如灵巧卡特别是由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日
发明者迈克尔·巴恩施, 彼得·布勒, 托马斯·厄里奇, 弗兰克·赫林, 马库斯·奥斯特赖克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1