CN1359491A - 用于资源受限装置的面向对象的指令集 - Google Patents

用于资源受限装置的面向对象的指令集 Download PDF

Info

Publication number
CN1359491A
CN1359491A CN00804876A CN00804876A CN1359491A CN 1359491 A CN1359491 A CN 1359491A CN 00804876 A CN00804876 A CN 00804876A CN 00804876 A CN00804876 A CN 00804876A CN 1359491 A CN1359491 A CN 1359491A
Authority
CN
China
Prior art keywords
instruction
software program
resource
virtual machine
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN00804876A
Other languages
English (en)
Other versions
CN1222875C (zh
Inventor
朱迪思·E·施瓦布
乔舒亚·B·苏瑟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle America Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1359491A publication Critical patent/CN1359491A/zh
Application granted granted Critical
Publication of CN1222875C publication Critical patent/CN1222875C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/356Aspects of software for card payments
    • G06Q20/3563Software being resident on card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/357Cards having a plurality of specified features
    • G06Q20/3574Multiple applications on card
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data

Abstract

一种资源受限装置,例如一块智能卡之类,包括用于存储应用软件程序的存储器,上述应用软件程序包括一个面向对象的、可验证的、独立于平台的、类型安全和指针安全的指令序列。该装置还可以包括一部在微处理器上实现的虚拟机,该虚拟机能执行该指令序列。每一条指令都包括一个操作码,并且每一条数据操作指令都专用于一种特定的数据类型。应用程序在被资源受限装置接收之前,可以存储在一种计算机可读介质之中。还公开了使用这种应用程序的各种方法,包括在因特网上访问该程序并将其下载到一块智能卡中去的方法。

Description

用于资源受限装置的面向对象的指令集
                     背景
本发明一般地涉及用于诸如智能卡之类的资源受限装置的、面向对象的、体系结构的影响为中性的各种程序。
虚拟机是由一种被处理器执行的软件应用程序或指令序列产生的抽象计算机。术语“体系结构的影响为中性的”指的是可以由一部虚拟机在具有多种不同的计算机体系结构的多种计算机平台上来执行的各种程序,例如那些用JavaTM编程语言编写的程序。因此,例如,在一个基于WindowsTM的个人计算机系统上被执行的虚拟机,将使用相同于在基于UNIXTM的计算机系统上被执行的虚拟机的指令集。虚拟机指令序列的平台无关编码的结果是一个或多个字节码的流,其中的每一个都是,例如,一个长度为一个字节的数字代码。
使用Java编程语言已经找到多种应用,包括,例如,那些跟网络浏览器相关的应用。
Java编程语言是面向对象的。在一个面向对象的系统中,“类”描述数据的一个集合,以及用于对该数据进行操作的各种方法。把它们合在一起,数据和各种方法描述一个对象的状态和行为。
Java还是可验证的,因此,在执行用Java编程语言编写的一段应用程序之前,可以对以下问题作出判定:在该段程序中,是否有任何指令序列将尝试为该字节码处理一种不适当类型的数据,或者执行该段程序中的各字节码指令是否会引起一个操作数栈的下溢或溢出。
JavaTM虚拟机执行用Java编程语言编写的虚拟机器码,并且被设计为与32位体系结构配合工作。然而,各种资源受限装置,例如各种智能卡,具有8位或16位的体系结构。
各种智能卡,也被称为智能的便携式数据传输卡,通常由塑料或金属制成,并且含有一块电子芯片,里面包括一个嵌入的、用以执行各种程序的微处理器,以及存储器,用以存储各种程序和数据。这样的装置,可能大约只有一张信用卡那样的大小,典型地具有有限的存储器容量。例如,某些智能卡具有小于1千字节(1k)的随机存取存储器(RAM),以及有限的只读存储器(ROM),和/或诸如电可擦除可编程只读存储器(EEPROM)那样的非易失性存储器。受限的体系结构以及存储器使得在该装置上实现全Java虚拟机成为不实际的或者是不可能的。
而且,各种智能卡涉及多种处理器和配置。因此,人们希望提供一种能够在这样的资源受限装置上执行的、与平台无关的编程语言。
                        概要
一般来说,这里所描述的是一种可验证的、基于对象的、类型安全和指针安全的、用于应用软件程序的指令集,这些应用软件程序可以下载到一系列资源受限的装置上并在其上执行。
根据(本发明的)一个方面,应用软件程序包括一段驻留在计算机可读介质之中的、面向对象的、可验证的、类型安全和指针安全的指令序列。该程序可以被装载到一个资源受限装置之中并由后者加以执行,上述资源受限装置基于短于32位的体系结构,例如16位或8位的体系结构。
根据(本发明的)另一个方面,应用软件程序包括一段驻留在计算机可读介质之中的、面向对象的、可验证的、类型安全和指针安全的指令序列。该程序可以被装载到一个具有不大于64KB容量的随机存取存储器的资源受限装置中并由其加以执行。
各种实施方案包括一种或多种下列特征。例如,每一条指令都包括一个8位的操作码,并且,各指令的序列与硬件平台无关。在某些实施方案中,该序列包括这样一些指令,它们事先从至少一个Java类文件中被转换过来,并且其中指向一个常数池的至少某些引用被转换,以便纳入数据。例如,各指令都可以包括各操作码和各操作数。指向常数池的某些引用被纳入到各操作数之中,并且,指向常数池的某些引用被纳入到各操作码之中。
类似地,在某些实施例中,可以由支持多种数据类型的装置来执行各种指令。指令序列可以包括各种数据操作指令,其中,每一条数据操作指令都专用于一种特定的数据类型。在某些实施方案中,跟每一种数据操作指令相关的数据类型是从下列各种类型中选择一种:带符号的8位2的补码整型数,带符号的16位2的补码整型数,以及带符号的32位2的补码整型数。此外,可以由支持多种引用类型的一部装置来执行各种指令,其中,每一种引用类型都是从下列各种类型中选择一种:类类型,接口类型和数组类型。而且,该程序可以包括一条或多条复合指令,用以对一个当前对象进行一次运算。
根据(本发明的)另一个方面,资源受限装置含有存储器,用以存储一段应用软件程序,其中包括一组面向对象的、可验证的、类型安全和指针安全的指令序列。该装置还包括在一块微处理器上实现的一部虚拟机。该虚拟机能够执行该指令序列。在各种实施例中,该装置可以基于受限的体系结构或者可以具有有限的存储器容量。例如,在某些实施方案中,该装置含有容量不大于64KB的随机存取存储器。在其他的各实施例中,微处理器基于短于32位的体系结构,例如,16位或8位的体系结构。
在其他的各实施例中,可以用专用集成电路(ASIC)或者硬件与固件的组合来取代运行于微处理器之上的虚拟机。
在本发明的一个特定的应用实例中,资源受限装置是一块智能卡。该智能卡可以包括实现于一块微处理器之上的一部虚拟机,其中,该虚拟机能够执行一个指令序列,例如上面所说的那些。
根据(本发明的)另一个方面,公开了使用应用软件程序的各种方法,所述程序中包括一个面向对象的、可验证的、类型安全和指针安全的指令序列。可以在一部资源受限装置(例如,具有有限的存储器或者基于受限的体系结构)中接收该软件程序。然后,在资源受限装置中执行该指令序列。在某些实施方案中,在将该程序下载到资源受限装置之前,可以在一个计算机网络上访问该软件程序。当该程序被下载到资源受限装置时,出现在已接收的指令集之中的常数池索引可以被转换为对应的数据数值。
各种实施方案都具有下列优点中的一条或多条。通过支持Java语言的许多(虽然不是所有的)特征,并且通过使用跟Java类文件相同的语义,可以编写准备由一块智能卡或其他资源受限装置来执行的、与平台无关的虚拟机代码。
指令集可以将某些数据直接地纳入各操作码或各操作数之中,不这样的话,这些数据将作为常数池的一部分而出现。因此,若使用Java类文件格式,则指令集本身可以纳入某些信息,不这样的话,这些信息将存储到常数池之中,并从其中获得。通过直接地将某些信息纳入到指令集之中,就能缩小常数池的大小,这就有助于减少为存储该常数池所需的存储器容量,并且还能改进字节码的执行速度。在某些情况下,将信息直接地纳入到一个操作码之中,就能减少为一条特定指令所需的操作数的数目。当该程序被下载到资源受限装置时,从常数池纳入信息还能消除在该装置中保留常数池的需求,或者缩减常数池的大小。
其他各项特征,例如对当前对象进行各种运算的复合指令以及16位体系结构的显式处理,还能进一步地缩短字节码程序的长度。
从以下的详细说明、诸附图以及各项权利要求中,其他特征和优点将变得更为明显。
                    附图的简要说明
图1表示一个示范性的系统,其中包括驻留在根据本发明的一块智能卡上的一部虚拟机。
图2是一份流程图,表示向根据本发明的一块智能卡提供可执行代码的方法。
图3A和3B分别表示根据本发明的虚拟机指令的示范格式以及虚拟机的执行的一个内环。
图4A和4B分别表示按操作码的数字顺序列出的以及按助记符的字母顺序列出的虚拟机的各种操作码的一个示范性的列表。
图5是各种数据类型的一份列表,这些数据类型受到为根据本发明的多种数据类型而存在的各操作码的支持。
图6A表示根据本发明的一条“iipush”指令的格式,以及
图6B表示在Java类文件格式中,一条对应的“ldc”指令的格式。
图7A表示在Java类文件格式中,一条“checkcast”指令的格式,以及
图7B表示根据本发明的一条“checkcast”指令的格式。
图8A表示根据本发明的一族“getfield_T”指令的格式,以及
图8B表示在Java类文件格式中,一条对应的“getfield”指令的格式。
图9A和9B表示在根据本发明的一个实施例中,在智能卡上的一段实施程序如何准备虚拟机代码,以便安装到智能卡上面。
图10A和10B表示根据本发明,用于获得相同结果的可供选择的各指令。
图11A表示用于使用Java类文件格式执行一个算术表达式的字节码,以及
图11B表示用于根据本发明执行同一算术表达式的字节码。
图12是可以用来实施本发明的资源受限装置的部分的、非排他性的列表。
                           说明
下面将针对各种应用软件程序来说明一种可验证的、基于对象的、类型安全和指针安全的指令集,上述各种应用软件程序可以被下载到多种资源受限装置并在其中执行。资源受限装置通常被认为是,跟常规的桌上型计算机之类相比,在存储器容量和/或计算能力或速度方面相对地受限的那些装置。虽然下面所讨论的特定的实施方案是引用一块智能卡来进行说明的,但是本发明可以应用于其他的资源受限装置,包括,但不局限于,各种蜂窝电话,各种边界扫描装置,各种现场可编程装置,各种个人数字助理(PDAs),以及各种寻呼机,还有其他各种超小型的或小型的足迹装置。
用下面所说明的指令集来编写的程序可以被下载到具有64KB(64千字节)或更少的RAM的资源受限装置,并在其中被执行。某些可以在其中执行这样的程序的资源受限装置可以具有不大于16KB(16千字节)的RAM,并且另外一些则可以具有不大于4KB(4千字节)的RAM。许多这样的装置还具有容量受限的其他存储器,例如不大于24KB(24千字节)的ROM,或者不大于16KB的例如EEPROM那样的非易失性存储器。类似地,某些资源受限装置基于针对短于32位而设计的体系结构。例如,可以跟本发明配合使用的某些装置基于8位或16位的体系结构,而不是32位的体系结构。当然,使用下述指令集的各种应用都是向上兼容的,并且,假定等效的装置支持是存在的,也可以在例如其他Java平台上被执行。
参看图1和2,针对资源受限装置(例如智能卡40)的一段小应用程序的开发,以类似于其他Java程序的开发的方式来开始。换句话说,开发者编写一个或多个Java类(步骤60),并且用Java编译程序来编译源代码,以产生一个或多个类文件10(步骤62)。这段小应用程序可以在一部使用仿真工具来仿真卡40的环境的工作站上运行、调试和除错。当这段小应用程序已准备好下载到卡40上去时,类文件10被转换器14转换为一个已转换的小应用程序(CAP)文件16(步骤64)。转换器14可以被实现为由桌上型计算机执行的一段Java应用程序。除了待转换的类文件10以外,转换器14还可以接纳一个或多个导出文件12作为输入。导出文件12含有由被转换的各类所导入的有关其他封装的内容的命名或链接信息。
一般来说,CAP文件16包括在一个单独的Java封装中被定义的所有各类和各种接口,并且用8位字节流来表示。通过分别地读入两组或4组连续的8位字节,来构成所有的16位和32位的量。其中,CAP文件16包括一个常数池部件18,它从方法部件20中被单独地封装。常数池部件18包括从在编译时所知道的数字文字到方法与字段引用的各种类型的常数,当该程序被下载到智能卡40或者由智能卡在执行时将它们解出。方法部件20指定待下载到智能卡40并且随后由该智能卡执行的各指令集。在Sun微系统公司的题为《Java卡运行时环境(JCRE)2.1说明书》(1998)的出版物中,讨论了一个示范性的CAP文件16的结构的进一步细节,该出版物作为引用文献已被全文收入本文。
经过转换之后,CAP文件16可以被存储在计算机可读的介质17,例如硬盘,软盘,光学存储介质,闪烁器件或者某些其他合适的介质之中。
然后,可以将CAP文件16复制或传送到终端22(步骤66),例如,具有外部卡接纳装置(CAD)24的一部桌上型计算机。在某些实施例中,终端22可以被连接到一个网络(未示出),例如因特网、局域网(LAN)或广域网(WAN),它们跟诸如服务器那样的其他计算装置进行通信。在这样的情况下,可以在网络上存取CAP文件16,并将其发往终端22。还可以使用载波(例如网络数据传输)将CAP文件16提供给终端22。
CAD 24允许将信息写入智能卡40并从其中取出。CAD 24包括一个可以将智能卡40插入其中的卡口(未示出)。一旦插入之后,从压在智能卡40上的表面连接区域的连接器的各触点就能提供电源并允许跟智能卡进行通信,而在其他各种实施方案中,可以使用无触点通信。终端22还包括安装工具26,它装载CAP文件16,以便发往卡40(步骤68)。
智能卡40具有输入/输出(I/O)端口42。它可以包括一组触点,通过这些触点来提供程序、数据和其他方面的通信。卡40还包括安装工具46,用以接收CAP文件16的各项内容,并且准备小应用程序,以便在卡40上加以执行(步骤70)。安装工具46可以被实现为一段Java程序,并且可以在卡40上执行。卡40还具有存储器,包括易失性存储器,例如RAM 50。卡40还具有ROM 52以及非易失性存储器,例如EEPROM54。由控制器44准备的小应用程序可以被存储在EEPROM 54之中。
在一个特定的实施方案中,由运行于微处理器48之上的虚拟机49来执行该小应用程序(步骤72)。虚拟机49,可以被称为Java CardTM虚拟机,不需要装载或处理CAP文件16。而是Java Card虚拟机49执行作为CAP文件16的一部分而事先存储的小应用程序代码。介于JavaCard虚拟机49以及安装工具46之间的功能划分使得虚拟机以及安装工具二者都能保持相对地小。
一般来说,为诸如智能卡40那样的资源受限平台而编写的实施方案和各项小应用程序都遵循用于Java平台封装的标准规则。在T.Lindholm等人所写的《Java虚拟机说明书(1997)》以及K.Arnold等人所写的《Java编程语言第2版(1998)》中,叙述了Java虚拟机以及Java编程语言,以上两篇已作为引用文献被全文收入本文。用于智能卡平台的应用编程接口(API)类可以被写成Java源文件,其中包括封装指定,在这里,一个封装包括多个编译单元并且具有一个唯一的名字。各种封装机制被用来标识和控制对各类、各字段和各方法的访问。Java Card API允许针对一个启用了Java Card的平台而编写的应用程序能运行于其他启用了Java Card的平台。此外,Java Card API兼容于正规的国际标准,例如ISO 7816,以及各项行业专用标准,例如Europay/MasterCard/visa(EMV)。
本发明的智能卡平台支持动态地生成的各对象,包括类实例和数组二者。类可以被实现为一个单独的现有类的扩展或子类,并且它的成员是被称为字段的方法和变量。一种方法声明这样的可执行代码,它可以被激活,并且它接收作为自变量的固定数目的数值。类还可以定义或实现Java接口。类是一种引用类型,其成员是常数和抽象方法。
被存储在CAP文件16之中、并且随后被下载到智能卡40的具体的各指令包括一组8位操作码(opcode),其后跟随着0个、1个或多个8位操作数(图3A)。某些指令没有操作数并且仅包括一个操作码。Java Card虚拟机49的执行的内环的一般形式示于图3B。当一种方法被激活时,JavaCard虚拟机49分配1帧,它具有一组局部变量并且含有一个操作数栈。下面讨论的许多操作码从当前帧的操作数栈中取出一个或多个数值,对它们进行运算,并将结果送回同一个栈。操作数栈还被用来将自变量送往方法,并接收各方法结果。
来自操作数栈的各数值应当以适应于其类型的方式进行运算。JavaCard虚拟机49支持两种数据类型:基本类型和引用类型。Java Card虚拟机49所支持的数字基本类型为:(1)“字节”,其数值为带符号的8位的2的补码的整数;(2)“短整型”,其数值为带符号的16位的2的补码的整数;以及,可选地,(3)“整型”,其数值为带符号的32位的2的补码的整数。Java Card虚拟机49还支持一种“returnAddress”(返回地址)类型,其数值为在用于虚拟机的指令中指向操作码的指针。Java Card虚拟机49所支持的各引用类型为:(1)“类”类型;(2)“接口”类型;以及(3)“数组”类型。这些引用类型相同于Java虚拟机所使用的各引用类型。Java Card虚拟机49在抽象存储单元的意义上被定义,抽象存储单元可以指一个字,它具有足够的字长来容纳“字节”、“短整型”、“引用”或“返回地址”等类型的一个数值。两个字连起来则具有足够的字长来容纳“整型”类型的一个数值。多字节操作数数据按照高位在前的顺序进行编码,换句话说,高量级字节在先。
Java Card虚拟机49支持不能用作已声明的实体的标识符或名字的各种关键字。这些关键字的功能和使用相同于在Java编程语言中对应的关键字。
构成存储于CAP文件16的方法部件20之中的可执行程序的各操作码被设计成使用相同于用Java语言编写的类文件10中所使用的语义。因此,例如,当转换器14将Java类文件10转换为CAP文件16时,各项数学运算结果和类的层次结构得以保留。不过,正如从以下叙述中将得到证实的那样,Java Card虚拟机49能执行的指令序列不同于打算仅由纳入Java虚拟机的系统所运行的程序。某些差别是由于在下面所讨论的指令集中对数据类型的支持受到更多的限制。其他差别来源于这样一个事实,即,下面所讨论的指令集旨在由驻留在资源受限装置之中的一部虚拟机来执行。指令集的某些细节旨在使Java Card虚拟机49或者在其上运行的程序在大小和性能方面得以优化。这样的细节包括:直接将常数池的数据送往各操作码或各操作数,增加一条特定指令的多种样式以便处理不同的数据类型,生成各种复合指令,以便对当前对象进行运算,并且以明显方式来处理16位算术运算。
参照图4A和4B,为准备由Java Card虚拟机49执行的程序提供一个示范性的指令集。每一条指令都由一个对应的操作码(opcode)助记符和数字表示加以标识。除了两个保留的操作码impdep1和impdep2以外,典型地所有的操作码都可以用于CAP文件,例如CAP文件16。对应于两个保留的操作码的指令分别对在软件和硬件中实现的实施方案专用功能提供“后门”或陷阱。相应地,这两个保留的操作码典型地不会适当地出现在CAP文件16之中。它们典型地仅被用来表示那些借助于接收CAP文件以外的方法,被安装在智能卡40上面的程序。
如上所述,每一条指令都包括一个操作码,其后跟随着0个、1个,或多个操作数。换句话说,这些指令具有下列的一般格式:
            操作码
            操作数1
            操作数2
            …在指令格式中的每一个字都代表一个单独的8位字节或“字节码”。该指令的操作码就是它的数字表示。每一条指令还有一个对应的助记符,这就是它的名字。然而,在CAP文件(例如CAP文件36)的虚拟机代码中,仅出现数字表示。
每一条数据操作指令都专用于特定的数据类型。对应于图4A所列的操作码的指令集都支持被Java编程语言所支持的各项特征的一个子集。通过支持Java语言的多种特征(虽然不是所有的),并且通过使用相同于Java类文件10的语义,与平台无关的虚拟机代码可以被写成能够由智能卡40或其他资源受限装置执行的形式。
如上所述,用于Java Card虚拟机的指令集可直接将某些数据纳入各操作码或各操作数之中,不这样的话,这些数据作为常数池18的一部分出现。因此,若人们使用Java类文件格式,则指令集本身就纳入了某些信息,不这样的话,这些信息被存入一个常数池,并从其中获得。这样一来,当一个或多个Java类文件10被转换为CAP文件16时,指向一个常数池的至少某些引用被转换,以便纳入与该CAP文件相关的各字节码中的数据。
例如,若虚拟机49支持数据类型“整型”,则可以使用操作码“iipush”来将一个整型数值送入操作数栈。“iipush”指令的一般格式示于图6A,而来自Java类文件格式的一条对应的指令“ldc”的格式则示于图6B。指令“ldc”包括操作数“索引”,它是一个无符号字节,是进入常数池的一个索引。与此相对照,可以由Java虚拟机49执行的指令“iipush”被执行时,用不着引用常数池。虽然指令“iipush”包括4个操作数,从而增加了指令的长度,但是由于用不着在常数池18中存储附加的信息,节省了存储空间,所以程序稍为长一点的缺点得以弥补。
类似地,可以用操作码“checkcast”来检查一个对象是否属于特定类型。用于Java Card虚拟机49的指令“checkcast”的一般格式示于图7A,并且来自Java类文件格式的一条对应的指令“checkcast”的格式示于图7B。与从常数池中获得数据类型的对应的Java指令相对照,Java Card虚拟机49的数据类型已经被直接地纳入到该指令之中。通过将某些信息直接地纳入到指令集之中,就能减少被存储在CAP文件16之中的常数池18的大小。
前面的实例说明了用于Java Card虚拟机49的指令集如何将某些信息直接地纳入到一个操作数之中。在某些情况下,通过将某些否则就要被存储在常数池18之中的信息直接地纳入到一个操作码之中,就能提供一种附加的纳入方式。因此,例如,用于Java Card虚拟机的指令集增加了几种指令的多种样式,以便处理不同类型的数据,使得那些指令表现为共享一项单独的说明、格式和操作数栈图的相关指令族的成员。在这样一个指令族中的每一条指令都隐含地指定在操作码本身中的数据类型。图5的表提供了各种数据类型的目录,这些数据类型被针对多种数据类型存在的各种指令所支持。各种指令的广泛的和复合的形式没有列出。参照图5,通过用在类型栏中代表该种类型的字母来取代在opcode栏的指令样板中的“T”,就能获得一条专门的指令,其数据类型已被纳入到操作码之中。在这里,针对一条特定指令的栏被保留空白,则不存在支持对该数据类型的特定操作的指令。例如,对数据类型“短整型”来说,有一条“load”(装载)指令,但对数据类型“字节”来说,则没有“load”指令。
通过以隐含方式将数据类型纳入到操作码之中的各指令,跟不这样做时相比,程序可以运行得更快,并且在智能卡40上所需的数据较少。由于在指令中直接地对数据类型进行编码,而不是从常数池的一行中取出,所以产生这些优点。例如,考虑“getfield_T”的指令族,它包括指令“getfield_a”、“getfield_b”、“getfield_s”和“getfield_i”。用于Java Card虚拟机49的“getfeld_T”指令的一般格式示于图8A,与此相对照,在Java类文件格式中的对应的“getfield”指令的格式示于图8B。在用于Java Card虚拟机49的指令(图8A)中,数据类型不仅被纳入到指令之中,而且它已经被直接地纳入到操作码之中。另一方面,这样的特征可以减少存储在CAP文件16中的信息量,并且还能减少用于该特定指令的操作数的数目。另一方面,这些特征扩展了独特的操作码的数目。
以上就操作码“iipush”和“checkcast”而讨论的数据类型的纳入,对那些不频繁地使用的指令来说可能是有利的,而就操作码“getfield_t”指令族而讨论的数据类型的纳入,对那些更加频繁地使用的指令来说可能是特别有利的。
前面的实例说明了用于Java Card虚拟机49的指令集如何固有地纳入某些信息。如下面所述,当把CAP文件16下载到智能卡40时,可能出现纳入信息的另一种方式。
在智能卡40上的安装工具46可能是专用于某种平台的,并且允许根据接收和准备用于执行的虚拟机代码的特定平台来确定CAP文件16的各项内容的实际存储。因此,在某些实施方案中,可以按照不同于它被智能卡所接收的方式,将CAP文件16存储到智能卡40或其他资源受限装置之中。例如,在某些情况下,当CAP文件16被安装到智能卡40之中时,安装工具46可以这样来链接CAP文件的各项内容,使得常数池18的大小得以减小,并且,在某些情况下,在智能卡上就不需要保留或存储常数池。如图9A和9B所示,通过在安装时将表现为CAP文件18的代码的一部分的常数池索引转换为对应的数据,就能做到这一点。例如,可以用指向该对象的适当字段的一个索引来取代指向常数池16的一个索引。这样一来,存储在卡40之中的虚拟机代码将在执行时间之前已经含有被纳入其中的数据。随着常数池18的撤销,虚拟机代码将减少在使用常数池的一段程序中所固有的某些迂回。因此,在智能卡40中,为存储字节码所需的存储器的存储量得以减少,并且用于该程序的执行时间也得以缩短,当然,在其他实施方案中,当CAP文件16被下载到智能卡40时,安装工具46也可以保留常数池18。
如上所述,用于Java Card虚拟机的指令集还包括用于对当前对象进行运算的复合指令。换句话说,Java Card虚拟机49能执行的某些指令允许将多字节指令压缩为一条单指令。特别是,包括一个“this”运算的各指令,例如“getfield_T_this”指令族,以及“putfield_T_this”指令族,能有效地连接多字节指令。一般来说,“this”运算操作对当前对象进行运算。例如,如图10A所示,为了从当前对象中取出一个字段,可以使用“aload_0”指令和一条“getfield_a”指令的组合。可供选择地,如图10B所示,也可以使用单个指令“getfield_T_this”。使用后一种指令可能导致较小的和较快的程序代码。如同前面所指出的那样,在资源受限装置(例如智能卡40)中,这些特征是特别有利的。
用于Java Card虚拟机的指令集也明显地处理16位算术运算。为了说明如何处理16位算术运算,考虑这样一种情形,在其中,“a”,“b”和“c”已经被声明为“短整型”类型变量,并且表达式“c=(short)a+b;”有待于编译。用Java类文件格式编写的字节码示于图11A。正如在图11A中所看到的那样,使用5个操作码来装载数值“a”和“b”,使数值“a”和“b”相加,将所得的整型数转换为短整型数,并且存储该项结果。与此相对照,若使用Java Card虚拟机49的指令集,则由于它排除了将整型数转换为短整型数的需求,所以为了获得和存储该项结果,仅需4个操作码就够了。而且,除了使用较少的字节码之外,由于Java Card虚拟机对16位而不是32位的量进行运算,所以堆栈的大小可以缩减50%之多。
因此,提供了一个面向对象的、可验证的指令集,并允许一个具有虚拟机字节码的文件被存储在一个计算机可读的介质之中。这样一个文件可以被下载到资源受限装置,使得资源受限装置能够执行该字节码。
虽然运行于微处理器48之上的虚拟机49,作为在智能卡40中执行各字节码的一种实施方案已经作了说明,但是,取而代之的是,在可供选择的实施方案中,可以用一种专用集成电路(ASIC)或者硬件与固件的组合来作为控制器,以便执行已下载的代码。
而且,虽然可以用图4A和4B所列举的各操作码来实施本发明,但是,其他各操作码以及具有某些特性的相应的指令集也适于实施本发明。这些特性包括可验证性、类型安全、指针安全、面向对象、动态链接、基于虚拟机、平台无关性,以及使用相同于Java语言的语义,虽然在一个特定的实施方案中,所有这些特性不需要同时出现。
如上所述,Java Card指令集可以跟多种资源受限装置配合使用,其中的一些在图12中列出。
其他各实施方案都处于下列权利要求书的范围内。

Claims (58)

1.一种应用软件程序包括驻留在计算机可读介质上的、面向对象的、可验证的、类型安全和指针安全的指令序列,其中,该程序可以被装载到一个资源受限装置并由后者加以执行,上述资源受限装置基于短于32位的处理器体系结构。
2.根据权利要求1所述软件程序,其中,可以由基于16位处理器体系结构的一个资源受限装置来执行该程序。
3.根据权利要求1所述软件程序,其中,可以由基于8位处理器体系结构的一个资源受限装置来执行该程序。
4.根据权利要求1所述软件程序,其中,每一条指令都含有一个8位的操作码。
5.根据权利要求1所述软件程序,其中,各指令的序列与硬件平台无关。
6.根据权利要求1所述软件程序,其中,从至少一个Java类文件对各指令进行转换,并且其中对一个常数池的至少某些引用被转换,以便纳入数据。
7.根据权利要求6所述软件程序,其中,各指令都含有操作码和操作数,并且其中对常数池的至少某些引用被纳入到至少某些指令的操作数之中。
8.根据权利要求6所述软件程序,其中,各指令都含有操作码和操作数,并且其中对常数池的至少某些引用被纳入到至少某些指令的操作码之中。
9.根据权利要求1所述软件程序,其中,可以由运行于一个微处理器之上的虚拟机来执行各项指令,上述微处理器驻留在资源受限装置之中。
10.根据权利要求1所述软件程序,其中,可以在一块便携式智能卡中执行各指令。
11.根据权利要求1所述软件程序,其中,可以由支持多种数据类型的一部装置来执行各指令,其中,指令序列包括各种数据操作指令,并且其中,每一条数据操作指令都专用于一种特定的数据类型。
12.根据权利要求11所述软件程序,其中,跟每一种数据操作指令相关的数据类型是从下列各种类型中选择一种:带符号的8位2的补码整型数,带符号的16位2的补码整型数,以及带符号的32位2的补码整型数。
13.根据权利要求11所述软件程序,其中,可以由支持多种引用类型的一部装置来执行各指令,并且其中,每一种引用类型都是从下列类型中选择一种:类类型,接口类型和数组类型。
14.根据权利要求1所述软件程序,其中,该程序包括至少一条复合指令,用以对一个当前对象进行一次运算。
15.一种应用软件程序包括驻留在计算机可读介质上的、面向对象的、可验证的、类型安全和指针安全的指令序列,其中,该程序可以被装载到一个资源受限装置并由后者加以执行,上述资源受限装置具有容量不大于64KB(千字节)的随机存取存储器。
16.根据权利要求15所述软件程序,其中,可以由具有容量不大于4KB(千字节)的随机存取存储器的一个资源受限装置来执行该程序。
17.根据权利要求15所述软件程序,其中,每一条指令都包括一个8位的操作码。
18.根据权利要求15所述软件程序,其中,各指令的序列与硬件平台无关。
19.根据权利要求15所述软件程序,其中,从至少一个Java类文件对各指令进行转换,并且其中,指向一个常数池的至少某些引用被转换,以便纳入数据。
20.根据权利要求19所述软件程序,其中,各指令都包括操作码和操作数,并且其中,指向常数池的至少某些引用被纳入到至少某些指令的操作数之中。
21.根据权利要求19所述软件程序,其中,各指令都包括操作码和操作数,并且其中,指向常数池的至少某些引用被纳入到至少某些指令的操作码之中。
22.根据权利要求15所述软件程序,其中,可以由运行于一个微处理器之上的虚拟机来执行各指令,上述微处理器驻留在资源受限装置之中。
23.根据权利要求15所述软件程序,其中,可以在一块便携式智能卡中执行各指令。
24.根据权利要求15所述软件程序,其中,可以由支持多种数据类型的一部装置来执行各指令,其中,指令序列包括各种数据操作指令,并且其中,每一条数据操作指令都专用于一种特定的数据类型。
25.根据权利要求24所述软件程序,其中,跟每一种数据操作指令相关的数据类型是从下列各种类型中选择一种:带符号的8位2的补码整型数,带符号的16位2的补码整型数,以及带符号的32位2的补码整型数。
26.根据权利要求24所述软件程序,其中,可以由支持多种引用类型的一部装置来执行各种指令,其中,每一种引用类型都是从下列各类型中选择一种:类类型,接口类型和数组类型。
27.根据权利要求15所述软件程序,其中,该程序包括至少一条复合指令,用以对一个当前对象进行一次运算。
28.一部资源受限装置包括:
用于存储应用软件程序的存储器,上述程序包括面向对象的、可验证的、类型安全和指针安全的指令序列;
具有不大于64KB容量的随机存取存储器;
在微处理器上实现的虚拟机,其中该虚拟机能够执行该指令序列。
29.根据权利要求28所述的装置,其中,该微处理器基于8位的体系结构。
30.根据权利要求28所述的装置,其中,该微处理器基于16位的体系结构。
31.根据权利要求28所述的装置,其中,每一条指令都包括一个8位操作码。
32.根据权利要求28所述的装置,其中,该指令序列跟硬件平台无关。
33.根据权利要求28所述的装置,其中,从至少一个Java类文件对各指令进行转换,并且其中,指向一个常数池的至少某些引用被转换,以便纳入数据。
34.根据权利要求33所述的装置,其中,各指令都包括操作码和操作数,并且其中,指向该常数池的至少某些引用被纳入到至少某些指令的操作数之中。
35.根据权利要求33所述的装置,其中,各指令都包括操作码和操作数,并且其中,指向该常数池的至少某些引用被纳入到至少某些指令的操作码之中。
36.根据权利要求28所述的装置,其中,虚拟机支持多种数据类型,其中,各指令的序列包括数据操作指令,并且其中,每一条数据操作指令都专用于一种特定的数据类型。
37.根据权利要求28所述的装置,其中,该程序包括至少一条复合指令,用以对一个当前对象进行运算。
38.一部资源受限装置包括:
用于存储应用软件程序的存储器,上述程序包括面向对象的、可验证的、类型安全和指针安全的指令序列;
在微处理器上实现的虚拟机,它基于短于32位的体系结构,其中,该虚拟机能够执行该指令序列。
39.一部资源受限装置包括:
用于存储应用软件程序的存储器,上述程序包括面向对象的、可验证的、类型安全和指针安全的指令序列;
具有不大于64KB容量的随机存取存储器;以及一个能执行该指令序列的处理器。
40.根据权利要求39所述的装置,其中,该微处理器基于8位的体系结构。
41.根据权利要求39所述的装置,其中,该微处理器基于16位的体系结构。
42.一部资源受限装置包括:
用于存储应用软件程序的存储器,上述程序包括一个面向对象的、可验证的、类型安全和指针安全的指令序列;
具有小于64KB容量的随机存取存储器;以及
一个能执行该指令序列的专用集成电路(ASIC)。
43.根据权利要求42所述的装置,其中,该ASIC基于8位的体系结构。
44.根据权利要求42所述的装置,其中,该ASIC基于16位的体系结构。
45.一块智能卡包括:
用于存储应用软件程序的存储器,上述程序包括一个面向对象的、可验证的、类型安全和指针安全的指令序列;
在微处理器上实现的虚拟机,其中,该虚拟机能够执行该指令序列。
46.根据权利要求45所述的智能卡,其中,该虚拟机实质上是一部Java Card虚拟机。
47.根据权利要求45所述的智能卡,其中,每一条指令都包括一个8位操作码。
48.根据权利要求45所述的智能卡,其中,该指令序列跟硬件平台无关。
49.根据权利要求45所述的智能卡,其中,从至少一个Java类文件对各指令进行转换,并且其中,指向一个常数池的至少某些引用被转换,以便纳入数据。
50.根据权利要求45所述的智能卡,其中,各指令都包括操作码和操作数,并且其中,至少指向该常数池的某些引用被纳入到至少某些指令的操作数之中。
51.根据权利要求45所述的智能卡,其中,各指令都包括操作码和操作数,并且其中,至少指向该常数池的某些引用被纳入到至少某些指令的操作码之中。
52.根据权利要求45所述的智能卡,其中,虚拟机支持多种数据类型,其中,各指令的序列包括数据操作指令,并且其中,每一条数据操作指令都专用于一种特定的数据类型。
53.根据权利要求45所述的智能卡,其中,该程序包括至少一条复合指令,用以对一个当前对象进行运算。
54.一种使用应用软件程序的方法,上述程序包括一组面向对象的、可验证的、类型安全和指针安全的指令序列,该方法包括:
在一个具有不大于64KB容量的随机存取存储器的资源受限装置中接收该软件程序;以及
在资源受限装置中执行该指令序列。
55.根据权利要求54所述方法还包括:
在资源受限装置中存储该指令序列。
56.根据权利要求54所述方法还包括:在将该程序下载到资源受限装置之前,在一个计算机网络上访问该软件程序。
57.根据权利要求54所述方法还包括:在将该程序下载到资源受限装置之前,在因特网上访问该软件程序。
58.根据权利要求54所述方法还包括:
将出现在已接收的指令集之中的常数池索引转换为对应的数据数值。
CNB008048762A 1999-02-02 2000-02-02 用于资源受限装置的面向对象的指令集 Expired - Lifetime CN1222875C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/243,101 US7200842B1 (en) 1999-02-02 1999-02-02 Object-oriented instruction set for resource-constrained devices
US09/243,101 1999-02-02

Publications (2)

Publication Number Publication Date
CN1359491A true CN1359491A (zh) 2002-07-17
CN1222875C CN1222875C (zh) 2005-10-12

Family

ID=22917360

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008048762A Expired - Lifetime CN1222875C (zh) 1999-02-02 2000-02-02 用于资源受限装置的面向对象的指令集

Country Status (9)

Country Link
US (1) US7200842B1 (zh)
EP (1) EP1149337A2 (zh)
JP (1) JP2002536743A (zh)
KR (1) KR100713740B1 (zh)
CN (1) CN1222875C (zh)
AU (1) AU764398B2 (zh)
BR (1) BR0007937A (zh)
CA (1) CA2361411A1 (zh)
WO (1) WO2000046666A2 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100462890C (zh) * 2005-06-16 2009-02-18 北京航空航天大学 智能卡安全环境的控制方法
CN102063371A (zh) * 2010-12-29 2011-05-18 大唐微电子技术有限公司 验证芯片处理器逻辑设计的方法和系统
CN1667575B (zh) * 2004-03-12 2011-08-10 微软公司 非集成工具的集成方法
CN101382892B (zh) * 2008-09-24 2012-04-18 飞天诚信科技股份有限公司 下载.Net程序的方法和装置
CN101421711B (zh) * 2006-04-13 2012-10-10 微软公司 用于资源受限设备的虚拟执行系统
CN101763309B (zh) * 2008-12-25 2013-07-03 索尼株式会社 非易失性存储装置、信息记录系统及信息记录方法
CN101751529B (zh) * 2008-12-09 2014-01-08 辉达公司 用于安全处理处理器的虚拟机中的机密内容的方法和装置
CN113760193A (zh) * 2021-08-26 2021-12-07 武汉天喻信息产业股份有限公司 用于资源受限制装置的数据读写方法、装置及指令集
CN114968282A (zh) * 2022-05-20 2022-08-30 北京握奇智能科技有限公司 一种异常处理执行的优化方法和系统

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2752071B1 (fr) * 1996-07-30 1998-12-18 Thomson Csf Lecteur pour cartes a puce a interface homme-machine amelioree
US6092147A (en) 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US6880155B2 (en) 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
CA2279222C (en) * 1999-07-30 2002-07-16 Ibm Canada Limited-Ibm Canada Limitee Direct call threaded code
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
US6651186B1 (en) 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
EP1417572A2 (en) * 2000-09-14 2004-05-12 Sun Microsystems, Inc. Remote incremental program binary compatibility verification using api definitions
AU9084201A (en) * 2000-09-14 2002-03-26 Sun Microsystems Inc Remote incremental program binary compatibility verification using api definitions
US7266731B2 (en) 2001-11-13 2007-09-04 Sun Microsystems, Inc. Method and apparatus for managing remote software code update
EP1355268B1 (en) * 2002-02-28 2006-04-05 Matsushita Electric Industrial Co., Ltd. Memory card
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
NO20023194D0 (no) * 2002-07-01 2002-07-01 Sospita As Fremgangsmåte og apparatur for eksekvering av programvareapplikasjoner i et multiprosessormiljö
FR2871590B1 (fr) 2004-06-15 2006-08-04 Gemplus Sa Procede de chargement d'un logiciel en langage intermediaire oriente objet dans un appareil portatif.
US7581216B2 (en) * 2005-01-21 2009-08-25 International Business Machines Corporation Preserving platform independence with native accelerators for performance critical program objects
US9009688B2 (en) * 2005-12-30 2015-04-14 Intel Corporation Type checking for object-oriented programming languages
US8171453B2 (en) * 2007-05-21 2012-05-01 Microsoft Corporation Explicit delimitation of semantic scope
GB2454869A (en) * 2007-11-13 2009-05-27 Vodafone Plc Telecommunications device security
KR101049718B1 (ko) * 2008-12-29 2011-07-19 에스케이 텔레콤주식회사 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체
EP2256645A1 (en) * 2009-05-29 2010-12-01 Incard SA Method for producing at least a portion of a data visualization layout on a display of a device provided with at least a Smart Card, method for codifying a plurality of HTML instructions and corresponding system
FR2947648A1 (fr) * 2009-07-02 2011-01-07 Trusted Logic Dispositif de compilation, procede de compilation et compilateur
US20130283396A1 (en) * 2009-07-30 2013-10-24 Rascalim Software Security Ltd. System and method for limiting execution of software to authorized users
US10409572B2 (en) * 2014-02-28 2019-09-10 Red Hat, Inc. Compiled file normalization
CN109491659B (zh) * 2017-09-11 2022-06-21 龙芯中科技术股份有限公司 指令转换方法和装置
CN111078279B (zh) * 2019-12-20 2023-06-16 抖音视界有限公司 字节码文件的处理方法、装置、设备及存储介质
CN117130722A (zh) * 2023-08-04 2023-11-28 北京中电华大电子设计有限责任公司 WebAssembly指令集的优化方法及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5107451A (en) 1990-01-30 1992-04-21 The Boeing Company Method and apparatus for pipelined detection of overflow in residue arithmetic multiplication
US5825407A (en) * 1993-09-13 1998-10-20 Albrit Technologies Ltd. Cable television audio messaging systems
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5668999A (en) 1994-12-20 1997-09-16 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
US5724279A (en) * 1995-08-25 1998-03-03 Microsoft Corporation Computer-implemented method and computer for performing modular reduction
US5732263A (en) 1995-10-03 1998-03-24 International Business Machines Corporation Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US5778231A (en) 1995-12-20 1998-07-07 Sun Microsystems, Inc. Compiler system and method for resolving symbolic references to externally located program files
DE19634031A1 (de) * 1996-08-23 1998-02-26 Siemens Ag Prozessor mit Pipelining-Aufbau
PT932865E (pt) * 1996-10-25 2002-12-31 Schlumberger Systems & Service Utilizacao de linguagem de programacao de nivel elevado com um microcontrolador
ATE281680T1 (de) * 1997-03-24 2004-11-15 Visa Int Service Ass System und verfahren für eine mehrzweckchipkarte die eine nachträgliche speicherung einer anwendung auf dieser karte ermöglicht
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US6157966A (en) * 1997-06-30 2000-12-05 Schlumberger Malco, Inc. System and method for an ISO7816 complaint smart card to become master over a terminal
US6349344B1 (en) 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
US6247174B1 (en) * 1998-01-02 2001-06-12 Hewlett-Packard Company Optimization of source code with embedded machine instructions
US5999732A (en) * 1998-03-23 1999-12-07 Sun Microsystems, Inc. Techniques for reducing the cost of dynamic class initialization checks in compiled code
EP0955578A1 (en) 1998-05-04 1999-11-10 International Business Machines Corporation Method and device for carrying out a function assigned to an instruction code
US6195700B1 (en) 1998-11-20 2001-02-27 International Business Machines Corporation Application protocol data unit management facility
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6272674B1 (en) 1998-12-14 2001-08-07 Nortel Networks Limited Method and apparatus for loading a Java application program
US6363523B1 (en) 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
GB2365610A (en) * 2000-08-02 2002-02-20 Ncr Int Inc Self-service terminal
US6988119B2 (en) 2001-06-29 2006-01-17 Intel Corporation Fast single precision floating point accumulator using base 32 system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1667575B (zh) * 2004-03-12 2011-08-10 微软公司 非集成工具的集成方法
CN100462890C (zh) * 2005-06-16 2009-02-18 北京航空航天大学 智能卡安全环境的控制方法
CN101421711B (zh) * 2006-04-13 2012-10-10 微软公司 用于资源受限设备的虚拟执行系统
CN101382892B (zh) * 2008-09-24 2012-04-18 飞天诚信科技股份有限公司 下载.Net程序的方法和装置
CN101751529B (zh) * 2008-12-09 2014-01-08 辉达公司 用于安全处理处理器的虚拟机中的机密内容的方法和装置
CN101763309B (zh) * 2008-12-25 2013-07-03 索尼株式会社 非易失性存储装置、信息记录系统及信息记录方法
CN102063371A (zh) * 2010-12-29 2011-05-18 大唐微电子技术有限公司 验证芯片处理器逻辑设计的方法和系统
CN113760193A (zh) * 2021-08-26 2021-12-07 武汉天喻信息产业股份有限公司 用于资源受限制装置的数据读写方法、装置及指令集
CN113760193B (zh) * 2021-08-26 2024-04-02 武汉天喻信息产业股份有限公司 用于资源受限制装置的数据读写方法、装置及指令集
CN114968282A (zh) * 2022-05-20 2022-08-30 北京握奇智能科技有限公司 一种异常处理执行的优化方法和系统

Also Published As

Publication number Publication date
KR20020002383A (ko) 2002-01-09
AU2979200A (en) 2000-08-25
KR100713740B1 (ko) 2007-05-02
WO2000046666A2 (en) 2000-08-10
EP1149337A2 (en) 2001-10-31
BR0007937A (pt) 2001-11-06
CA2361411A1 (en) 2000-08-10
CN1222875C (zh) 2005-10-12
WO2000046666A3 (en) 2000-12-07
JP2002536743A (ja) 2002-10-29
AU764398B2 (en) 2003-08-14
US7200842B1 (en) 2007-04-03

Similar Documents

Publication Publication Date Title
CN1222875C (zh) 用于资源受限装置的面向对象的指令集
AU771699B2 (en) Token-based linking
CN1119756C (zh) 用于进行静态初始化的方法和系统
US8196129B2 (en) Adaptive class loading
US8818967B2 (en) Method for compressing identifiers
KR20000052759A (ko) 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용
WO2001040900A9 (en) Language subset validation
US8805801B2 (en) Method for compressing a .net file
CN102567020A (zh) 一种智能卡应用的实现方法及系统
US6934726B2 (en) Storing and retrieving of field descriptors in Java computing environments
US20040025009A1 (en) Method and apparatus for acceleration of multimedia content
Lu et al. METHOD FOR COMPRESSING A .NET FILE
Merritt et al. Procedural C++ That Extends Pascal

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: ORACLE AMERICA CO., LTD.

Free format text: FORMER NAME: SUN MICROSYSTEMS, INC.

CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Oracle America Co., Ltd.

Address before: American California

Patentee before: Sun Microsystems, Inc.

CX01 Expiry of patent term

Granted publication date: 20051012

CX01 Expiry of patent term