KR20070067953A - 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법 - Google Patents

모바일 플랫폼의 중간 언어 변환 장치 및 그 방법 Download PDF

Info

Publication number
KR20070067953A
KR20070067953A KR1020050129519A KR20050129519A KR20070067953A KR 20070067953 A KR20070067953 A KR 20070067953A KR 1020050129519 A KR1020050129519 A KR 1020050129519A KR 20050129519 A KR20050129519 A KR 20050129519A KR 20070067953 A KR20070067953 A KR 20070067953A
Authority
KR
South Korea
Prior art keywords
intermediate language
code
interpreter
mobile platform
communication terminal
Prior art date
Application number
KR1020050129519A
Other languages
English (en)
Other versions
KR100771057B1 (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 주식회사 신지소프트
Priority to KR1020050129519A priority Critical patent/KR100771057B1/ko
Publication of KR20070067953A publication Critical patent/KR20070067953A/ko
Application granted granted Critical
Publication of KR100771057B1 publication Critical patent/KR100771057B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법에 관한 것으로, 특히 본 발명의 장치는 C 또는 C++ 언어로 개발된 모바일 플랫폼 소스 코드를 이동통신 단말기의 인터프리터에서 요구하는 중간 언어 코드로 변환하는 C/C++ 컴파일러와, 중간 언어 코드를 이동통신 단말기의 인터프리터에서 실행되는 포맷으로 변환하는 중간 언어 어셈블러와, 중간 언어의 실행 파일을 저장하는 메모리를 포함한다. 그러므로, 본 발명은 위피(WIPI) 모바일 플랫폼의 C, C++ 소스 코드를 스택 기반의 가상 기계인 중간 언어 인터프리터에서 직접 실행되는 중간 언어(SIL) 코드로 변환하기 때문에 이동통신 단말기에서 중간 언어(SIL) 코드로 변환된 위피(WIPI) 모바일 플랫폼에 대한 아무런 수정이나 재구현 없이 위피(WIPI) 모바일 플랫폼 및 이의 컨텐츠를 실행시킬 수 있다.
이동통신 단말기, 모바일 플랫폼, C 언어

Description

모바일 플랫폼의 중간 언어 변환 장치 및 그 방법{Device and method for transforming WIPI into intermediate language}
도 1은 일반적인 모바일 표준 플랫폼 규격을 나타낸 도면,
도 2는 본 발명에 따른 위피(WIPI) 모바일 플랫폼을 중간 언어로 변환하는 장치를 개략적으로 나타낸 도면,
도 3은 본 발명에 따라 위피(WIPI) 모바일 플랫폼이 변환되는 중간 언어(SIL)의 연산 코드를 분류하는 카테고리를 나타낸 도면,
도 4는 본 발명에 따라 위피(WIPI) 모바일 플랫폼을 변환한 중간 언어(SIL) 연산코드 정의 테이블을 나타낸 도면.
<도면의 주요부분에 대한 부호의 설명>
10 : C 또는 C++ 언어로 개발된 위피(WIPI)
20 : C/C++ 컴파일러
30 : 중간 언어 어셈블러
40 : 로더
50 : 메모리
본 발명은 모바일 플랫폼에 관한 것으로서, 특히 모바일 플랫폼인 위피(WIPI : Wireless Internet Platform for Interoperability)의 하드웨어 및 운영체제 종속성을 제거할 수 있는 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법에 관한 것이다.
일반적으로 위피(WIPI)는 이동통신 단말기에 탑재되어 응용 프로그램(application)을 수행할 수 있는 환경을 제공하는 모바일 표준 플랫폼 규격으로서, 이동통신 단말기용 응용 프로그램 개발자에게 이 기종 단말기 간 컨텐츠 호환성을 보장하고 다양한 컨텐츠를 개발할 수 있는 환경을 제공한다.
도 1은 일반적인 모바일 표준 플랫폼 규격을 나타낸 도면이다. 도 1과 같이, 일반적인 모바일 플랫폼 규격은 이동통신 단말기 핸드세트의 하드웨어와, 단말기의 기본 소프트웨어(OS : Operating System)와, HAL(Handset Adaptation Layer)와, 모바일 표준 플랫폼과, 응용프로그램 개발자를 위한 C 언어와 JAVA 언어를 모두 지원하는 기본 API와, CLDC(Connected Limited Device Configuration)/MIDP(Mobile Information Device Profile)를 지원하는 확장 API, 그리고 응용 프로그램으로 구성되어 있다.
모바일 플랫폼인 위피(WIPI)는 플랫폼의 이식성을 높이기 위하여 HAL을 정의하고 있다. HAL은 단말기의 핸드셋트를 추상화하기 위한 계층으로써 위피(WIPI)를 탑재하기 위한 단말기 제조사들은 HAL 계층을 직접 구현함으로써 위피(WIPI) 모바일 플랫폼을 단말기에 포팅(porting)한다. 예를 들어, 국내 CDMA 단말기의 경우 퀄컴 OS(REX) 위에 HAL 계층을 포팅하면 단말기용 플랫폼이 되고, HAL 계층만을 윈도우즈(windows) 환경에 포팅하면 윈도우즈용 에뮬레이터가 된다.
따라서 모바일 플랫폼은 HAL 계층의 하드웨어 및 운영체제 종속성이 필연적이기 때문에 모바일 플랫폼을 갖는 이동통신 단말기 제조업체에서는 새로운 단말기가 나올 때마다 HAL 계층을 새롭게 수정하거나 이를 구현하는 작업을 반복해야 하는 문제점이 있었다.
본 발명의 목적은 상기와 같은 종래 기술의 문제점을 해결하기 위하여, C 또는 C++ 언어로 개발된 모바일 표준 플랫폼을 HAL 계층의 하드웨어 및 운영체제 종속성을 제거하기 위한 중간 언어로 변환하는 컴파일러를 구비함으로써 모바일 플랫폼의 HAL 계층에 대한 수정 또는 재구현하지 않고서도 이동통신 단말기에서 모바일 플랫폼을 그대로 실행할 수 있는 모바일 플랫폼의 중간 언어 변환 장치를 제공하는데 있다.
본 발명의 다른 목적은, C 또는 C++ 언어로 개발된 모바일 표준 플랫폼을 중간 언어로 변환함으로써 모바일 표준 플랫폼의 HAL 계층에 대한 수정 또는 재구현하지 않고서도 이동통신 단말기에서 모바일 플랫폼을 그대로 실행할 수 있는 모바일 플랫폼의 중간 언어 변환 방법을 제공하는데 있다.
상기 목적을 달성하기 위하여 본 발명은, C 또는 C++ 언어로 개발된 모바일 플랫폼을 변환하는 장치에 있어서, C 또는 C++ 언어로 개발된 모바일 플랫폼 소스 코드를 이동통신 단말기의 인터프리터에서 요구하는 중간 언어 코드로 변환하는 C 또는 C++ 언어 컴파일러와, 중간 언어 코드의 파일을 이동통신 단말기의 인터프리터에서 실행되는 파일로 변환하는 중간 언어 어셈블러와, 중간 언어의 실행 파일을 메모리에 적재하는 로더를 포함한다.
상기 다른 목적을 달성하기 위하여 본 발명은, C 또는 C++ 언어로 개발된 모바일 플랫폼을 변환하는 방법에 있어서, C 또는 C++ 언어로 개발된 모바일 플랫폼 소스 코드를 이동통신 단말기의 인터프리터에서 요구하는 중간 언어 코드로 변환하는 단계와, 중간 언어 코드를 이동통신 단말기의 인터프리터에서 실행되는 포맷으로 변환하는 단계와, 중간 언어의 실행 파일을 메모리에 적재하고 이를 이동통신 단말기의 인터프리터에 제공하는 단계를 포함한다.
이하, 본 발명의 가장 바람직한 실시예를 첨부한 도면을 참조하여 본 발명의 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 더욱 상세히 설명하기로 한다.
도 2는 본 발명에 따른 위피(WIPI) 모바일 플랫폼을 중간 언어로 변환하는 장치를 개략적으로 나타낸 도면이다.
도 2를 참조하면, 본 발명에 따른 모바일 플랫폼을 중간 언어로 변환하는 장 치는, C/C++ 컴파일러(20)와, 중간 언어 어셈블러(30)와, 로더(40)와, 메모리(50) 등을 포함한다.
C/C++ 컴파일러(20)는 C 또는 C++ 언어로 개발된 모바일 플랫폼인 위피(WIPI)(10) 소스 코드를 이동통신 단말기에 탑재된 중간 언어 인터프리터(interpreter)를 통해 실행할 수 있는 중간 언어(SIL : Sinji Intermediate Language) 코드로 변환한다.
여기서, 본 발명의 모바일 플랫폼의 중간 언어(SIL)는 클래스 선언 등 특정 작업의 수행을 나타내는 의사 코드와, 실제 명령어에 대응되는 연산 코드로 이루어져 있어 C 또는 C++ 언어로 작성된 프로그램을 모두 실행할 수 있다. 이때, 이동통신 단말기에 탑재된 중간 언어 인터프리터는 스택 기반의 가상 기계(virtual machine)로써 의사 코드 및 연산 코드를 갖는 중간 언어를 해석하여 모바일 플랫폼 및 이의 컨텐츠를 실행한다. 또한 중간 언어(SIL)는 다수개의 최적화 코드가 정의되어 있어서 모바일 플랫폼 실행 성능을 최적화할 수 있다.
중간 언어 어셈블러(30)는 C/C++ 컴파일러(20)에서 중간 언어(SIL)의 파일 포맷으로 변환된 SAF(SIL Assembly Format) 파일(*.saf)을 중간 언어 인터프리터의 실행 파일(SEF : SIL Executable Format)로 변환한다. 예를 들어, 중간 언어의 파일 포맷은 *.saf로, 그리고 중간 언어 인터프리터의 실행 파일 형태는 *.sef로 나타낸다.
로더(40)는 중간 언어 어셈블러(30)에서 중간 언어 인터프리터의 실행 파일(SEF 파일)을 메모리 로딩 형태(EMF : Executable Memory Format)로 변환하여 메모 리에 적재한다.
메모리(50)는 로더(40)에 의해 적재된 중간 언어 인터프리터의 메모리 로딩 데이터를 저장하였다가 호출된 이동통신 단말기(미도시됨)의 중간 언어 인터프리터에 제공하도록 한다.
이와 같이 구성된 본 발명에 따른 모바일 플랫폼의 중간 언어 변환 장치는 다음과 같이 위피(WIPI) 모바일 플랫폼 소스 코드를 이동통신 단말기에 탑재된 중간 언어 인터프리터에서 실행하는 중간 언어(SIL) 코드로 변환한다.
먼저, C 또는 C++ 언어로 개발된 모바일 플랫폼인 위피(WIPI)(10) 소스 코드는 C/C++ 컴파일러(20)를 통해 스택 기반의 가상 기계인 중간 언어 인터프리터에서 실행되도록 클래스 선언 등 특정 작업의 수행을 나타내는 의사 코드와, 실제 명령어에 대응되는 연산 코드를 포함하는 중간 언어(SIL) 파일 포맷의 SAF 파일(*.saf)로 변환된다.
그리고 C/C++ 컴파일러(20)의 중간 언어(SIL) 파일 포맷의 SAF 파일(*.saf)은 중간 언어 어셈블러(30)를 통해 중간 언어 인터프리터의 실행 파일 포맷의 SEF 파일(*.sef)로 변환된다.
그 다음 중간 언어 어셈블러(30)의 중간 언어 인터프리터의 실행 파일 포맷의 SEF 파일(*.sef)은 로더(40)를 통해 메모리 로딩 형식인 EMF 형태로 변환되어 메모리(50)에 적재된다.
이후, 이동통신 단말기의 중간 언어 인터프리터에서는 메모리에 적재된 EMF 로부터 코드 데이터를 읽어 와서 이를 바로 스택 기반의 가상 기계에서 실행한다.
보다 상세하게, 본 발명에 따라 위피(WIPI) 모바일 플랫폼이 변경된 중간 언어(SIL)의 의사 코드와 연산 코드에 대한 추가 설명은 다음과 같이 예를 들어 설명한다.
위피(WIPI) 모바일 플랫폼이 변환되는 중간 언어(SIL)는 표 1과 같이 모두 14개의 기본 자료형을 지원한다.
symbol type description
c char 1byte signed integer
uc unsigned char 1byte unsigned integer
s short 2byte signed integer
us unsigned short 2byte unsigned integer
i int 4byte signed integer
ui unsigned int 4byte unsigned integer
l long 8byte signed integer
ul unsigned long 8byte unsigned integer
p pointer 4byte unsigned integer
f float 4byte floating point data
d double 8byte floating point data
v void -
t struct User defined type
n union User defined type
중간 언어(SIL)는 사용자 정의 타입(User defined type)을 표현하기 위한 두 개의 심볼(예를 들어, t, n)과 미 정의 형(void type)을 표현하기 위한 한 개 심볼(예를 들어, v)을 포함한다. 그리고 부동 소수점 데이터(floating point data) 타입을 표현하기 위한 두 개의 심볼(예를 들어, f, d)과 메모리의 주소 값을 표현하기 위한 한 개 심볼(예를 들어, p)을 포함한다. 또한 1바이트, 2바이트, 4바이트, 8바이트 등의 부호/부호없는 정수(signed integer/unsigned integer) 타입을 표현하기 위한 총 여덟 개의 심볼(예를 들어, c, uc, s, us, i, ui, l, ul)을 포함한다.
그리고, 중간 언어(SIL)를 구성하는 의사 코드는 다음 표 2와 같다.
지시자 의미
.literal 리터럴 상수 선언
.sym 내부 변수 선언
.symx 외부 변수 선언
.struct 구조체 선언
.func 함수 선언
.class 생성되는 클래스 이름과 접근 수정자를 정의
.field 클래스의 필드를 선언
.method 클래스의 메소드를 선언
.maxstack 해당 메소드(함수)의 operand stack size
.throws 해당 메소드에서 발생하는 예외를 선언
.catch 해당 메소드에서 예외 검사를 위한 구역을 설정
.end class, method 등 블록의 끝을 표시
위와 같이 중간 언어(SIL)의 의사 코드는 심볼 선언, 클래스 선언 등 특정 작업의 수행을 의미하며 총 12개의 지시자를 정의하고 있다.
중간 언어(SIL) 의사 코드의 각 지시자는 ‘.’으로 시작하고, 하나의 지시자는 한 줄만을 정의한다. 예외적으로 .end 지시자는 .class, .method 지시자와 함께 사용하여 여러 줄을 정의하게 된다. 이때 중간 언어(SIL)의 의사 코드에 대한 주석은 ‘//’으로 시작하여 해당 행의 끝까지를 주석으로 처리한다.
본 발명의 중간 언어(SIL)를 구성하는 연산 코드는 중간 언어 인터프리터 명령어에 대응되는 코드로써 연산의 종류에 따라 도 3과 같이 6개의 기본 카테고리와 1개의 최적화 카테고리로 분류된다.
중간 언어(SIL)의 연산 코드는 연산 기호(mnemonic)로 정의되며 이는 SAF(SIL Assembly Format) 파일에서 각 코드를 표시하는 기호이다. 중간 언어(SIL)의 열거형(enumeration) 표현인 opcode는 하나의 코드를 2바이트(2byte)로 나타내며 이 값은 중간 언어(SIL) 인터프리터 구현에 따라 가변적이다. 이때, 중간 언어(SIL)의 연산 코드는 필요에 따라 명령어 인자(instruction parameter)를 포함할 수 있다.
중간 언어(SIL) 연산 코드의 연산 기호는 코드의 가독성을 위해 오퍼레이션(operation)을 의미하는 알파벳과 정수의 조합으로 정의하고, 연산 코드의 종류에 따라 타입 정보가 필요한 경우 '.’(dot) 기호를 사용하여 타입 심볼(표 1 참조)을 패딩한다.
그리고, 중간 언어(SIL) 연산 코드는 기본적으로 스택기반 코드로써 연산에 사용하는 피연산자를 오퍼랜드 스택(operand stack)에서 가져오며 연산의 결과를 오퍼랜드 스택에 저장한다. 이때 중간 언어(SIL) 연산 코드 중에서 최적화 카테고리의 연산 코드 등 일부 코드의 경우에는 스택을 사용하지 않고 직접 데이터가 저장된 메모리에 접근하여 연산을 수행한다.
보다 상세하게, 중간 언어(SIL) 연산 코드는 다음과 같이 6개의 기본 카테고리와 1개의 최적화 카테고리 구성을 갖는다.
첫째, 스택 오퍼레이션(stack operations) 카테고리(100)는 기본적인 스택 제어 연산 코드와 저장장소에 따른 push/load 및 pop/store 연산 코드를 포함한다. 둘째, 산술 오퍼레이션(arithmetic operations) 카테고리(110)는 수학적 연산과 비교연산, 비트연산, 그리고 논리연산에 관련된 연산 코드를 포함한다. 셋째, 흐름 제어 오퍼레이션(flow control operations) 카테고리(120)는 분기(branch)와 메소드 호출에 관한 연산 코드를 포함한다. 넷째, 타입 변환 오퍼레이션(type conversion operations) 카테고리(130)는 스택 탑(top)에 있는 데이터의 타입을 변환하는 연산 코드를 포함한다. 다섯째, 객체 오퍼레이션(object operations) 카테고리(140)는 객체 생성과 필드에 관련된 연산 코드를 포함한다. 여섯째, 그 외 연산코드는 Misc. operations 카테고리(150) 안에 포함된다. 마지막의 최적화 오퍼레이션(optimization operations) 카테고리(160)는 최적화 코드 카테고리로써 여러 개의 기본 코드로 이루어진 일련의 연산을 하나로 최적화한 코드들이 여기에 포함된다.
다음은 도 4에 도시된 중간 언어(SIL) 연산 코드를 정의하는 테이블 형식에 대한 기본 사항들에 대해 설명한다.
도 4에 도시된 바와 같이, 위피(WIPI) 모바일 플랫폼이 변환되는 중간 언어(SIL) 연산 코드에 대한 정의 테이블은 연산 기호(Mnemonic)(200)와, 파라메터(210)와, 오퍼랜드 스택(220)과, 연산코드의 길이(Len)(230) 등을 포함한다. 미 설명된 Description은 각 연산 코드가 수행하는 일을 설명한다.
여기서, 중간 언어(SIL) 연산 코드 정의 테이블의 연산 기호(200)는 연산 코드의 가독성을 위해 연산코드를 각 연산코드의 기능을 나타내는 심볼 형태로 정의한 것으로, SAF(SIL Assembly Format) 파일에서 사용된다.
상기 연산 코드 정의 테이블의 파라메터(210)는 연산 코드의 명령어 인자(instruction parameter)의 목록으로서, 인자 개수의 제한은 없다. 이러한 중간 언어(SIL) 연산 코드의 파라메터(210)는 다음 표 3과 같은 심볼 형태를 사용하여 해당 인자의 타입으로 표현한다.
중간 언어(SIL) 연산 코드 테이블의 오퍼랜드 스택(220)은 pop, push, sp 등으로 구성된다. pop은 중간 언어(SIL) 인터프리터에서 연산코드를 실행할 경우 오퍼랜드 스택에서 팝(pop)하는 값의 목록이다. 목록의 순서는 실제로 이동통신 단말기에 탑재된 중간 언어 인터프리터에서 팝 연산을 하는 순서와 동일하고, 다음 표 3과 같은 심볼 형태를 사용하여 표현한다. 그리고 push는 연산코드 실행 시 연산의 결과 값으로 오퍼랜드 스택에 푸쉬(push)는 값의 목록이다. 목록의 순서는 실제 중간 언어 인터프리터에서 푸쉬 연산을 하는 순서와 동일하고, 다음 표 3과 같은 심볼 형태를 사용하여 표현한다. 또 sp는 중간 언어(SIL) 인터프리터에서 연산코드를 수행한 후에 오퍼랜드 스택의 스택 포인터 변화를 나타낸다. 이때, 정수로 가감을 표시한다.
중간 언어(SIL) 연산 코드의 길이(230)는 명령어 인자를 포함한 연산코드의 총 길이를 나타내고, 바이트 단위의 정수형 값을 갖는다.
symbol description
c Character
uc Unsigned character
s Short
us Unsigned short
i Integer
ui Unsigned integer
l Long
ul Unsigned long
p Pointer
f Float
d Double
* Unspecified type or data
r Object reference
B Symbol base, 0:Global, 1:Local
O Offset from base: 4byte unsigned int
x Array Index: unsigned short
<Label> 프로그램 컨트롤을 이동할 위치의 레이블. SAF에서는 레이블 이름이 그대로 나오며, 어셈블러 출력인 SEF에서는 Code section의 시작점에서 Label까지의 byte 단위 offset으로 변환된다. Size: 4byte unsigned int
<Lib> -
<Class> -
<Field> -
<Method> -
다음 표 4는 중간 언어(SIL) 연산 코드 테이블에서 사용되는 스택 데이터에 대한 심볼을 나타낸 것이다.
symbol description
v0 Value of stack[top]
v1 Value of stack[top-1]
v2 Value of stack[top-2]
v3 Value of stack[top-3]
본 발명에 따른 위피(WIPI) 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법은 C 또는 C++ 언어로 작성된 위피(WIPI) 모바일 플랫폼의 소스 코드를 스택 기반의 가상 기계인 중간 언어 인터프리터에서 직접 실행되는 중간 언어(SIL) 코드로 변환한다. 이에 따라 중간 언어 인터프리터가 탑재된 이동통신 단말기에서는 위피(WIPI) 모바일 플랫폼의 HAL계층을 중간 언어 인터프리터(즉, 가상 기계)에 한번만 포팅하면 위피(WIPI) 소스 코드에 대한 아무런 수정이나 재 구현 없이도 모바일 플랫폼(WIPI) 및 이의 컨텐츠를 그대로 실행시킬 수 있다.
이상 설명한 바와 같이, 본 발명은 위피(WIPI) 모바일 플랫폼의 C, C++ 소스 코드를 스택 기반의 가상 기계인 중간 언어 인터프리터에서 직접 실행되는 중간 언어(SIL) 코드로 변환하여 이동통신 단말기에 제공하기 때문에 중간 언어(SIL)로 변환된 위피(WIPI)에 의해 HAL 계층을 하드웨어 및 운영체제와 완벽하게 분리할 수 있어 위피(WIPI) 모바일 플랫폼에 대한 아무런 수정이나 재구현없이 위피(WIPI) 모바일 플랫폼 및 이의 컨텐츠를 실행시킬 수 있다.
그러므로, 본 발명은 새로운 이동통신 단말기가 출시되거나 전혀 다른 종류의 임베디드 시스템이라고 해도 중간 언어(SIL) 인터프리터만 이동통신 단말기에 탑재되어 있으면 위피(WIPI) 모바일 플랫폼 및 이의 컨텐츠를 수정없이 그대로 실행시킬 수 있다.
한편, 본 발명은 상술한 실시 예에 국한되는 것이 아니라 후술되는 청구범위에 기재된 본 발명의 기술적 사상과 범주내에서 당업자에 의해 여러 가지 변형이 가능하다.

Claims (13)

  1. C 또는 C++ 언어로 개발된 모바일 플랫폼을 변환하는 장치에 있어서,
    상기 C 또는 C++ 언어로 개발된 모바일 플랫폼 소스 코드를 이동통신 단말기의 인터프리터에서 요구하는 중간 언어 코드로 변환하는 C/C++ 컴파일러;
    상기 중간 언어 코드의 파일을 상기 이동통신 단말기의 인터프리터에서 실행되는 파일로 변환하는 중간 언어 어셈블러; 및
    상기 중간 언어의 실행 파일을 저장하는 메모리를 포함하여 이루어진 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 장치.
  2. 제 1항에 있어서,
    상기 장치는,
    상기 중간 언어의 실행 파일을 상기 메모리에 저장하기 위한 형태로 변환하는 로더를 더 포함하는 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 장치.
  3. 제 1항 및 제 2항 중 어느 한 항에 있어서,
    상기 중간 언어는 상기 이동통신 단말기의 인터프리터에서 실행되도록 특정 작업의 수행을 나타내는 의사 코드와, 명령어에 대응되는 연산 코드를 포함하는 것 을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 장치.
  4. 제 3항에 있어서,
    상기 인터프리터는 상기 의사 코드 및 상기 연산 코드를 갖는 중간 언어를 해독하여 실행하는 상기 이동통신 단말기의 모바일 플랫폼의 가상 기계인 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 장치.
  5. 제 3항에 있어서,
    상기 연산 코드는 스택 오퍼레이션, 산술 오퍼레이션, 흐름 제어 오퍼레이션, 타입 변환 오퍼레이션, 객체 오퍼레이션, 또는 그 외 오퍼레이션 카테고리로 분류되는 기본 연산 코드인 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 장치.
  6. 제 3항에 있어서,
    상기 연산 코드는 스택 오퍼레이션, 산술 오퍼레이션, 흐름 제어 오퍼레이션, 타입 변환 오퍼레이션, 객체 오퍼레이션, 또는 그 외 오퍼레이션 카테고리로 분류되는 기본 연산 코드들로 이루어진 일련의 연산을 하나의 코드로 최적화한 최 적화 연산 코드인 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 장치.
  7. 제 3항에 있어서,
    상기 연산 코드는 연산 기호와, 파라메터와, 오퍼랜드 스택과, 연산코드의 길이 값을 포함하는 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 장치.
  8. C 또는 C++ 언어로 개발된 모바일 플랫폼을 변환하는 방법에 있어서,
    상기 C 또는 C++ 언어로 개발된 모바일 플랫폼 소스 코드를 이동통신 단말기의 인터프리터에서 요구하는 중간 언어 코드로 변환하는 단계;
    상기 중간 언어 코드의 파일을 상기 이동통신 단말기의 인터프리터에서 실행되는 파일로 변환하는 단계; 및
    상기 중간 언어의 실행 파일을 저장하고 이를 상기 이동통신 단말기의 인터프리터에 제공하는 단계를 포함하여 이루어진 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 방법.
  9. 제 8항에 있어서,
    상기 중간 언어는 상기 이동통신 단말기의 인터프리터에서 실행되도록 특정 작업의 수행을 나타내는 의사 코드와, 명령어에 대응되는 연산 코드를 포함하는 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 방법.
  10. 제 9항에 있어서,
    상기 방법은,
    상기 이동통신 단말기의 인터프리터에서 상기 의사 코드 및 상기 연산 코드를 갖는 중간 언어를 해독하여 상기 모바일 플랫폼 및 이의 컨텐츠를 실행하는 단계를 더 포함하는 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 방법.
  11. 제 9항 및 제 10항 중 어느 한 항에 있어서,
    상기 연산 코드는 스택 오퍼레이션, 산술 오퍼레이션, 흐름 제어 오퍼레이션, 타입 변환 오퍼레이션, 객체 오퍼레이션, 또는 그 외 오퍼레이션 카테고리로 분류되는 기본 연산 코드인 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 방법.
  12. 제 9항 및 제 10항 중 어느 한 항에 있어서,
    상기 연산 코드는 스택 오퍼레이션, 산술 오퍼레이션, 흐름 제어 오퍼레이 션, 타입 변환 오퍼레이션, 객체 오퍼레이션, 또는 그 외 오퍼레이션 카테고리로 분류되는 기본 연산 코드들로 이루어진 일련의 연산을 하나의 코드로 최적화한 최적화 연산 코드인 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 방법.
  13. 제 9항 및 제 10항 중 어느 한 항에 있어서,
    상기 연산 코드는 연산 기호와, 파라메터와, 오퍼랜드 스택과, 연산코드의 길이 값을 포함하는 것을 특징으로 하는 모바일 플랫폼의 중간 언어 변환 방법.
KR1020050129519A 2005-12-26 2005-12-26 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법 KR100771057B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050129519A KR100771057B1 (ko) 2005-12-26 2005-12-26 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050129519A KR100771057B1 (ko) 2005-12-26 2005-12-26 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20070067953A true KR20070067953A (ko) 2007-06-29
KR100771057B1 KR100771057B1 (ko) 2007-10-29

Family

ID=38366463

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050129519A KR100771057B1 (ko) 2005-12-26 2005-12-26 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR100771057B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150063800A (ko) * 2013-12-02 2015-06-10 한국과학기술연구원 자바 스크립트가 포함된 html 문서를 이용한 애플리케이션 배포 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체
US10255443B2 (en) 2016-02-11 2019-04-09 Line Corporation Method, apparatus, system and non-transitory computer readable medium for code protection
US10379886B2 (en) 2016-02-18 2019-08-13 Line Corporation Method and system for enhancing loading speed of intermediate language file
US10740443B2 (en) 2015-08-10 2020-08-11 Line Corporation System and method for code obfuscation of application

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101254756B1 (ko) 2011-07-26 2013-04-15 김재식 복수의 운영체제와 호환 가능한 가상머신 생성 방법 및 가상머신 프로그램을 저장한 기록매체

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2943590B2 (ja) * 1993-12-27 1999-08-30 日本電気株式会社 インタプリタ型シミュレーション方法
ATE476702T1 (de) * 2001-05-11 2010-08-15 Computer Ass Think Inc Methode und system zur umwandlung von legacy- software-anwendungen in moderne, objektorientierte systeme
KR20030063559A (ko) * 2002-01-22 2003-07-31 주식회사 엠넷소프트 엑스엠엘을 기반으로 한 데이터 변환 방법
US7380242B2 (en) 2003-05-14 2008-05-27 Mainsoft Israel Ltd. Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
US7120898B2 (en) * 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
KR20050007901A (ko) * 2003-07-12 2005-01-21 주식회사 지어소프트 무선인터넷플랫폼이 탑재된 이동통신단말기에서실행가능한 바이너리코드를 생성하는 방법 및 시스템

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150063800A (ko) * 2013-12-02 2015-06-10 한국과학기술연구원 자바 스크립트가 포함된 html 문서를 이용한 애플리케이션 배포 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체
US10740443B2 (en) 2015-08-10 2020-08-11 Line Corporation System and method for code obfuscation of application
US10255443B2 (en) 2016-02-11 2019-04-09 Line Corporation Method, apparatus, system and non-transitory computer readable medium for code protection
US10379886B2 (en) 2016-02-18 2019-08-13 Line Corporation Method and system for enhancing loading speed of intermediate language file

Also Published As

Publication number Publication date
KR100771057B1 (ko) 2007-10-29

Similar Documents

Publication Publication Date Title
US7380242B2 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
CN108139896B (zh) 扩展虚拟机指令集体系架构
US5923878A (en) System, method and apparatus of directly executing an architecture-independent binary program
AU764398B2 (en) Object-oriented instruction set for resource-constrained devices
KR100643268B1 (ko) 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
US20070271553A1 (en) Method and system for translating assembler code to a target language
KR100763177B1 (ko) 자바 가상 머신의 명령어 수행 방법 및 그 장치
US8281287B2 (en) Compact, portable, and efficient representation of a user interface control tree
US8042103B2 (en) Pre-translated files used in a virtual machine
KR100771057B1 (ko) 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법
JP2007304840A (ja) コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム
JP2005537533A (ja) ソフトウエアのアトム化
US20170329619A1 (en) Multi-byte compressed string representation
US6948156B2 (en) Type checking in java computing environments
EP0950947B1 (en) Static binding of dynamically dispatched calls in the presence of dynamic linking and loading
JP2004272922A (ja) エミュレーションコンピュータ技術を実行する直接命令
US7207036B2 (en) Preprocessing of interfaces to allow fast call through
Blagodarov et al. Tool demo: Raincode assembler compiler
JP2003202994A (ja) Javaコンパイラ、及び、当該Javaコンパイラが使用するコンパイル情報の生成装置
US20030005020A1 (en) Initialization of Java classes in Java virtual machine environments
US7181724B2 (en) Representation of Java® data types in virtual machines
Engelke et al. Using LLVM for optimized lightweight binary re-writing at runtime
US6961933B2 (en) Representation of Java data types in virtual machines
KR20040044655A (ko) 자바 가상머신에서 루프 문 처리를 위해 바이트코드를생성 및 수행하는 방법
Kågström et al. Cibyl: an environment for language diversity on mobile devices

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
LAPS Lapse due to unpaid annual fee