KR20020002383A - 자원-제약 장치를 위한 객체지향 명령어 세트 - Google Patents

자원-제약 장치를 위한 객체지향 명령어 세트 Download PDF

Info

Publication number
KR20020002383A
KR20020002383A KR1020017009757A KR20017009757A KR20020002383A KR 20020002383 A KR20020002383 A KR 20020002383A KR 1020017009757 A KR1020017009757 A KR 1020017009757A KR 20017009757 A KR20017009757 A KR 20017009757A KR 20020002383 A KR20020002383 A KR 20020002383A
Authority
KR
South Korea
Prior art keywords
instructions
software program
type
resource
virtual machine
Prior art date
Application number
KR1020017009757A
Other languages
English (en)
Other versions
KR100713740B1 (ko
Inventor
주디쓰 이 슈와베
조수아 비 수세르
Original Assignee
추후제출
선 마이크로시스템즈 인코포레이티드
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 추후제출, 선 마이크로시스템즈 인코포레이티드 filed Critical 추후제출
Publication of KR20020002383A publication Critical patent/KR20020002383A/ko
Application granted granted Critical
Publication of KR100713740B1 publication Critical patent/KR100713740B1/ko

Links

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Accounting & Taxation (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

스마트 카드등과 같은 자원-제약 장치는 객체지향의, 검증가능한, 플랫폼-독립적인, 타인-세이프 및 포인터-세이프 시퀀스 명령어들을 포함한다. 장치는 또한 가상 머신이 상기 시퀀스 명령어들을 실행할 수 있는 마이크로프로세서상에서 구현된 가상 머신을 포함한다. 각각의 명령어는 연산 코드를 포함하고 각각의 데이터 조작 명령어는 특정 데이터 타입에 대해 특정하다. 응용 프로그램은 자원-제약 장치에 의해 수신되기 이전에 컴퓨터-판독가능한 매체상에 저장될 수 있다. 인터넷을 통해 프로그램에 액세스하고 그것을 스마트 카드에 다운로드하는 것을 포함하는, 응용프로그램을 사용하는 방법이 또한 개시되어 있다.

Description

자원-제약 장치를 위한 객체지향 명령어 세트{OBJECT-ORIENTED INSTRUCTION SET FOR RESOURCE-CONSTRAINED DEVICES}
가상 머신(virtual machine)은 프로세서에 의해 실행되는 시퀀스 명령어들 또는 응용프로그램에 의해 발생된 추상적인 컴퓨팅 머신(abstract computing machine)이다. 용어 "아키텍처-뉴트럴"은 다양한 다른 컴퓨터 아키텍처들을 가지는 다양한 컴퓨터 플랫폼상에서 가상 머신에 의해 실행될 수 있는, 자바TM프로그래밍 언어로 기록된 것들과 같은 프로그램들을 칭한다. 그러므로, 예를 들면, 윈도우용 개인 컴퓨터 시스템에서 실행되는 가상 머신은 유닉스(UNIXTM)용 컴퓨터 시스템에서 실행되는 가상 머신과 동일한 명령어 세트를 사용할 것이다. 명령어의 가상 머신 시퀀스의 플랫폼-독립적(platform-independent) 코딩의 결과는, 예를 들면, 그 각각이 1-바이트-길이 수치 코드(one-byte-long numerical code)인, 하나 이상의 바이트코드들의 스트림이다.
자바 프로그래밍 언어의 사용은 예를 들면, 웹 브라우저들과 관련된 것들을 포함하는 다양한 응용프로그램들을 제공하였다.
자바 프로그래밍 언어는 객체지향적이다. 객체 지향 시스템에서, "클래스"는 데이터의 집합 및 그 데이터로 작동하는 메쏘드(methods)를 표현한다. 더불어 말하면, 데이터 및 메쏘드들은 객체의 상태 및 동작을 표현한다.
자바는, 또한 자바 프로그래밍 언어로 기록된 응용 프로그램의 실행 이전에, 프로그램내 임의의 명령어 시퀀스가 그 바이트코드에 대해 부적절한(improper) 타입의 데이터를 처리하도록 시도할 것인지, 또는 프로그램내 바이트코드 명령어들의 실행이 오퍼랜드 스택의 언더플로우(underflow) 또는 오버플로우(overflow)를 초래할 것인지에 관하여 결정이 이루어지는 것이 검증가능하다.
자바TM가상 머신은 자바 프로그래밍 언어로 기록된 가상 머신 코드를 실행하고 32-비트 아키텍처를 가지고 사용하도록 설계된다. 그러나, 스마트 카드 같은, 다양한 자원-제약 디바이스들은 8-비트 또는 16-비트 아키텍처를 가진다. 지능형 휴대용 데이터-캐리(data-carrying) 카드로 또한 공지된 스마트 카드들은 일반적으로 플라스틱 또는 금속으로 제조되며 프로그램들을 실행시키기 위한 내장 마이크로프로세서, 및 프로그램들과 데이터를 저장하기 위한 메모리를 포함하는 전자 칩을 가진다. 약 크레디트 카드 크기 정도일 수 있는 그러한 장치들은 통상적으로 한정된 메모리 용량을 가진다. 예를 들면, 소정의 스마트 카드들은 1키로바이트(1K) 이하의 RAM 뿐만아니라 한정된(limited) ROM 및/또는 전기적으로 소거가능한 프로그래머블 ROM(EEPROM)과 같은 비휘발성 메모리를 가진다. 한정된 아키텍처 및 메모리가 완전(full) 자바 가상 머신을 장치상에서 구현하는 것이 비실용적이거나 또는 불가능하게 한다.
더욱이, 스마트 카드들은 다양한 프로세서들 및 구성들로 이루어져 있다. 그러므로, 그러한 자원-제약 장치(resource-constrained device)에서 실행될 수 있는 플랫폼-독립형 프로그래밍 언어(platform-independent programming language)를 제공하는 것은 바람직하다.
발명의 요약
일반적으로, 자원-제약 장치에 다운로드되고 상기 장치에서 실행될 수 있는 응용 소프트웨어 프로그램들을 위한, 검증가능한, 객체지향의, 타입-세이프(type-safe) 및 포인터-세이프(pointer-safe) 명령어 세트가 기술되어 있다.
일 태양에 따르면, 응용 소프트웨어 프로그램은 컴퓨터-판독가능한 매체상에 상주하는 객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을 포함하고 있다. 프로그램은 16-비트 또는 8-비트 아키텍처(architecture) 같은 32비트 이하의 아키텍처용의 자원-제약 장치에 로드되고 그 장치에 의해 실행될 수 있다.
다른 태양에 따르면, 응용 소프트웨어 프로그램은 컴퓨터-판독가능한 매체상에 상주하는 객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을 포함하고 있다. 프로그램은 64K 이하의 용량을 가지는 RAM을 구비한 자원-제약 장치에 로드되고 그 장치에 의해 실행될 수 있다.
다양한 구현체들이 하나 이상의 이하 특징을 포함하고 있다. 예를 들면, 각각의 명령어는 8-비트 연산코드를 포함할 수 있으며 시퀀스 명령어들은 하드웨어 플랫폼-독립적이다. 소정의 구현체에 있어, 시퀀스는 인라인 데이터로 변환된 상수 풀에 대한 적어도 소정의 레퍼런스들을 가지는 적어도 하나의 자바 클래스 파일로부터 미리 변환된 명령어들을 포함한다. 예를 들면, 명령어들은 연산코드들 및 오퍼랜드들을 포함할 수 있다. 상수 풀에 대한 소정의 레퍼런스들은 오퍼랜드들로 인라인될 수 있고 상수 풀에 대한 소정의 레퍼런스들은 연산 코드들로 인라인될 수 있다.
유사하게, 몇가지 실시예들에서, 명령어들이 다중 데이터 타입들을 지원하는 장치에 의해 실행될 수 있다. 시퀀스 명령어들은 그 각각이 특정 데이터 타입에 대해 특정한 데이터 조작 명령어들을 포함할 수 있다. 소정의 구현체들에서, 각각의 데이터 조작 명령어와 관련된 데이터 타입은 이하 타입들: 8-비트 부호있는 2의 보수 정수 수치 타입(signed two's complement integer numeric type), 16-비트 부호있는 2의 보수 정수 수치 타입 및 32-비트 부호있는 2의 보수 정수 수치 타입 중 하나로부터 선택될 수 있다. 부가적으로, 명령어들은 그 각각이 이하 타입들: 클래스 타입, 인터페이스 타입 및 어레이 타입 중 하나로부터 선택되는 다중 레퍼런스 타입들을 지원하는 장치에 의해 실행될 수 있다. 더욱이, 프로그램은 현재 객체에서 연산을 수행하기 위한 하나 이상의 복합 명령어(composite instruction)들을 포함할 수 있다.
다른 태양에 따라, 자원-제약 장치는 객체지향의, 검증가능한, 타입-세이프및 포인터-세이프 시퀀스 명령어들을 포함하는 응용 소프트웨어 프로그램을 저장하기 위한 메모리를 포함하고 있다. 장치는 또한 마이크로프로세서에서 구현되는 가상 머신을 포함하고 있다. 가상 머신은 시퀀스 명령어들을 실행할 수 있다. 다양한 실시예에서, 장치는 한정된 아키텍처를 기반으로 할 수 있거나 또는 한정된 양의 메모리를 가질 수 있다. 에를 들면, 소정의 구현들에서, 장치는 약 64K 이하의 용량을 가지는 램을 포함하고 있다. 다른 실시예들에서, 마이크로프로세서는 예를 들면, 16 또는 8-비트 아키텍처의 32비트 이하의 아키텍처를 기반으로 한다.
다른 실시예들에서, 응용 주문형 집적회로(ASIC) 또는 하드웨어 및 펌웨어의 조합체는 마이크로프로세서에서 실행되는 가상 머신 대신에 사용될 수 있다.
본 발명의 하나의 특정 응용에 있어서, 자원-제약 장치는 스마트 카드이다. 스마트 카드는 마이크로프로세서에서 실현되는 가상 머신을 포함하는데, 상기 가상 머신은 상기된 것들과 같은 시퀀스 명령어들을 실행할 수 있다.
다른 태양에 따라, 객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을 포함하는 응용 소프트웨어 프로그램을 사용하기 위한 방법들이 기술되어 있다. 소프트웨어 프로그램은 예를 들면, 한정된 메모리를 가지는 자원-제약 장치에 수신되거나 또는 한정된 아키텍처를 기반으로으로 할 수 있다. 이후, 시퀀스 명령어들은 자원-제약 장치에서 실행될 수 있다. 소정의 구현들에서, 소프트웨어 프로그램은 인터넷 같은 컴퓨터 네트워크를 통해 그것을 장치에 다운로드하기 이전에 액세스될 수 있다. 프로그램이 자원-제약 장치에 다운로드될 때, 명령어들의 수신된 세트에 나타나는 상수 풀 인덱스(indices)들은 상응하는 데이터 값들로 변환될 수 있다.
다양한 구현체들은 이하 하나 이상의 장점들을 포함한다. 전체는 아닐지라도 자바 언어의 다수의 특징들을 지원함으로써, 그리고 자바 클래스 파일들과 동일한 의미론을 사용함으로써, 플랫폼-독립적 가상 머신 코드가 스마트 카드 또는 다른 자원-제약 장치에 의해 실행되도록 기록될 수 있다.
명령어 세트는 상수 풀의 일부로 나타날 일정 데이터를 직접 연산코드들 또는 오퍼랜드들로 인라인시킬 수 있다. 그러므로, 명령어 세트 그 자체는 자바 클래스 파일 포맷을 사용한다면 상수 풀에 저장되고 그것으로부터 회득될 일정 정보를 채용할 수 있다. 소정의 정보를 직접 명령어 세트로 인라인 시킴으로써, 상수 풀의 크기가 감소될 수 있는데, 그것은 상수 풀을 저장하기 위해 요구된 메모리의 양을 감소시키도록 할 수 있고 바이트코드의 실행 속도를 향상시킬 수 있다. 소정 경우들에 있어, 정보를 직접 연산 코드에 인라인시키는 것은 특정 명령어를 필요로 하는 오퍼랜드들의 숫자를 감소시킬 수 있다. 프로그램이 자원-제약 장치에 다운로드될 때 상수 풀로부터의 정보의 부가적인 인라이닝은 장치에 상수풀을 유지하거나 또는 상수 풀의 크기를 감소시킬 필요성을 제거할 수 있다.
현재 객체에서 연산을 수행하기 위한 복합 명령어들 같은 다른 특징들 및 16-비트 산술의 명백한 처리는 바이트코드 프로그램의 길이를 더 감소시킬 수 있다.
다른 특징들 및 장점들은 이하의 상세한 설명, 첨부된 도면들 및 청구항들로부터 명백할 것이다.
본 발명은 일반적으로는, 스마트 카드 등과 같은 자원-제약(resource-constrained) 장치에 사용하기 위한 객체-지향 아키텍처-뉴트럴(architecture-neutral) 프로그램에 관한 것이다.
도1은 본 발명에 따라 스마트 카드 상에 상주하는 가상 머신을 포함하는 실예의 시스템을 도시한다.
도2는 본 발명에 따라 실행가능 코드를 스마트 카드에 제공하는 방법을 도시하는 순서도이다.
도3A 및 3B는 본 발명에 따른 가상 머신 명령어 및 가상 머신의 실행의 내부 루프에 관한 실예 포맷을 각각 도시한다.
도4A 및 4B는 각각 연산 코드에 의해 수치 순서로 나열되고 의사기호에 의해 알파벳 순서로 나열된 가상 머신에 대한 실예의 연산 코드들의 세트에 관한 표들이다.
도5는 본 발명에 따른 다중 데이터 타입들을 위해 존재하는 연산 코드들에 의해 지원되는 데이터 타입들의 리스트이다.
도6A는 본 발명에 따른 "iipush" 명령어의 포맷을 도시하고,
도6B는 자바 클래스 파일 포맷에서의 상응하는 "Idc" 명령어의 포맷을 도시한다.
도7A는 자바 클래스 포맷의 "checkcast" 명령어의 포맷을 도시하고,
도7B는 본 발명에 따른 "checkcast" 명령어의 포맷을 도시한다.
도8A는 본 발명에 따른 "getfield_T" 명령어들의 패밀리의 포맷을 도시하고,
도8B는 자바 클래스 파일 포맷에서의 상응하는 "getfield" 명령어의 포맷을 도시한다.
도9A 및 9B는 본 발명의 일실시예에 따라 스마트 카드에 인스톨을 위해 어떻게 스마트 카드의 실현 프로그램이 가상 머신 코드를 준비하는지를 도시한다.
도10A 및 10B는 본 발명에 따라 동일한 결과를 얻기 위한 변형 명령어들을 도시한다.
도11A는 자바 클래스 파일 포맷을 사용하여 수학적 표현을 실행하기 위한 바이트코드들을 도시하고,
도11B는 본 발명에 따라 동일한 수학 표현을 실행하기 위한 바이트코드들을 도시한다.
도12는 본 발명이 사용될 수 있는 자원-제약 장치들의 부분적, 비배타적 리스트이다.
자원-제약 장치들에 다운로드 되고 거기서 실행될 수 있는 응용 소프트웨어 프로그램들을 위한, 검증가능한, 객체지향의, 타입-세이프 및 포인터-세이프 명령어 세트가 이하에서 기술된다. 자원-제약 장치들은 일반적으로 통상적인 데스크탑 컴퓨터등과 비교할 때, 메모리 및/또는 계산처리 능력 또는 속도에서 비교적 한정되는 것들로 간주된다. 이하에서 기술되는 특정 구현이 스마트 카드에 대해 참고로 기술되지만, 본 발명은 휴대용 전화, 경계 스캔 장치(boundary scan device), 필드 프로그래머블 장치, 개인정보 단말기(PDA) 및 무선호출기로 국한되지 않고, 뿐만아니라 다른 소형 또는 작은 풋프린트(footprint) 장치를 포함하는 다른 자원-제약 장치들과 사용될 수 있다.
이하 기술된 명령어 세트로 기록된 프로그램들은 약 64 키로바이트(64K)의 또는 그 이하의 램을 가지는 자원-제약 장치에 다운로드되고 거기서 실행될 수 있다. 그러한 프로그램들이 실행될 수 있는 몇몇의 자원-제약 장치들은 약 16키로바이트(16K) 이하의 램을 가질 수 있고 다른 것들은 약 4키로바이트 이하의 램을 가질 수 있다. 다수의 장치들은 약 24키로바이트 이하의 롬, 또는 EEPROM 같은 약 16K 이하의 비휘발성 메모리 같은, 한정된 양의 다른 메모리를 가진다. 유사하게, 몇몇의 자원-제약 장치들은 32비트 이하를 위해 설계된 아키텍처를 기반으로 한다. 예를 들면, 본 발명에 사용될 수 있는 몇가지 장치들은 32비트 아키텍처 보다는 오히려 8비트 또는 16비트 아키텍처를 기반으로 한다. 물론, 이하 기술된 명령어 세트를 사용하는 응용프로그램들은 상향(upward) 호환되고 예를 들면, 등가 장치 지원이 제공되면 다른 자바 플랫폼에서 실행될 수 있다.
도1 및 도2를 참고하면, 스마트 카드(40) 같은 자원-제약 장치에 대한 애플릿의 전개는 다른 자바 프로그램의 전개와 유사한 방식으로 시작한다. 달리 말하면, 디벨로퍼(developer)는 하나 이상의 자바 클래스를 기록(write)하고(단계60), 하나 이상의 클래스 파일(10)을 생성하기 위해 자바 컴파일러로 소스 코드를 컴파일링한다(단계62). 예를 들면, 카드(40)의 환경을 에뮬레이트하도록 시뮬레이션 툴을 사용하여 워크스테이션에서 테스트되고 디버깅(debugged)된 애플릿이 실행될 수 있다. 애플릿이 카드(40)에 다운로드될 준비가 되면, 클래스 파일(10)들은 컨버터(14)에 의해 변환 애플릿(CAP: converted applet) 파일(16)로 변환된다(단계64). 컨버터(14)는 데스크탑 컴퓨터에 의해 실행되는 자바 응용프로그램으로 구현될 수 있다. 컨버터(14)는 그것이 변환될 클래스 파일(10)들에 더하여 하나 이상의 엑스포트 파일(12)들을 그 입력으로 받아들일 수 있다. 엑스포트 파일(export file)(12)은 변환되는 클래스들에 의해 임포트(import)되는 다른 패키지들의 콘텐츠들에 대한 네이밍(naming) 또는 링킹(linking) 정보를 포함한다.
일반적으로, CAP 파일(16)은 단일 자바 패키지로 규정된 모든 클래스들 및 인터페이스들을 포함하며 8-비트 바이트의 스트림(a stream of 8-bit bytes)으로 나타낸다. 모든 16-비트 및 32-비트 양(quantities)들은 2 또는 4개의 연속 8-비트 바이트들로 각각을 판독하여 구성된다. 다른 것들 중에서, CAP 파일(16)은 메쏘드 요소(method component)(20)로부터 별개로 패키징되는 상수 풀 요소(18)(constant pool component)를 포함한다. 상기 상수 풀 요소(18)는 컴파일시 알려진 수치 문자로부터 프로그램이 스마트카드(40)에 다운로드될 때 또는 스마트 카드에 의한 실행시간에 분석(resolved)되는 레퍼런스들 및 메쏘드까지의 다양한 타입의 상수들을 포함할 수 있다. 메쏘드 요소(20)는 스마트 카드(40)에 다운로드되고 연속적으로 스마트 카드에 의해 실행되도록 명령어들의 세트를 규정한다. 실시예 CAP 파일(16)의 구성의 부가적인 세부 항목들은 그 전체가 본문에 참고로 인용되는 "Java Card Runtime Environment(JCRE)2.1 Specification"(1998)라는 명칭으로, 선 마이크로시스템즈(Sun Microsystems), 인코포레이티드에 의해 공고되어 개시되었다.
변환 이후에, CAP 파일(16)은 하드 드라이브, 플로피 디스크, 광 저장 매체, 플래쉬 디바이스(flash device) 또는 소정의 다른 적절한 매체 같은, 컴퓨터-판독가능한 매체(17)에 저장될 수 있다.
CAP 파일(16)은 이후 주변 카드 수용 장치(CAD:peripheral card acceptance device)(24)를 갖는 데스크탑 컴퓨터 같은 단말기(22)(단계66)에 전달 되거나 또는 카피될 수 있다. 몇 실시예들에서, 단말기(22)가 서버와 같은 다른 컴퓨팅 장치와 통신하는, 인터넷, 근거리 통신망(LAN), 또는 원거리 통신망(WAN) 같은, 네트워크(도시되지 않음)에 연결될 수 있다. 이런 상태에서, CAP 파일(16)은 네트워크를 통해 단말기(22)에 액세스되고 전달될 수 있다. CAP 파일(16)은 또한 네트워크 데이터 전송 같이 반송파를 사용하여 단말기(22)에 제공될 수 있다.
CAD(24)는 정보가 스마트 카드(40)에 기록되고 이로부터 검색되도록 한다. CAD(24)는 스마트 카드(40)가 삽입될 수 있는 카드 포트(card port)(도시되지 않음)를 포함한다. 일단 삽입되면, 커넥터로부터의 접촉부들은, 다른 구현에서 무접촉 통신이 사용될 수 있을지라도 스마트 카드와의 통신을 허용하고 파워를 제공하도록 스마트 카드(40)상의 표면 연결 부위에 대해 압착한다. 단말기(22)는 카드(40)에 전송을 위해 CAP 파일(16)을 로드시키는 설치 툴(installation tool)(26)을 또한 포함한다(단계68).
스마트 카드(40)는 프로그램, 데이터 및 다른 통신들이 제공될 수 있는 일련의 접촉부를 포함할 수 있는 입/출력(I/O) 포트(42)를 가진다. 카드(40)는 또한 CAP 파일(16)의 콘텐츠를 검색하고 카드(40)의 실행을 위한 애플릿을 준비하기 위한 설치 툴(46)을 포함한다(단계70). 설치 툴(46)은 예를 들면, 자바 프로그램으로 구현될 수 있고 카드(40)로 실행될 수 있다. 카드(40)는 또한 RAM(50) 같은 휘발성 메모리를 포함하는 메모리를 포함한다. 카드(40)는 또한 ROM(52) 및 EEPROM(54) 같은 비휘발성 메모리를 가진다. 컨트롤러(44)에 의해 준비된 애플릿은 EEPROM(54)에 저장될 수 있다.
하나의 특정 구현에 있어서, 애플릿은 마이크로프로세서(48)로 실행되는 가상 머신(49)에 의해 실행될 수 있다(단계72). 자바 카드TM가상 머신으로 칭해질 수 있는 가상 머신(49)은 CAP 파일(16)을 로드하거나 또는 조작할 필요가 없다. 오히려, 자바 카드 가상 머신(49)은 CAP 파일(16)의 부분으로 미리 저장된 애플릿 코드를 실행한다. 자바 카드 가상 머신(49)과 설치 툴(46) 사이의 기능성의 분할은 가상 머신 및 설치 툴 모두 비교적 작게 유지되도록 한다.
일반적으로, 스마트 카드(40) 같은 자원-제약 플랫폼을 위해 기록된 구현체들 및 애플릿들은 자바 플랫폼 패키지들에 대한 표준 룰들을 허용한다. 자바 가상 머신 및 자바 프로그래밍 언어는, 그 전체가 참고로 본문에 인용되는, T. Lindholm 등의 The Java Virtual Machine Specification(1997), 및 K. Arnold 등의 The Java Programming Language Second Edition(1998)에 개시되어 있다. 스마트 카드 플랫폼을 위한 응용 프로그래밍 인터페이스(API) 클래스들은, 패키지가 다수의 컴파일 유닛(compilation units)을 포함하고 특정 명칭(unique name)을 가지는 패키지 지정(package designations)을 포함하는 자바 소스 파일들로 기록될 수 있다. 패키지 매커니즘은 클래스들, 필드들 및 메쏘드들에 대한 액세스를 식별하고 제어하도록 사용된다. 자바 카드 API는 하나의 자바 카드-인에이블드 플랫폼(Java Card-enabled platform)을 위해 기록된 응용프로그램들이 임의의 다른 자바 카드-인에이블드 플랫폼에서 실행되도록 한다. 추가적으로, 자바 카드 API는 ISO 7816 같은 공식 국제 표준 및 유로페이/마스터카드/비자(EMV) 같은 산업-특정 표준과 호환된다.
본 발명의 스마트 카드 플랫폼은 클래스 인스턴스(instance) 및 어레이들(arrays) 모두를 포함하는, 역동적으로 생성된 객체들을 지원한다. 클래스는 단일 존재 클래스의 확장 또는 서브클래스로 구현되고 그 구성원들은 메쏘드 뿐만 아니라 필드로 칭해지는 변수(variables)이다. 메쏘드는 호출될 수 있고 인자로서 고정된 수의 값들을 수신하는 실행가능한 코드를 선언(declare)한다. 클래스들은 또한 자바 인터페이스들을 정의하거나 실현할 수 있다. 인터페이스는 그 구성원들이 상수들 및 추상적인 메쏘드들인 레퍼런스 타입이다.
CAP 파일(16)에 저장되고 연속해서 스마트 카드(40)에 다운로드된 개개의 명령어들은 0, 1 또는 다중 8-비트 오퍼랜드들이 뒤따르는 8-비트 연산 코드(오피코드)를 포함한다(도3A). 몇개의 명령어들은 오퍼랜드들을 가지지 않으며 오피코드로만 구성된다. 자바 카드 가상 머신(49)의 일반적인 형태의 내부 실행 루프는 도3B에 도시되어 있다. 메쏘드가 호출(invoked)될 때, 자바 카드 가상 머신(49)은 일련의 국부 변수들을 가지며 오퍼랜드 스택을 포함하는 프레임을 할당한다. 이하 기술되는 다수의 연산 코드들은 현재의 프레임의 오퍼랜드 스택으로부터 하나 이상의 값들을 취하고, 이들로 연산하며, 동일한 스택에 결과를 되돌린다. 오퍼랜드 스택(operand stack)은 또한 인수(argument)들을 메쏘드에 전달하고 메쏘드 결과를수신하기 위해 사용된다.
오퍼랜드 스택으로부터의 값들은 이들 타입들에 적절한 방식으로 연산되어야 한다. 자바 카드 가상 머신(49)은 두 가지의 데이터 타입: 원시적 타입(primitive type)과 레퍼런스 타입(reference type)을 지원한다. 자바 카드 가상 머신(49)에 의해 지원된 수치 원시적 타입들은 :(1)그 값들이 8-비트 부호있는 2의 보수 정수(8-bit signed two's complement integer)들인 "바이트"; (2)그 값들이 16-비트 부호있는 2의 보수 정수들인 "쇼트(short)"; 및, 선택적으로, (3)그 값들이 32-비트 부호있는 2의 보수 정수들인 "int"이다. 자바 카드 가상 머신(49)은 또한 그 값들이 가상 머신을 위한 명령어들내 연산코드들에 대한 포인터들인 "returnAddress" 타입을 지원한다. 자바 카드 가상 머신(49)에 의해 지원된 레퍼런스 타입들은 "클래스"타입; (2)"인터페이스"타입; 및 (3)"어레이(array)"타입들이다. 이러한 레퍼런스 타입들은 자바 가상 머신에 사용된 레퍼런스 타입과 동일하다. 자바 카드 가상 머신(49)은, 타입 "바이트", "쇼트", "레퍼런스", 또는 "returnAddress"의 값을 유지하기에 충분히 큰, 워드로 칭해질 수 있는, 추상적인 저장 유닛에 의하여 규정된다. 두개의 워드(words)는 타입"int."의 값을 유지하기에 충분히 크다. 다중-바이트 오퍼랜드 데이터는 큰 끝 순차(big-endian order)로, 달리 말하면, 큰-순차 바이트를 먼저 인코딩한다
식별자들 또는 선언된 엔티티(declared entities)들의 명칭들로 사용될 수 없는, 다양한 키워드들이 자바 카드 가상 머신(49)에 의해 지원된다. 이런 키워드들의 기능 및 사용은 자바 프로그래밍 언어의 상응하는 키워드들과 동일하다.
CAP 파일(16)의 메쏘드 요소(20)에 저장된 실행가능한 프로그램을 형성하는 연산 코드들은 자바 언어로 기록된 클래스 파일(10)들에 사용된 것과 동일한 의미론을 사용하도록 디자인된다. 그러므로, 예를 들면, 수학적 결과들 및 클래스 계층들이, 컨버터(14)가 자바 클래스 파일(10)들을 CAP 파일(16)로 변환할 때 유지된다. 그럼에도 불구하고, 이하 기술에서 명백한 바와 같이, 자바 카드 가상 머신(49)에 의해 실행될 수 있는 시퀀스 명령어들은 자바 가상 머신을 채용하는 시스템에 의해 단독으로 실행되도록 의도된 프로그램들과 상이하다. 몇가지 차이점들은 이하 기술되는 명령어 세트에 제공된 데이터 타입의 보다 제한된 지원에서 기인된다. 다른 차이점들은 이하 기술된 명령어 세트가 자원-제약 장치에 상주하는 가상 머신에 의해 실행되도록 디자인된 사실로부터 초래된다. 명령어 세트의 소정 세부항목은 자바 카드 가상 머신(49) 또는 그것에서 실행되는 프로그램들의 크기 또는 성능을 최적화하도록 의도된다. 그러한 세부항목은 상수 풀 데이터(constant pool data)를 직접 연산 코드들 또는 오퍼랜드들에 인라이닝(inlining)하고, 다른 데이터 타입들을 처리하기 위해 특정 명령어의 다중 버전들을 부가하고, 현재 객체의 연산을 위한 복합 명령어들을 생성하고, 16비트 산술을 명백하게 처리하는 것을 포함한다.
도4A 및 4B를 참고하면, 실예의 명령어 세트가 프로그램이 자바 카드 가상 머신(49)에 의해 실행되도록 제공된다. 각각의 명령어는 상응하는 연산 코드(오피코드) 니모닉(mnemonic) 및 수치 표현에 의해 식별된다. 두개의 예비된(reserved) 오피코드들, impdep1 및 impdep2을 제외하고, 모든 오피코드들이 통상적으로 CAP파일(16) 같은 CAP파일에 사용될 수 있다. 두개의 예비된 오피코드들에 상응하는 명령어들은 각각 소프트웨어와 하드웨어로 실현된 실현-특이성 기능성(implementation-specific functionality)에 백도어(backdoor)들 또는 트랩(trap)들을 제공한다. 따라서, 두개의 예비된 오피코드들은 통상적으로 CAP 파일(16)에 적절하게 나타나지 않는다. 이들은 통상적으로 CAP 파일의 수신 이외의 다른 수단에 의해 스마트 카드(40)에 위치되는 프로그램들의 표현으로만 사용된다.
상기된 바와 같이, 각각의 명령어는 0, 1 또는 그 이상의 오퍼랜드들이 뒤따르는 연산코드를 포함한다. 달리 말하면, 명령어들은 이하의 일반 형태를 가진다:
operation code
operand1
operand2
.....
명령어 포맷에서의 각각의 워드는 단일 8-비트 바이트 또는 "바이트코드(bytecode)"를 나타낸다. 명령어의 오피코드는 그것의 수치 표현이다. 각각의 명령어는 또한 그것의 명칭인 상응하는 니모닉(mnemonic)을 가진다. 그러나, 단지 수치 표현이 CAP 파일(36) 같은 CAP 파일의 가상 머신 코드에 제공된다.
각각의 데이터 조작 명령어는 특정 데이터 타입에 대해 특정적이다. 도4A에 나열된 연산 코드들에 상응하는 명령어 세트는 자바 프로그래밍 언어에 의해 지원된 특징의 서브세트를 지원한다. 자바 언어의 전체는 아닐지라도 다수의 특징들을 지원하고 자바 클래스 파일(10)들과 동일한 의미론을 사용하여, 플랫폼-독립적인(platform-independent) 가상 머신 코드는 스마트 카드(40) 또는 다른 자원-제약 장치에 의해 실행되도록 기록될 수 있다.
상기된 바와 같이, 자바 카드 가상 머신에 대한 명령어 세트는, 상수 풀(18)로 나타날 일정 데이터를 연산 코드 또는 오퍼랜드로 직접 인라인시킨다. 그러므로, 명령어 세트 그 자체는 하나가 자바 클래스 파일 포맷을 사용중이라면 다른 방법으로 상수 풀(constant pool)에 저장되고 여기로부터 획득되는 일정 정보를 채용한다. 그러므로, 하나 이상의 자바 클래스 파일(10)들이 CAP 파일(16)로 변환될 때, 상수 풀에 대한 적어도 소정의 레퍼런스들은 CAP 파일과 관련된 바이트코드들의 인라인 데이터로 변환된다.
예를 들면, 가상 머신(49)이 데이터 타입 "int."를 지원한다면, "iipush" 연산 코드가 정수 값을 오퍼랜드 스택에 푸시하도록 사용될 수 있다. ""iipush" 명령어에 대한 일반 포맷은 도6A에 도시되고, 자바 클래스 파일 포맷으로 부터의 상응하는 "ldc" 명령어의 포맷은 도6B에 도시되어 있다. "ldc" 명령어는 상수 풀로의 인덱스인 부호없는(unsigned) 바이트의 오퍼랜드 "인덱스(index)"를 포함한다. 대조적으로, 자바 카드 가상 머신(49)에 의해 실행되는 "iipush" 명령어는 그 명령어를 실행할 때 상수풀에 대해 참조할 필요성을 없앤다. "iipush" 명령어가 4 오퍼랜드를 포함하여 명령어의 길이를 증가시킨다 할지라도, 약간 더 긴 프로그램은 상수 풀(18)에 추가적인 정보를 저장할 필요성을 없애므로써 달성되는 메모리 공간의 절약에 의해 상쇄될 수 있다.
유사하게, "checkcast" 연산 코드는 객체가 특정 타입인지를 체크하도록 사용될 수 있다. 자바 카드 가상 머신(49)을 위한 "checkcast"명령어에 대한 일반적인 포맷이 도7A에 도시되어 있고, 상응하는 자바 클래스 파일 포맷으로부터의 "checkcast" 명령어의 포맷은 도7B에 도시되어 있다. 자바 카드 가상 머신(49)에 대한 데이터 타입은 데이터 타입이 상수 풀로부터 획득되는 상응하는 자바 명령어와는 대조적으로, 명령어로 직접 인라인 되었다. 소정의 정보를 명령어 세트에 직접 인라인시킴으로써, CAP 파일(16)에 저장되는 상수 풀(18)의 크기가 감소될 수 있다.
전술한 예들은 어떻게 자바 카드 가상 머신(46)을 위한 명령어 세트가 소정의 정보를 직접 오퍼랜드에 인라인시키는지를 설명하고 있다. 일부 경우에 있어서, 인라이닝의 추가적인 형태는 상수 풀(18)에 저장되어 있는 정보를 직접 연산 코드에 인라인시킴으로써 제공된다. 그러므로, 예를 들면, 자바 카드 가상 머신을 위한 명령어 세트는 다른 데이터 타입을 처리하기 위해서 몇 가지 명령어의 다중 버전을 부가하여 그 명령어들이 단일 디스크립션(description), 포맷 및 오퍼랜드 스택 다이어그램을 공유하는 관련 명령어들의 패밀리의 구성원으로서 나타나도록 한다. 그러한 명령어들의 패밀리의 각 명령어는 연산 코드 자체의 데이터 타입을 명백하게 규정한다. 도 5의 표는 다중 데이터 타입들에 대해 존재하는 명령어들에 의해 지원되는 데이터 타입들의 목록을 제공하고 있다. 명령어들의 광범위하고 복합적인 형태들은 나열되어 있지 않다. 도 5를 참조하면, 연산 코드에 채용된 데이터 타입을가진 특정 명령어는 오피코드(opcode) 열(column)의 명령어 템플릿의 "T"를 타입 열의 타입을 나타내는 문자로 교체시킴으로서 획득된다. 특정 명령어에 대한 열이 블랭크로 남겨진다면, 그 데이터 타입에 대한 특정 연산을 지원하는 명령어는 존재하지 않게 된다. 예를 들면, 데이터 타입 "short"에 대한 "load" 명령어는 있지만, 데이터 타입 "byte"에 대한 "load" 명령어는 없다.
데이터 타입을 연산 코드에 명백하게 채용하는 명령어들 때문에, 프로그램은 더 빠르게 그리고 스마트 카드(40)상에서 필요한 것보다 적은 데이터를 가지고 연산할 수 있다. 그러한 이점들은 데이터 타입이 상수 풀내 엔트리로부터 획득되기보다는 오히려, 명령어들에 직접 인코딩되기 때문에 발생한다. 예를 들면, 명령어들 "getfield_a", "getfield_b", getfield_s" 및 "getfield_i"를 포함하는 "getfield_T" 명령어들의 집합을 생각해보자. 자바 카드 가상 머신(49)으로 사용하기 위한 "getfield_T" 명령어들의 일반적인 포맷은 도 8A에 도시되어 있는데, 도 8B에 도시된 것처럼 자바 클래스 파일 포맷안의 상응하는 "getfield" 명령어의 포맷에 대조적이다. 자바 카드 가상 머신(49)용 명령어(도 8A)들에 있어서, 데이터 타입은 명령어에 인라인 되었을 뿐만 아니라 연산 코드에 직접 인라인되었다. 한편으로, 그러한 특징들은 CAP 파일(16)에 저장된 정보의 양을 감소시킬 수 있으며 또한 특정 명령어에 대해 필요한 오퍼랜드들의 수를 감소시킬 수 있다. 다른 한편으로, 그러한 특징들은 다른 연산 코드들의 수를 확장시킨다.
"iipush" 및 "checkcast" 오피코드들에 관하여 논의된 인라이닝의 타입이 덜 자주 사용되는 경향의 명령어들에 대해서 장점이지만, 명령어들의 "getfield_t" 패밀리에 관하여 논의된 인라이닝의 타입은 더 자주 사용되는 경향의 명령어들에 대해서는 특히 장점이 될 수 있다.
전술한 예들은 어떻게 자바 카드 가상 머신(49)을 위한 명령어 세트가 일정한 정보를 본질적으로 인라인시키는 지를 설명하고 있다. 인라이닝 정보의 다른 형태를 이하 설명되는 것처럼 CAP 파일(16)이 스마트 카드(40)에 다운로드될 때 발생될 수 있다.
스마트 카드(40)상의 설치 툴(46)은 플랫폼-형(platform-specific)일 수 있으며 CAP 파일(16)의 콘텐츠들의 실질적인 저장이 실행을 위해 가상 머신 코드를 수신 및 준비하는 특정 플랫폼을 기반으로 결정되도록 허용한다. 따라서, 몇가지 구현에 있어서, CAP 파일(16)은 그것이 스마트 카드에 의해 수신되었던 방식과는 다른 방식으로 스카드 카드(40), 또는 다른 자원-제약 디바이스상에 저장된다. 예를 들면, 몇몇 경우에 있어서, CAP 파일(16)이 카드(40)상에 설치될 때, 설치 툴(46)은 CAP 파일(16)의 콘텐츠들을 링크시킬 수 있어, 상수 풀(18)의 사이즈가 감소될 수 있으며, 몇가지 경우에 있어서는, 상수 풀이 카드 상에 유지 또는 저장될 필요가 없다. 그것은 도9A 및 9B에 도시된 바와 같이, 인스톨시 상응하는 데이터에 대해 CAP 파일(18)내 코드의 부분으로서 나타나는 상수 풀 인덱스들을 변환시킴으로써 달성될 수 있다. 예를 들면, 상수 풀(16)에 대한 인덱스는 객체의 적절한 필드에 대한 인덱스로 교체될 수 있다. 따라서, 카드(40) 상에 저장된 가상 머신 코드는 실행 시간 이전에 그것내에 채용된 데이터를 미리 가질 것이다. 가상 머신 코드는, 상수 풀(18)이 제거되기 때문에, 상수 풀을 사용하는 프로그램에 고유한소정의 인디렉션(indirection)을 감소시킨다. 따라서, 스마트 카드(40)상에 바이트코드들을 저장하는데 필요한 메모리의 양은 감소될 수 있으며 프로그램에 대한 실행 시간이 또한 감소될 수 있다. 물론, 다른 구현에 있어서, 설치 툴(46)은 CAP 파일(16)이 스마트 카드(40)로 다운로드될 때 상수 풀(18)을 유지할 수 있다.
상기한 바와 같이, 자바 카드 가상 머신을 위한 명령어 세트는 현재 객체상에서 연산들을 실행시키기 위한 복합 명령어들을 또한 포함하고 있다. 즉, 자바 카드 가상 머신(49)에 의해 실행가능한 소정의 명령어들은 다중 명령어들이 단일 명령어로 붕괴(collapsed)되는 것을 허용한다. 특히, "getfield_T_this" 명령어의 패밀리 및 "putfield_T_this" 명령어의 패밀리와 같은 "this" 연산을 포함하는 명령어들은 다중 명령어들을 효과적으로 연결시킨다. 일반적으로, "this" 연산은 현재(current) 객체상에서 연산한다. 예를 들면, 필드를 현재 객체로부터 패치하기 위해서, 도 10A에 도시된 것처럼 "aload_0" 명령어 및 "getfield_a" 명령어의 조합을 사용할 수 있다. 변형적으로, 도 10B에 도시된 것처럼 단일 명령어 "getfield_T_this"를 사용할 수 있다. 후자 명령어의 사용은 보다 작으며 보다 빠른 프로그램 코드를 초래할 수 있다. 상기된 바와 같이, 그러한 특징들은 스마트 카드(40)와 같은 자원-제약 디바이스에서 특히 이롭다.
자바 카드 가상 머신을 위한 명령어 세트는 명백히 16-비트 산술을 또한 처리한다. 어떻게 16-비트 산술이 처리되는지를 도시하기 위해서, "a", "b" 및 "c"가 "short" 타입 변수로서 선언되었고, 식 "c=(short)a + b;"가 컴파일되는 상태를 고려할 수 있다. 자바 클래스 파일 포맷으로 기록된 바이트코드들은 도 11A에 도시되어 있다. 도 11A로부터 알수 있는 것처럼, 값 "a" 및 "b"을 로드하며, 값 "a" 및 "b"를 가산하고, 그 결과로 생성된 정수 타입을 쇼트(short) 타입으로 변환시켜며, 그 결과를 저장시키는데 5개의 오피코드들이 사용된다. 대조적으로, 정수 타입 결과를 쇼트 타입으로 변환시키기 위한 필요성을 제거하는 자바 카드 가상 머신(49)을 위한 명령어 세트를 사용하여 결과를 획득 및 저장하는데는 4개의 오피코드들만이 필요하다. 게다가, 더 적은 바이트코드들을 사용하는 것에 더하여, 스택의 사이즈는 50퍼센트 만큼 감소될 수 있는데, 이는 자바 카드 가상 머신은 32-비트 량보다도 16-비트 량으로 연산하기 때문이다.
따라서, 객체-지향의, 검증가능한 명령어 세트가 제공되고 가상 머신 바이트코드를 지닌 파일이 컴퓨터-판독가능한 매체상에 저장되는 것을 허용한다. 그러한 파일은 자원-제약 디바이스에 다운로드되어, 바이트코드가 자원-제약 디바이스에 의해 실행될 수 있도록 한다.
비록 마이크로프로세서(48)상에서 실행되는 가상 머신이 스마트 카드(40)상에서 바이트코드를 실행하기 위한 하나의 구현으로서 기술되어 있지만, 변형적인 구현에 있어서, 응용 주문형 집적 회로(ASIC), 또는 하드웨어 및 펌웨어의 결합체가 다운로드된 코드를 대신 실행하기 위한 컨트롤러로서 사용될 수 있다.
게다가, 비록 본 발명이 도 4A 및 4B에 나열된 연산 코드들을 사용하여 구현될 수 있지만, 일정한 특성을 갖는 다른 연산 코드들 및 상응하는 명령어 세트들이 또한 본 발명을 구현하는데 적합하다. 그러한 특성들은 검증가능성, 타입 안전성, 포인터 안전성, 객체-지향, 역동적으로 링크된, 가상 머신-기반(virtual machine-based), 플랫폼-독립성, 및 자바 언어와 동일한 의미론의 사용을 포함하지만, 그러한 모든 특성들이 특정 구현에 제공될 필요는 없다.
상기된 바와 같이, 자바 카드 명령어 세트는 여러가지의 다른 자원-제약 장치들과 같이 사용될 수 있으며, 그 일부는 도 12에 나열되어 있다.
다른 구현들은 이하 청구범위들의 범위내에 있다.

Claims (58)

  1. 컴퓨터-판독가능한 매체에 상주하는, 객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을 포함하는 응용 소프트웨어 프로그램에 있어서,
    32비트 이하의 프로세서 아키텍처를 기반으로 하는 자원-제약 장치에 로드되고 상기 장치에 의해 실행될 수 있는 것을 특징으로 하는 응용 소프트웨어 프로그램.
  2. 제1항에 있어서, 16비트 프로세서 아키텍처를 기반으로 하는 자원-제약 장치에 의해 실행될 수 있는 것을 특징으로 하는 소프트웨어 프로그램.
  3. 제1항에 있어서, 8-비트 프로세서 아키텍처를 기반으로 하는 자원-제약 장치에 의해 실행될 수 있는 것을 특징으로 하는 소프트웨어 프로그램.
  4. 제1항에 있어서, 각각의 명령어는 8-비트 연산 코드를 포함하는 것을 특징으로 하는 소프트웨어 프로그램.
  5. 제1항에 있어서, 상기 시퀀스 명령어들은 하드웨어 플랫폼-독립적인 것을 특징으로 하는 소프트웨어 프로그램.
  6. 제1항에 있어서, 상기 명령어들은 적어도 하나의 자바 클래스 파일로부터 변환되고 상수 풀에 대한 적어도 소정의 레퍼런스들은 인라인 데이터로 변환되는 것을 특징으로 하는 소프트웨어 프로그램.
  7. 제6항에 있어서, 상기 명령어들은 연산 코드들 및 오퍼랜드들을 포함하고 상기 상수 풀에 대한 적어도 소정의 레퍼런스들은 적어도 소정의 명령어들내 오퍼랜드들로 인라인되는 것을 특징으로 하는 소프트웨어 프로그램.
  8. 제6항에 있어서, 상기 명령어들은 연산 코드들 및 오퍼랜드들을 포함하고 상기 상수 풀에 대한 적어도 소정의 레퍼런스들은 상기 소정의 명령어들내 연산코드들로 인라인되는 것을 특징으로 하는 소프트웨어 프로그램.
  9. 제1항에 있어서, 상기 명령어들은 상기 자원-제약 장치에 상주하는 마이크로프로세서에서 실행되는 가상 머신에 의해 실행될 수 있는 것을 특징으로 하는 소프트웨어 프로그램.
  10. 제1항에 있어서, 상기 명령어들은 휴대용 스마트 카드로 실행될 수 있는 것을 특징으로 하는 소프트웨어 프로그램.
  11. 제1항에 있어서, 상기 명령어들은 다중 데이터 타입들을 지원하는 장치에 의해 실행될 수 있고, 상기 시퀀스 명령어들은 데이터 조작 명령어들을 포함하며, 각각의 데이터 조작 명령어는 특정 데이터 타입에 특정한 것을 특징으로 하는 소프트웨어 프로그램.
  12. 제11항에 있어서, 각각의 데이터 조작 명령어와 관련된 상기 데이터 타입은 이하 타입들: 8-비트 부호있는 2의 보수 정수 수치 타입, 16-비트 부호있는 2의 보수 정수 수치 타입(16-bit signed two's complement integer numeric type), 및 32-비트 부호있는 2의 보수 정수 수치 타입 중 하나로부터 선택되는 것을 특징으로 하는 소프트웨어 프로그램.
  13. 제11항에 있어서, 상기 명령어들은 다중 레퍼런스 타입들을 지원하는 장치에 의해 실행될 수 있고, 각각의 레퍼런스 타입은 이하 타입들: 클래스 타입, 인터페이스 타입 및 어레이 타입 중 하나로부터 선택되는 것을 특징으로 하는 소프트웨어 프로그램.
  14. 제1항에 있어서, 현재의 객체에서 연산을 수행하기 위해, 적어도 하나의 복합 명령어를 포함하는 것을 특징으로 하는 소프트웨어 프로그램.
  15. 컴퓨터-판독가능한 매체 상에 상주하는, 객체 지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을 포함하는 응용 소프트웨어 프로그램에 있어서,
    64키로바이트 이하의 용량을 갖는 램을 가지는 자원-제약 장치에 로드되고 상기 장치에 의해 실행될 수 있는 것을 특징으로 하는 응용 소프트웨어 프로그램.
  16. 제15항에 있어서, 약 4킬로-바이트 이하의 용량을 갖는 램을 가지는 자원-제약 장치에 의해 실행될 수 있는 것을 특징으로 하는 소프트웨어 프로그램.
  17. 제15항에 있어서, 각각의 명령어는 8-비트 연산코드를 포함하는 것을 특징으로 하는 소프트웨어 프로그램.
  18. 제15항에 있어서, 상기 시퀀스 명령어들은 하드웨어 플랫폼-독립적인 것을 특징으로 하는 소프트웨어 프로그램.
  19. 제15항에 있어서, 상기 명령어들은 적어도 하나의 자바 클래스 파일로부터 변환되고 상수 풀에 대한 적어도 소정의 레퍼런스들은 인라인 데이터로 변환되는 것을 특징으로 하는 소프트웨어 프로그램.
  20. 제19항에 있어서, 상기 명령어들은 연산 코드들 및 오퍼랜드들을 포함하고 상기 상수 풀에 대한 적어도 소정의 레퍼런스들은 상기 소정의 명령어들내 오퍼랜드들로 인라인되는 것을 특징으로 하는 소프트웨어 프로그램.
  21. 제19항에 있어서, 상기 명령어들은 연산 코드들 및 오퍼랜드들을 포함하고 상기 상수 풀에 대한 적어도 소정의 레퍼런스들은 적어도 소정의 상기 명령어들내 연산코드들로 인라인되는 것을 특징으로 하는 소프트웨어 프로그램.
  22. 제15항에 있어서, 상기 명령어들은 상기 자원-제약 장치에 상주하는 마이크로프로세서에서 실행되는 가상 머신에 의해 실행될 수 있는 것을 특징으로 하는 소프트웨어 프로그램.
  23. 제15항에 있어서, 상기 명령어들은 휴대용 스마트 카드로 실행되는 것을 특징으로 하는 소프트웨어 프로그램.
  24. 제15항에 있어서, 상기 명령어들은 다중 데이터 타입들을 지원하는 장치에 의해 실행될 수 있고, 상기 시퀀스 명령어들은 데이터 조작 명령어들을 포함하며, 각각의 데이터 조작 명령어는 특정 데이터 타입에 특정한 것을 특징으로 하는 소프트웨어 프로그램.
  25. 제24항에 있어서, 각각의 데이터 조작 명령어와 관련된 상기 데이터 타입은 이하 타입들: 8비트 부호있는 2의 보수 정수 수치 타입, 16비트 부호있는 2의 보수정수 수치 타입 및 32비트 부호있는 2의 보수 정수 수치 타입 중 하나로부터 선택되는 것을 특징으로 하는 소프트웨어 프로그램.
  26. 제24항에 있어서, 상기 명령어들은 다중 레퍼런스 타입들을 지원하는 장치에 의해 실행될 수 있고, 각각의 레퍼런스 타입은 이하 타입들: 클래스 타입, 인터페이스 타입 및 어레이 타입 중 하나로부터 선택되는 것을 특징으로 하는 소프트웨어 프로그램.
  27. 제15항에 있어서, 현재 객체에서 연산을 수행하기 위해 적어도 하나의 복합 명령어를 포함하는 것을 특징으로 하는 소프트웨어 프로그램.
  28. 자원-제약 장치에 있어서,
    객체지향의, 검증가능한, 타입-안정 및 포인터-안정 시퀀스 명령어들을 포함하는 응용소프트웨어 프로그램을 저장하기 위한 메모리;
    약 64킬로바이트 이하의 용량을 가지는 램; 및
    마이크로프로세서에서 구현되는 가상 머신을 포함하며,
    상기 가상 머신은 상기 시퀀스 명령어들을 실행할 수 있는 것을 특징으로 하는 장치.
  29. 제28항에 있어서, 마이크로프로세서는 8-비트 아키텍처를 기반으로 하는 것을 특징으로 하는 장치.
  30. 제28항에 있어서, 상기 마이크로프로세서는 16-비트 아키텍처를 기반으로 하는 것을 특징으로 하는 장치.
  31. 제28항에 있어서, 각각의 명령어는 8-비트 연산 코드를 포함하는 것을 특징으로 하는 장치.
  32. 제28항에 있어서, 상기 시퀀스 명령어들은 하드웨어 플랫폼-독립적인 것을 특징으로 하는 장치.
  33. 제28항에 있어서, 상기 명령어들은 적어도 하나의 자바 클래스 파일로부터 변환되고, 상수 풀에 대한 적어도 소정의 레퍼런스들은 인라인 데이터로 변환되는 것을 특징으로 하는 장치.
  34. 제33항에 있어서, 상기 명령어들은 연산 코드들 및 오퍼랜드들을 포함하고, 상기 상수 풀에 대한 적어도 소정의 레퍼런스들은 적어도 소정의 상기 명령어들내 오퍼랜드들로 인라인되는 것을 특징으로 하는 장치.
  35. 제33항에 있어서, 상기 명령어들은 연산 코드들 및 오퍼랜드들을 포함하고상기 상수 풀에 대한 적어도 소정의 레퍼런스들은 적어도 소정의 상기 명령어들내 연산 코드로 인라인되는 것을 특징으로 하는 장치.
  36. 제28항에 있어서, 상기 가상 머신은 다중 데이터 타입들을 지원하고, 상기 시퀀스 명령어들은 데이터 조작 명령어들을 포함하며, 각각의 데이터 조작 명령어는 특정 데이터 타입에 대해 특정한 것을 특징으로 하는 장치.
  37. 제28항에 있어서, 현재 객체에서 연산을 수행하기 위해 적어도 하나의 복합 명령어를 포함하는 것을 특징으로 하는 장치.
  38. 자원-제약 장치에 있어서,
    객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을 포함하는 응용 소프트웨어 프로그램을 저장하기 위한 메모리; 및
    32비트 이하의 아키텍처를 기반으로 하는 마이크로프로세서에서 구현되는 가상 머신을 포함하면,
    상기 가상 머신은 상기 시퀀스 명령어들을 실행할 수 있는 것을 특징으로 하는 장치.
  39. 자원-제약 장치에 있어서,
    객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을포함하는 응용 소프트웨어 프로그램을 저장하기 위한 메모리;
    약 64키로바이트 이하의 용량을 가지는 램; 및
    상기 시퀀스 명령어들을 실행할 수 있는 프로세서
    를 포함하는 것을 특징으로 하는 장치.
  40. 제39항에 있어서, 상기 프로세서는 8-비트 아키텍처를 기반으로 하는 것을 특징으로 하는 장치.
  41. 제39항에 있어서, 상기 프로세서는 16-비트 아키텍처를 기반으로 하는 것을 특징으로 하는 장치.
  42. 자원-제약 장치에 있어서,
    객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을 포함하는 응용 소프트웨어 프로그램을 저장하기 위한 메모리;
    약 64키로바이트 이하의 용량을 가지는 램; 및
    상기 시퀀스 명령어들을 실행할 수 있는 응용 주문형 집적회로(ASIC)
    를 포함하는 것을 특징으로 하는 장치.
  43. 제42항에 있어서, 상기 ASIC은 8-비트 아키텍처를 기반으로 하는 것을 특징으로 하는 장치.
  44. 제42항에 있어서, 상기 ASIC은 16-비트 아키텍처를 기반으로 하는 것을 특징으로 하는 장치.
  45. 스마트 카드에 있어서,
    객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을 포함하는 응용 소프트웨어 프로그램을 저장하기 위한 메모리; 및
    마이크로프로세서에서 실현되는 가상 머신을 포함하며,
    상기 가상 머신은 상기 시퀀스 명령어들을 실행할 수 있는 것을 특징으로 하는 스마트 카드.
  46. 제45항에 있어서, 상기 가상 머신은 실질적으로는 자바 카드 가상 머신인 것을 특징으로 하는 스마트 카드.
  47. 제45항에 있어서, 각각의 명령어는 8-비트 연산 코드를 포함하는 것을 특징으로 하는 스마트 카드.
  48. 제45항에 있어서, 상기 시퀀스 명령어들은 하드웨어 플랫폼-독립적인 것을 특징으로 하는 스마트 카드.
  49. 제45항에 있어서, 상기 명령어들은 적어도 하나의 자바 클래스 파일로부터 변환되고 상수 풀에 대한 적어도 소정의 레퍼런스들은 인라인 데이터로 변환되는 것을 특징으로 하는 스마트 카드.
  50. 제45항에 있어서, 상기 명령어들은 연산 코드들 및 오퍼랜드들을 포함하고, 상기 상수 풀에 대한 적어도 소정의 레퍼런스들은 적어도 소정의 상기 명령어들내 오퍼랜드들로 인라인되는 것을 특징으로 하는 스마트 카드.
  51. 제45항에 있어서, 상기 명령어들은 연산 코드들 및 오퍼랜드들을 포함하고, 상기 상수 풀에 대한 적어도 소정의 레퍼런스들은 적어도 소정의 상기 명령어들내 연산 코드들로 인라인되는 것을 특징으로 하는 스마트 카드.
  52. 제45항에 있어서, 상기 가상 머신은 다중 데이터 타입들을 지원하고, 상기 시퀀스 명령어들은 데이터 조작 명령어들을 포함하고, 각각의 데이터 조작 명령어는 특정 데이터 타입에 대해 특정한 것을 특징으로 하는 스마트 카드.
  53. 제45항에 있어서, 상기 프로그램은 현재 객체에서 연산을 수행하기 위해 적어도 하나의 복합 명령어를 포함하는 것을 특징으로 하는 스마트 카드.
  54. 객체지향의, 검증가능한, 타입-세이프 및 포인터-세이프 시퀀스 명령어들을포함하는 응용 소프트웨어 프로그램을 사용하는 방법에 있어서,
    약 64키로바이트 이하의 용량을 갖는 램을 가지는 자원-제약 장치에 상기 소프트웨어 프로그램을 수신하는 단계; 및
    상기 자원-제약 장치에서 상기 시퀀스 명령어들을 실행하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  55. 제54항에 있어서, 상기 자원-제약 장치에 상기 시퀀스 명령어들을 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  56. 제54항에 있어서, 상기 소프트웨어 프로그램을 상기 자원-제약 장치에 다운로드 하기 이전에 컴퓨터 네트워크를 통해 상기 소프트웨어 프로그램에 액세스하는 것을 더 포함하는 것을 특징으로 하는 방법.
  57. 제54항에 있어서, 상기 소프트웨어 프로그램을 상기 자원-제약 장치상에 다운로드하기 전에 인터넷을 통해 상기 소프트웨어 프로그램에 액세스하는 것을 더 포함하는 것을 특징으로 하는 방법.
  58. 제54항에 있어서, 상기 수신된 명령어들의 세트에서 나타나는 상수 풀 인덱스들을 상응하는 데이터 값들로 변환하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020017009757A 1999-02-02 2000-02-02 자원-제약 장치를 위한 객체지향 명령어 세트 KR100713740B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20020002383A true KR20020002383A (ko) 2002-01-09
KR100713740B1 KR100713740B1 (ko) 2007-05-02

Family

ID=22917360

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017009757A KR100713740B1 (ko) 1999-02-02 2000-02-02 자원-제약 장치를 위한 객체지향 명령어 세트

Country Status (9)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100900627B1 (ko) * 2002-02-28 2009-06-02 파나소닉 주식회사 메모리카드

Families Citing this family (36)

* 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
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
US6651186B1 (en) 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, 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
AU2001290842B2 (en) * 2000-09-14 2006-05-11 Sun Microsystems, Inc. Remote incremental program binary compatibility verification 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
US7266731B2 (en) 2001-11-13 2007-09-04 Sun Microsystems, Inc. Method and apparatus for managing remote software code update
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ö
US7827565B2 (en) * 2004-03-12 2010-11-02 Microsoft Corporation Integration architecture for non-integrated tools
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
CN100462890C (zh) * 2005-06-16 2009-02-18 北京航空航天大学 智能卡安全环境的控制方法
WO2007076629A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Type checking for object-oriented programming languages
EP1845444B1 (en) * 2006-04-13 2010-05-19 Microsoft Corporation Virtual execution system for ressource-constrained devices
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
CN101382892B (zh) * 2008-09-24 2012-04-18 飞天诚信科技股份有限公司 下载.Net程序的方法和装置
US8868925B2 (en) * 2008-12-09 2014-10-21 Nvidia Corporation Method and apparatus for the secure processing of confidential content within a virtual machine of a processor
JP5458568B2 (ja) * 2008-12-25 2014-04-02 ソニー株式会社 不揮発性記憶装置、情報記録システム、及び情報記録方法
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
WO2011013120A1 (en) * 2009-07-30 2011-02-03 Rascalim Software Security Ltd. System and method for limiting execution of software to authorized users
CN102063371A (zh) * 2010-12-29 2011-05-18 大唐微电子技术有限公司 验证芯片处理器逻辑设计的方法和系统
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 抖音视界有限公司 字节码文件的处理方法、装置、设备及存储介质
CN113760193B (zh) * 2021-08-26 2024-04-02 武汉天喻信息产业股份有限公司 用于资源受限制装置的数据读写方法、装置及指令集
CN114968282A (zh) * 2022-05-20 2022-08-30 北京握奇智能科技有限公司 一种异常处理执行的优化方法和系统
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
WO1998019237A1 (en) * 1996-10-25 1998-05-07 Schlumberger Systemes Using a high level programming language with a microcontroller
WO1998043212A1 (en) * 1997-03-24 1998-10-01 Visa International Service Association A system and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100900627B1 (ko) * 2002-02-28 2009-06-02 파나소닉 주식회사 메모리카드

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100713740B1 (ko) 자원-제약 장치를 위한 객체지향 명령어 세트
US6880155B2 (en) Token-based linking
US6986132B1 (en) Remote incremental program binary compatibility verification using API definitions
KR100562398B1 (ko) 클라스 파일들을 전처리하고 패키징하는 방법 및 장치
AU772849B2 (en) Zero overhead exception handling
AU775261B2 (en) Language subset validation
US6651186B1 (en) Remote incremental program verification using API definitions
US20030135792A1 (en) Language subset validation
US6981245B1 (en) Populating binary compatible resource-constrained devices with content verified using API definitions
Yellin et al. The java virtual machine specification
US20050138649A1 (en) Populating resource-constrained devices with content verified using API definitions
WO2002023331A2 (en) Remote incremental program binary compatibility verification using api definitions
WO2002091172A2 (en) Identifying references to objects during bytecode verification
Cho et al. An efficient small sized on-card verifier for Java card
EP1417572A2 (en) Remote incremental program binary compatibility verification using api definitions
AU2001290842A1 (en) Remote incremental program binary compatibility verification using API definitions

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130419

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140422

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150416

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 13