KR100345401B1 - 바이너리 프로그램 변환 장치 및 그 방법 - Google Patents

바이너리 프로그램 변환 장치 및 그 방법 Download PDF

Info

Publication number
KR100345401B1
KR100345401B1 KR1019990045261A KR19990045261A KR100345401B1 KR 100345401 B1 KR100345401 B1 KR 100345401B1 KR 1019990045261 A KR1019990045261 A KR 1019990045261A KR 19990045261 A KR19990045261 A KR 19990045261A KR 100345401 B1 KR100345401 B1 KR 100345401B1
Authority
KR
South Korea
Prior art keywords
platform
binary
code
binary program
existing
Prior art date
Application number
KR1019990045261A
Other languages
English (en)
Other versions
KR20010037625A (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 KR1019990045261A priority Critical patent/KR100345401B1/ko
Publication of KR20010037625A publication Critical patent/KR20010037625A/ko
Application granted granted Critical
Publication of KR100345401B1 publication Critical patent/KR100345401B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

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

Abstract

본 발명은 기존 플랫폼(Platform)에서 실행하던 바이너리 프로그램을 새로운 프로세서와 운영 체제로 구성한 목표 플랫폼에서 실행할 수 있도록 하는 바이너리 프로그램(Binary Program) 변환 장치 및 그 방법을 제공하는데 그 목적이 있다.
본 발명에 따르면, 기존 플랫폼(Platform)에서 작동할 수 있는 바이너리 프로그램(Binary Program)을 입력받아 중간 코드를 생성하는 전반부, 상기 전반부에서 생성한 중간 코드를 입력받아 최적화된 중간 코드를 생성하는 중간부 및 상기 중간부에서 생성한 최적화된 중간 코드를 입력받아 목표 플랫폼에서 작동할 수 있는 바이너리 프로그램을 생성하는 후반부를 포함하는 바이너리 프로그램 변환 장치에 있어서, 상기 중간부는, 기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램으로부터 변환된 중간 코드를 상기 전반부로부터 입력받아 목표 플랫폼에 최적인 전략을 선택하는 전략 결정 수단과; 상기 전략 결정 수단에 의하여 선택된 전략에 따라 목표 프로세서 명세와 중간 코드를 기반으로 최적화된 중간 코드를 생성하는 전략 실행 수단을 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 장치가 제공된다.

Description

바이너리 프로그램 변환 장치 및 그 방법 {Method and apparatus for binary program translation}
본 발명은 기존 플랫폼(Platform)에서 실행하던 바이너리 프로그램(BinaryProgram)을 새로운 프로세서와 운영 체제로 구성한 목표 플랫폼에서 실행할 수 있는 바이너리 프로그램으로 변환하는 장치 및 그 방법에 관한 것이며, 특히, 목표 플랫폼이 기존 플랫폼과는 다른 설계상의 구조를 가질 때에도 용이하게 기존 바이너리 프로그램을 목표 플랫폼 위에서 실행할 수 있도록 변환하는 장치 및 그 방법에 관한 것이다.
종래의 바이너리 프로그램 변환 방법은 동일한 플랫폼 위에서 바이너리 프로그램 파일의 서식만 다른 형태로 변환하는데 국한되어 있어서, 프로세서나 운영 체제가 다른 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 생성할 수 없었다. 이를 생성하려면 목표 플랫폼에 맞는 컴파일러(Compiler)를 개발하고, 이를 이용하여 실행할 수 있는 바이너리 프로그램을 생성하는 방법을 사용하여 왔다.
이에는 다음과 같은 네 가지 방법이 있다.
첫 번째 방법은 목표 플랫폼에 맞는 컴파일러를 개발해서 기존의 소스 프로그램(Source Program)을 다시 컴파일하는 것이다. 이러한 방식은 많은 초기 비용이 들고 소요 기간이 길다는 문제점이 있다. 더욱 큰 문제점은 기존의 바이너리 프로그램의 소스가 없는 경우, 이를 처음부터 다시 개발하여야 하는 노력이 추가된다. 이러한 경우, 목표 플랫폼의 사용자를 확보하는 것은 어려워진다.
두 번째 방법은 목표 플랫폼에 기존 프로세서의 명령어 셋을 흉내내는 마이크로 코드(Micro Code)를 내장하는 것이다. 이러한 방법은 별도의 장치를 고안하여야 하므로 비용이 많이 들고, 새로운 프로세서의 설계에도 나쁜 영향을 줄 수 있어 실제로는 잘 사용되지 않고 있다.
세 번째 방법은 목표 플랫폼 위에서 기존 플랫폼을 흉내내는 소프트웨어를 개발하는 방법이다. 이러한 방법은 비용이 적게 들고 빠르게 구현할 수 있어서 자주 사용된다. 그러나, 이 방법은 첫 번째 방법에 비하여 실행 속도가 작게는 5배 크게는 100배 정도 저하되는 경우가 많아 사용자의 고통을 수반하게 된다.
네 번째 방법은 기존의 바이너리 프로그램을 목표 플랫폼에서 실행할 수 있는 형태로 바로 변환하는 방법이다. 이 방법은 첫 번째 방법보다 적은 비용으로 빠르게 개발할 수 있으면서, 소스 프로그램이 없는 경우에도, 아무 문제없이 바이너리 프로그램을 생성할 수 있다는 장점을 지닌다.
한편 위의 네 번째 방법에 의한 바이너리 프로그램 변환 장치는 다음과 같은 작용을 하는 구성 요소를 가진다. 첫째는 기존의 바이너리 프로그램을 읽어들여서 컴퓨터의 메모리에 저장하는 로더(Loader) 부분이다. 둘째는 메모리에 저장한 바이너리 프로그램을 분석하여 어셈블러(Assembler)로 변환하고 다시 이를 중간 코드로 변환하는 디스어셈블러(Disassembler)이다. 셋째는 디스 어셈블러가 출력하는 중간 코드를 분석하여 관용어 대체 및 제어 흐름 그래프를 생성하는 부분이다. 넷째는 제어 흐름 그래프와 중간 코드를 읽어들여서 새로운 플랫폼에 적합한 최적화 작업을 수행하는 최적화기이다. 다섯째는 최적화한 중간 코드를 받아들여 새로운 프로세서에 맞는 어셈블리어(Assembly Language)를 생성하거나 바이너리 코드를 직접 생성하는 코드 생성기이다.
그러나 상기 분야의 종래 기술은 새로운 플랫폼이 개발될 때마다 바이너리 프로그램 변환기를 새로 개발하여야 하고, 다양한 플랫폼이 일시에 개발되는 경우,제대로 대처하기 어렵다는 문제점이 있다.
본 발명은 상기와 같은 종래기술의 문제점을 해결하기 위하여 안출된 것으로서, 프로세서의 계열에 따라 전략을 달리할 수 있는 전략 결정 유닛과 결정된 전략에 따라 중간 코드를 최적화하는 전략 실행 유닛을 고안하여 사용자가 상황에 따라 최적의 결과를 바로 얻을 수 있는 바이너리 프로그램 변환 장치 및 그 운용 방법을 제공하는데 그 목적이 있다.
도 1은 본 발명에 적용되는 바이너리 프로그램 변환 장치의 구성도이고,
도 2는 도 1에 도시된 바이너리 프로그램 변환 장치의 전반부의 상세 구성도이고,
도 3은 도 1에 도시된 바이너리 프로그램 변환 장치의 중간부의 상세 구성도이고,
도 4는 도 3에 도시된 상기 전략 결정 유닛 및 상기 전략 실행 유닛의 작동 흐름을 도시한 흐름도이고,
도 5는 도 1에 도시된 바이너리 프로그램 변환 장치의 후반부의 상세 구성도이다.
앞서 설명한 바와 같은 목적을 달성하기 위한 본 발명에 따르면, 기존 플랫폼(Platform)에서 작동할 수 있는 바이너리 프로그램(Binary Program)을 입력받아 중간 코드를 생성하는 전반부, 상기 전반부에서 생성한 중간 코드를 입력받아 최적화된 중간 코드를 생성하는 중간부 및 상기 중간부에서 생성한 최적화된 중간 코드를 입력받아 목표 플랫폼에서 작동할 수 있는 바이너리 프로그램을 생성하는 후반부를 포함하는 바이너리 프로그램 변환 장치에 있어서, 상기 중간부는, 기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램으로부터 변환된 중간 코드를 상기 전반부로부터 입력받아 목표 플랫폼에 최적인 전략을 선택하는 전략 결정 수단과; 상기 전략 결정 수단에 의하여 선택된 전략에 따라 목표 프로세서 명세와 중간 코드를 기반으로 최적화된 중간 코드를 생성하는 전략 실행 수단을 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 장치가 제공된다.
보다 더 상세하게는, 상기 전반부는, 기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 읽어들여, 기존 플랫폼의 바이너리 파일 서식을 참조하여 텍스트 섹션(Text Section)과 데이터 섹션(Data Section)으로 분리하고, 기존 플랫폼의 명령어 셋으로 변환할 수 있도록 정보를 조사하는 바이너리 파일 분석기와; 상기 바이너리 파일 분석기가 조사한 정보와 기존 프로세서 명세를 바탕으로 읽어 들인 바이너리 프로그램을 기존 플랫폼의 어셈블리어(Assembly Language) 코드로 변환하는 디스어셈블러(Disassembler)와; 상기 디스어셈블러로부터 생성한 기존 플랫폼의 어셈블리어 코드로부터 관용어 표현을 탐색하여 대체하는 관용어 분석기와; 상기 관용어 분석기에서 대체한 관용어를 참조하여, 상기 디스어셈블러에서 변환된 어셈블리어 코드로부터 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드를 생성하는 제어 흐름 그래프 생성기를 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 장치가 제공된다.
보다 더 상세하게는, 상기 후반부는, 목표 프로세서 명세를 참조하여, 상기 전략 결정 수단에 의하여 생성된 최적화된 중간 코드를 입력받아 어셈블리어 코드로 변환하는 어셈블러와; 목표 플랫폼의 바이너리 파일 서식을 참조하여, 상기 어셈블러에 의하여 변환된 어셈블리어 코드로부터 목표 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 생성하는 바이너리 코드 생성기를 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 장치가 제공된다.
또한, 기존 플랫폼(Platform)에서 실행할 수 있는 바이너리 프로그램(BinaryProgram)을 새로운 프로세서와 운영 체제로 구성한 목표 플랫폼에서 실행할 수 있도록 하는 바이너리 프로그램 변환 방법에 있어서, 기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램으로부터 변환된 중간 코드를 읽어들여 목표 플랫폼에 최적인 전략을 선택하는 제 1 단계와; 상기 제 1 단계에서 선택된 전략에 따라 목표 프로세서 명세와 중간 코드를 기반으로 최적화된 중간 코드를 생성하는 제 2 단계를 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 방법이 제공된다.
또한, 컴퓨터에, 기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 읽어들여, 기존 플랫폼의 바이너리 파일 서식을 참조하여 텍스트 섹션(Text Section)과 데이터 섹션(Data Section)으로 분리하고, 기존 플랫폼의 명령어 셋으로 변환할 수 있도록 정보를 조사하는 제 1 단계와; 상기 제 1 단계에서 조사한 정보와 기존 프로세서 명세를 참조하여, 입력된 바이너리 프로그램을 기존 플랫폼의 어셈블리어(Assembly Language) 코드로 변환하는 제 2 단계와; 상기 제 2 단계에서 변환된 기존 플랫폼의 어셈블리어 코드로부터 관용어 표현을 탐색하여 대체하는 제 3 단계와; 상기 제 3 단계에서 대체한 관용어를 참조하여, 상기 제 2 단계에서 변환된 어셈블리어 코드로부터 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드를 생성하는 제 4 단계와; 상기 제 4 단계에서 생성된 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드를 읽어들여 목표 플랫폼에 최적인 전략을 선택하는 제 5 단계와; 상기 제 5 단계에서 선택된 전략에 따라 목표 프로세서 명세와 중간 코드를 기반으로 최적화된 중간 코드를 생성하는 제 6 단계와; 목표 프로세서 명세를 참조하여, 상기 제 6 단계에서 생성된 최적화된 중간 코드로부터 어셈블리어 코드를 생성하는 제 7 단계와; 목표 플랫폼의 바이너리 파일 서식을 참조하여, 상기 제 7 단계에서 생성된 어셈블리어 코드로부터 목표 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 생성하는 제 8 단계를 포함하여 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체가 제공된다.
아래에서, 본 발명에 따른 양호한 일 실시예를 첨부한 도면을 참조로 하여 상세히 설명하겠다.
도 1은 본 발명에 적용되는 바이너리 프로그램 변환 장치의 구성도로서, 제어 흐름 그래프 및 레지스터 트랜스퍼 언어(RTL : Register Transfer Language)를 생성하는 전반부(102), 최적화된 중간 코드를 생성하는 중간부(104) 및 목표 플랫폼에서 실행할 수 있는 바이너리 프로그램을 생성하는 후반부(106)로 구성되어 있다.
이를 상세히 설명하면 다음과 같다.
먼저, 상기 전반부(102)에서는 기존 플랫폼의 바이너리 프로그램을 입력받아 제어 흐름 그래프 및 레지스터 트랜스퍼 언어(RTL : Register Transfer Language)를 생성하여 이를 상기 중간부로 전달하고, 상기 중간부(104)에서는 제어 흐름 그래프 및 레지스터 트랜스퍼 언어를 상기 전반부(102)로부터 입력받아 최적화된 중간 코드를 생성하며, 상기 후반부(106)에서는 상기 중간부(104)로부터 최적화된 중간 코드를 입력받아 목표 플랫폼에서 실행할 수 있는 바이너리 프로그램을 생성한다.
본 발명에서는 생성한 바이너리 프로그램의 성능을 결정하는 것이 상기 중간부(104)에서 수행하는 최적화 코드 생성 기능인 점에 착안하여 상기 중간부(104)를 전략 결정 유닛과 전략 실행 유닛으로 구분하고, 새로운 목표 플랫폼이 어떠한 설계 구조를 가지는지 실행 전에 모르더라도, 실제 실행시 가장 적절한 전략을 선택하여 최적화 코드 생성이 가능하도록 고안하였다.
도 2는 도 1에 도시된 바이너리 프로그램 변환 장치의 전반부(102)의 상세 구성도로서, 상기 전반부(102)는 바이너리 파일 분석기(202), 디스어셈블러(204), 관용어 분석기(210) 및 제어 흐름 그래프 생성기(211)로 구성되어 있다.
상기 바이너리 파일 분석기(202)는 기존 플랫폼의 바이너리 프로그램을 입력받아, 기존 플랫폼의 바이너리 파일 서식을 참조하여 텍스트 섹션(Text Section)과 데이터 섹션(Data Section)으로 분리하고, 기존 플랫폼의 명령어 셋으로 변환할 수 있도록 정보를 조사한다.
상기 디스어셈블러(204)는 상기 바이너리 파일 분석기(202)가 조사한 정보와 기존 플랫폼의 프로세서 명세를 바탕으로 읽어들인 바이너리 프로그램을 기존 플랫폼의 어셈블리어 코드로 변환한다.
상기 관용어 분석기(210)는 관용어 명세를 참조하여 생성한 기존 플랫폼의 어셈블리어 코드로부터 관용어 표현을 탐색하여 대체한다.
상기 제어 흐름 그래프 생성기(211)는 제어 흐름 그래프 명세, 레지스터 트랜스퍼 언어 명세 및 대응 명령문 등을 참조하여 어셈블리어 코드로부터 제어 흐름 그래프와 레지스터 트랜스퍼 언어 코드를 생성한다.
도 3은 도 1에 도시된 바이너리 프로그램 변환 장치의 중간부(104)의 상세구성도로서, 상기 중간부(104)는 전략 결정 유닛(302) 및 전략 실행 유닛(303)으로 구성되어 있다.
상기 전략 결정 유닛(302)은 상기 전반부로부터 제어 흐름 그래프와 레지스터 트랜스퍼 언어 코드를 입력받아, 목표 플랫폼에 최적인 전략을 선택한 뒤, 상기 전략 실행 유닛(303)을 호출한다.
상기 전략 실행 유닛(303)은 목표 프로세서 명세, 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드를 기반으로 최적화된 중간 코드를 생성한다.
도 4는 도 3에 도시된 상기 전략 결정 유닛(301) 및 상기 전략 실행 유닛(303)의 작동 흐름을 도시한 흐름도로서, 이를 상세히 설명하면 다음과 같다.
먼저, 스텝 S401에서 중간 코드(제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드)가 입력되고, 스텝 S402에서, 목표 프로세서 명세로부터 목표 플랫폼의 설계 구조가 리스크(RISC)인지 여부를 판단한다.
상기 스텝 S402에서의 판단 결과, 리스크이면, 스텝 S403에서, 캐쉬 메모리(CM : Cache Memory)가 포함되어 있는지 여부를 판단한다.
상기 스텝 S403에서의 판단 결과, 캐쉬 메모리를 포함하고 있으면, 스텝 S404에서, 캐쉬 메모리를 이용하여 프로그램의 전체 출력을 극대화할 수 있는 방향으로 리스크 플랫폼에 최적화하는 코드 생성 전략을 수행한 후, 스텝 S411에서 최적화 코드를 출력한다.
상기 스텝 S403에서의 판단 결과, 캐쉬 메모리가 존재하지 아니하면, 스텝 S405에서, 데이터의 복사와 프로그램 흐름 제어에 관한 명령어를 레지스터에 집중배치하여 리스크 플랫폼에 최적화하는 코드 생성 전략을 수행한 후, 스텝 S411로 진행한다.
한편, 상기 스텝 S402에서의 판단 결과, 리스크가 아니면, 스텝 S406에서, 목표 플랫폼의 설계 구조가 시스크인지 여부를 판단한다.
상기 스텝 S406에서의 판단 결과, 시스크이면, 스텝 S407에서, 가비지 컬렉션(Garbage Collection)으로 메모리 공간 사용을 시스크에 최적화한 코드 생성 전략을 수행한 후, 스텝 S411로 진행하고, 시스크가 아니면, 스텝 S408에서, 목표 플랫폼의 설계 구조가 버츄얼 머신(VM : Virtual Machine)인지 여부를 판단한다.
상기 스텝 S408에서의 판단 결과, 버츄얼 머신이면, 스텝 S409에서, 바이트 코드를 자바 버츄얼 머신에 적합한 코드 생성 전략을 수행한 후, 스텝 S411로 진행하고, 버츄얼 머신이 아니면, 스텝 S410에서, 오류를 발생시킨 후, 대기한다.
도 5는 도 1에 도시된 바이너리 프로그램 변환 장치의 후반부(106)의 상세 구성도로서, 상기 후반부(102)는 어셈블러(502) 및 바이너리 코드 생성기(504)로 구성되어 있다.
이를 상세히 설명하면 다음과 같다.
상기 어셈블러(502)는 최적화된 중간 코드를 읽어 들여 목표 프로세서 명세를 참조하여 어셈블리어 코드를 생성하고, 상기 바이너리 코드 생성기(504)는 목표 플랫폼의 바이너리 파일 서식을 참조하여 목표 플랫폼에서 실행할 수 있는 바이너리 프로그램을 생성한다.
상기와 같은 본 발명은 컴퓨터로 읽을 수 있는 기록 매체로 기록되고, 컴퓨터에 의해 처리되게 된다.
앞서 상세히 설명한 바와 같이 본 발명은 기존 플랫폼에서 실행하던 바이너리 프로그램을 소스 프로그램이 없거나 목표 플랫폼에 맞는 새로운 컴파일러를 아직 개발하지 못한 경우에도 목표 플랫폼 위에서 바로 실행할 수 있도록 하여 새로운 플랫폼에 대한 신속한 사용자 확보는 물론이고 그에 앞서 새로운 플랫폼을 시험하는 용도로도 사용할 수 있는 효과가 있다.
또한, 본 발명에서 고안한 중간부의 전략 결정 유닛과 전략 실행 유닛을 기존의 컴파일러나 바이너리 유틸리티에 응용하면, 목표 플랫폼 위에서 바로 실행할 수 있는 바이너리 코드를 기존 플랫폼 위에서 생성할 수 있도록 기존의 컴파일러나 바이너리 유틸리티(Binary Utility)를 수정하는 것이 용이하다. 이러한 방법은 종래 기술에서 해결할 수 없었던 목표 플랫폼 수정(Retarget Platform)을 용이하게 하는 효과가 있다.
특히 플랫폼의 설계 구조가 리스크(RISC : Reduced Instruction Set Computer), 시스크(CISC : Complex Instruction Set Computer) 또는 자바 버츄얼 머신(JVM : Java Virtual Machine)인 경우를 대비하여 각각 최적화 코드 생성 전략을 수행할 수 있도록 설계하여 향후 개발될 대부분의 플랫폼에서 바로 실행이 가능한 바이너리 프로그램을 생성할 수 있도록 하였다. 특히 새로이 개발하는 목표 플랫폼이 어떠한 설계 구조를 가지든지 기존의 바이너리 프로그램을 바로 실행할 수 있는 수단을 제공하며, 또한 바이너리 코드 생성을 목표로 하는 기존의 컴파일러나 바이너리 유틸리티(Binary Utility)가 새로운 플랫폼에서 실행할 수 있는 바이너리 코드를 기존의 플랫폼 위에서 생성하고자 할 때, 본 발명을 중간부와 후반부로 사용하면 용이하게 목표 수정을 할 수 있는 효과가 있다.
또한, 본 발명의 전략 결정 유닛과 전략 실행 유닛은 각각 독립적인 컴포넌트(Component)로 구성하여 새로운 전략을 용이하게 추가하거나 쓸모가 적어진 전략을 제거할 수 있는 구조로 설계할 수 있으므로, 현재 알 수 없는 전혀 새로운 설계 구조를 가지는 플랫폼이 개발되어도 상기 두 개의 유닛에 해당 부분만 첨가하면 바로 실행할 수 있는 바이너리 프로그램을 생성할 수 있어, 새로운 플랫폼 개발의 효율성과 경제성을 높이는 효과가 있다.
이상에서 본 발명에 대한 기술 사상을 첨부 도면과 함께 서술하였지만 이는 본 발명의 가장 양호한 일 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술 분야의 통상의 지식을 가진 자이면 누구나 본 발명의 기술 사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.

Claims (11)

  1. 기존 플랫폼(Platform)에서 작동할 수 있는 바이너리 프로그램(Binary Program)을 입력받아 중간 코드를 생성하는 전반부, 상기 전반부에서 생성한 중간 코드를 입력받아 최적화된 중간 코드를 생성하는 중간부 및 상기 중간부에서 생성한 최적화된 중간 코드를 입력받아 목표 플랫폼에서 작동할 수 있는 바이너리 프로그램을 생성하는 후반부를 포함하는 바이너리 프로그램 변환 장치에 있어서,
    상기 전반부는,
    기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 읽어 들여, 중간 코드에 해당하는 제어 흐름 그래프 및 레지스터 트랜스퍼 언어(RTL : Register Transfer Language)를 생성하는 수단을 포함하고,
    상기 중간부는,
    상기 전반부에서 생성된 중간 코드를 입력받아 목표 플랫폼에 최적인 전략을 선택하는 전략 결정 수단; 및
    상기 전략 결정 수단에 의하여 선택된 전략에 따라 목표 프로세서 명세와 중간 코드를 기반으로 최적화된 중간 코드를 생성하는 전략 실행 수단을 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 생성 수단은,
    기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 읽어들여, 기존 플랫폼의 바이너리 파일 서식을 참조하여 텍스트 섹션(Text Section)과 데이터 섹션(Data Section)으로 분리하고, 기존 플랫폼의 명령어 셋으로 변환할 수 있도록 정보를 조사하는 바이너리 파일 분석기와;
    상기 바이너리 파일 분석기가 조사한 정보와 기존 프로세서 명세를 바탕으로 읽어 들인 바이너리 프로그램을 기존 플랫폼의 어셈블리어(Assembly Language) 코드로 변환하는 디스어셈블러(Disassembler)와;
    상기 디스어셈블러로부터 생성한 기존 플랫폼의 어셈블리어 코드로부터 관용어 표현을 탐색하여 대체하는 관용어 분석기와;
    상기 관용어 분석기에서 대체한 관용어를 참조하여, 상기 디스어셈블러에서 변환된 어셈블리어 코드로부터 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드를 생성하는 제어 흐름 그래프 생성기를 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 장치.
  4. 제 1 항에 있어서,
    상기 후반부는,
    목표 프로세서 명세 및 목표 플랫폼의 바이너리 파일 서식을 참조하여, 상기 전략 실행 수단에 의하여 생성된 최적화된 중간 코드를 목표 플랫폼에서 실행할 수 있는 바이너리 프로그램을 변환하는 수단을 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 장치.
  5. 제 4 항에 있어서,
    상기 바이너리 프로그램을 변환하는 수단은,
    목표 프로세서 명세를 참조하여, 상기 전략 결정 수단에 의하여 생성된 최적화된 중간 코드를 입력받아 어셈블리어 코드로 변환하는 어셈블러와;
    목표 플랫폼의 바이너리 파일 서식을 참조하여, 상기 어셈블러에 의하여 변환된 어셈블리어 코드로부터 목표 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 생성하는 바이너리 코드 생성기를 포함하여 이루어진 것을 특징으로 하는 바이너리 프로그램 변환 장치.
  6. 기존 플랫폼(Platform)에서 실행할 수 있는 바이너리 프로그램(Binary Program)을 새로운 프로세서와 운영 체제로 구성한 목표 플랫폼에서 실행할 수 있도록 하는 바이너리 프로그램 변환 방법에 있어서,
    기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 입력받아, 중간 코드에 해당하는 제어 흐름 그래프 및 레지스터 트랜스퍼 언어(RTL : Register Transfer Language)를 생성하는 단계;
    상기 중간 코드를 입력받아 목표 플랫폼에 최적인 전략을 선택하는 단계;
    상기 선택된 전략에 따라 목표 프로세서 명세와 상기 중간 코드를 기반으로 최적화된 중간 코드를 생성하는 단계;
    를 포함하는 것을 특징으로 하는 바이너리 프로그램 변환 방법.
  7. 삭제
  8. 제 6 항에 있어서,
    상기 제어 흐름 그래프 및 레지스터 트랜스퍼 언어를 생성하는 단계는,
    기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 읽어들여, 기존 플랫폼의 바이너리 파일 서식을 참조하여 텍스트 섹션(Text Section)과 데이터 섹션(Data Section)으로 분리하고, 기존 플랫폼의 명령어 셋으로 변환할 수 있도록 정보를 조사하는 서브 단계;
    상기 조사한 정보와 기존 프로세서 명세를 참조하여, 입력된 바이너리 프로그램을 기존 플랫폼의 어셈블리어(Assembly Language) 코드로 변환하는 서브 단계;
    상기 변환된 기존 플랫폼의 어셈블리어 코드로부터 관용어 표현을 탐색하여 대체하는 서브 단계; 및
    상기 대체한 관용어를 참조하여, 상기 변환된 어셈블리어 코드로부터 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드를 생성하는 서브 단계;
    를 포함하는 것을 특징으로 하는 바이너리 프로그램 변환 방법.
  9. 제 6 항에 있어서,
    목표 프로세서 명세 및 목표 플랫폼의 바이너리 파일 서식을 참조하여, 상기 최적화된 중간 코드를 목표 플랫폼에서 실행할 수 있는 바이너리 프로그램으로 생성하는 단계;
    를 더 포함하는 것을 특징으로 하는 바이너리 프로그램 변환 방법.
  10. 제 9 항에 있어서,
    상기 바이너리 프로그램으로 생성하는 단계는,
    목표 프로세서 명세를 참조하여, 상기 생성된 최적화된 중간 코드로부터 어셈블리어 코드를 생성하는 서브 단계; 및
    목표 플랫폼의 바이너리 파일 서식을 참조하여, 상기 생성된 어셈블리어 코드로부터 목표 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 생성하는 서브 단계;
    를 포함하는 것을 특징으로 하는 바이너리 프로그램 변환 방법.
  11. 컴퓨터에,
    기존 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 읽어들여, 기존 플랫폼의 바이너리 파일 서식을 참조하여 텍스트 섹션(Text Section)과 데이터 섹션(Data Section)으로 분리하고, 기존 플랫폼의 명령어 셋으로 변환할 수 있도록 정보를 조사하는 단계;
    상기 조사한 정보와 기존 프로세서 명세를 참조하여, 입력된 바이너리 프로그램을 기존 플랫폼의 어셈블리어(Assembly Language) 코드로 변환하는 단계;
    상기 변환된 기존 플랫폼의 어셈블리어 코드로부터 관용어 표현을 탐색하여 대체하는 단계;
    상기 대체한 관용어를 참조하여, 상기 변환된 어셈블리어 코드로부터 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드를 생성하는 단계;
    상기 생성된 제어 흐름 그래프 및 레지스터 트랜스퍼 언어 코드를 읽어들여 목표 플랫폼에 최적인 전략을 선택하는 단계;
    상기 선택된 전략에 따라 목표 프로세서 명세와 중간 코드를 기반으로 최적화된 중간 코드를 생성하는 단계;
    목표 프로세서 명세를 참조하여, 상기 생성된 최적화된 중간 코드로부터 어셈블리어 코드를 생성하는 단계; 및
    목표 플랫폼의 바이너리 파일 서식을 참조하여, 상기 생성된 어셈블리어 코드로부터 목표 플랫폼 위에서 실행할 수 있는 바이너리 프로그램을 생성하는 단계;
    를 포함하여 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1019990045261A 1999-10-19 1999-10-19 바이너리 프로그램 변환 장치 및 그 방법 KR100345401B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990045261A KR100345401B1 (ko) 1999-10-19 1999-10-19 바이너리 프로그램 변환 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990045261A KR100345401B1 (ko) 1999-10-19 1999-10-19 바이너리 프로그램 변환 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20010037625A KR20010037625A (ko) 2001-05-15
KR100345401B1 true KR100345401B1 (ko) 2002-07-26

Family

ID=19615881

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990045261A KR100345401B1 (ko) 1999-10-19 1999-10-19 바이너리 프로그램 변환 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR100345401B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101242479B1 (ko) * 2011-07-01 2013-03-18 한국과학기술연구원 어플리케이션 배포 시스템 및 방법
KR101940265B1 (ko) 2012-05-23 2019-01-18 충남대학교산학협력단 명령어 집합 아키텍처 자동 맵핑 기법
US9626170B2 (en) 2013-07-18 2017-04-18 Nxp Usa, Inc. Method and computer program product for disassembling a mixed machine code
KR102145463B1 (ko) 2014-05-02 2020-08-18 충남대학교산학협력단 재목적성을 고려한 직접 매핑 기반의 이진 변환 규칙 생성 도구

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756718A (ja) * 1993-08-11 1995-03-03 Nec Corp システムデータの変更方法
JPH0855011A (ja) * 1994-08-09 1996-02-27 Nippon Steel Corp 異機種間データ変換方法
KR19980033137A (ko) * 1996-10-28 1998-07-25 세키자와다다시 이진 프로그램 변환장치, 이진 프로그램 변환방법 및 프로그램기록매체

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756718A (ja) * 1993-08-11 1995-03-03 Nec Corp システムデータの変更方法
JPH0855011A (ja) * 1994-08-09 1996-02-27 Nippon Steel Corp 異機種間データ変換方法
KR19980033137A (ko) * 1996-10-28 1998-07-25 세키자와다다시 이진 프로그램 변환장치, 이진 프로그램 변환방법 및 프로그램기록매체

Also Published As

Publication number Publication date
KR20010037625A (ko) 2001-05-15

Similar Documents

Publication Publication Date Title
US5920723A (en) Compiler with inter-modular procedure optimization
US6035120A (en) Method and apparatus for converting executable computer programs in a heterogeneous computing environment
EP1451682B1 (en) Platform-independent selective ahead-of-time compilation
US8423976B2 (en) Extreme pipeline and optimized reordering technology
US7725883B1 (en) Program interpreter
US6233733B1 (en) Method for generating a Java bytecode data flow graph
US6738967B1 (en) Compiling for multiple virtual machines targeting different processor architectures
JP3311462B2 (ja) コンパイル処理装置
JP3190773B2 (ja) 言語処理プログラムのコンパイル処理方法
EP1491999A2 (en) Software development infrastructure
JP2000035893A (ja) デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体
US20080250231A1 (en) Program code conversion apparatus, program code conversion method and recording medium
JP2001166949A (ja) シンボリック実行を用いてソースコードをコンパイルするための方法及び装置
EP0526621A1 (en) Analyzing inductive expressions in a multilanguage optimizing compiler
US6625807B1 (en) Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation
JP4044756B2 (ja) プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム
KR100345401B1 (ko) 바이너리 프로그램 변환 장치 및 그 방법
US7624387B2 (en) Compiler, program product, compilation device, communication terminal device, and compilation method
JPH08305583A (ja) Cpuシミュレーション方法
JP3266097B2 (ja) 非リエントラントプログラムの自動リエントラント化方法及びシステム
Abe et al. A retargetable code generator for the generic intermediate language in COINS
JP3018783B2 (ja) コンパイル方式
Wortman et al. Automating data conversion for heterogeneous distributed shared memory
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
Bureš Optimalizace ASM kódu pro DLX procesor pomocí LLVM systému

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: 20100701

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee