KR20010086328A - 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의명령으로 변환하는 방법, 시스템, 프로그램 및 데이터 구조 - Google Patents

제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의명령으로 변환하는 방법, 시스템, 프로그램 및 데이터 구조 Download PDF

Info

Publication number
KR20010086328A
KR20010086328A KR1020010001884A KR20010001884A KR20010086328A KR 20010086328 A KR20010086328 A KR 20010086328A KR 1020010001884 A KR1020010001884 A KR 1020010001884A KR 20010001884 A KR20010001884 A KR 20010001884A KR 20010086328 A KR20010086328 A KR 20010086328A
Authority
KR
South Korea
Prior art keywords
bit architecture
instruction
operand
bit
instructions
Prior art date
Application number
KR1020010001884A
Other languages
English (en)
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 KR20010086328A publication Critical patent/KR20010086328A/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Landscapes

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

Abstract

본 발명은 제1 비트 아키텍쳐의 명령, 예컨대 32 비트를 제2 비트 아키텍쳐의 명령, 예컨대 64 비트로 변환하는 방법, 시스템, 프로그램, 데이터 구조에 관한 것이다. 코드는 연산 코드와 적어도 하나의 오퍼랜드를 갖는 제1 비트 아키텍쳐의 명령으로부터 변환된다. 이어서, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐로 변환하는 정보를 포함하고 있는 변환표가 액세스된다. 그 변환표가 제1 비트 아키텍쳐의 명령을 변경하도록 표시하는 정보를 포함하고 있다면, 제1 비트 아키텍쳐의 명령은 제2 비트 아키텍쳐의 대응 명령으로 변환된다. 그 변환은 제1 비트 아키텍쳐의 명령을 변경하는 변환 연산을 기초로 하여 제2 비트 아키텍쳐의 명령을 생성한다.

Description

제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법, 시스템, 프로그램 및 데이터 구조{METHOD, SYSTEM, PROGRAM, AND DATA STRUCTURE FOR TRANSFORMING AN INSTRUCTION IN A FIRST BIT ARCHITECTURE TO AN INSTRUCTION IN A SECOND BIT ARCHITECTURE}
본 발명의 양호한 실시예에서는 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법, 시스템, 프로그램, 데이터 구조를 제공한다.
컴퓨터에 있어서, 많은 애플리케이션 프로그램들이 32 비트의 아키텍쳐를 이용하여 제작되고 있다. 그러나, 대규모 처리 시스템은 64 비트의 아키텍쳐를 채용하기 시작했다. 64 비트의 컴퓨팅 아키텍쳐는 사용될 수 있는 어드레스의 공간, 레지스터의 크기, 데이터 구조의 크기를 상당히 증가시킨다. 더욱이, 64 비트로 컴퓨팅하면, 처리와 데이터의 전송이 32 비트보다 훨씬 빠르다. 예컨대, 경우에 따라서는 몇 개의 32 비트 명령과 「클린업」 코드가 필요할 수도 있는 연산들을 한 개의 64 비트 명령으로 처리할 수 있다. 64 비트 시스템은 복잡한 인덱스나 레지스터 어드레스 체계를 이용하지 않더라도 더 많은 메모리를 직접 어드레스할 수 있다. 현재의 64 비트 컴퓨터에는 선 마이크로시스템즈사의 솔라리스(등록상표) 7 운용 환경, 컴팩 컴퓨터사의 알파스테이션 200 및 디지털 이퀴프먼트사가 개발한 알파 64 비트 프로세서를 이용하는 다른 컴팩 제품, 인텔사가 개발한 64 비트 아키텍쳐인 IA-64 아키텍쳐를 기반으로 하는 인텔사의 메르세드(Merced: 인텔사의 코드명) 프로세서와 이타늄(Itanium: 인텔사의 등록상표 및 코드명) 프로세서 등이 있다.
64 비트 컴퓨팅의 이점에도 불구하고, 많은 프로그램이 여전히 32 비트의 명령을 이용하여 제작되고 있다. 따라서, 업계가 64 비트 아키텍쳐의 컴퓨터로 이동하고 있다해도, 컴파일러 개발자는 32 비트의 프로그램을 계속 지원해야 할 것이다. 현재의 아키텍쳐 및 컴파일러와의 호환성을 유지하기 위해서(즉, 프로그래머가 복잡함을 숨기기 위해서), 컴파일러 개발자는 64 비트의 기능을 이용하는 시기와 장소에 관해 효과적인 지능을 구성해야 한다. 따라서, 기술상, 32 비트 컴퓨팅과 64 비트 컴퓨팅 모두를 처리하여 32 비트의 아키텍쳐와 64 비트의 아키텍쳐 사이의 전이를 지원할 수 있는 컴파일러를 개발할 필요가 있다.
전술한 종래 기술의 한계를 극복하기 위해, 본 발명의 양호한 실시예는 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법, 시스템, 프로그램, 데이터 구조를 공개하고 있다. 코드는 연산 코드와 적어도 하나의 오퍼랜드를 갖는 제1 비트 아키텍쳐의 명령으로부터 변환된다. 이어서, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐로 변환하는 정보를 포함하고 있는 변환표가 액세스된다. 그 변환표가 제1 비트 아키텍쳐의 명령을 변경하도록 표시하는 정보를 포함하고 있다면, 제1 비트 아키텍쳐의 명령은 제2 비트 아키텍쳐의 대응 명령으로 변환된다. 그 변환은 제1 비트 아키텍쳐의 명령을 변경하는 변환 연산을 기초로 하여 제2 비트 아키텍쳐의 명령을 생성한다.
제1 비트 아키텍쳐는 32 비트 아키텍쳐이고, 제2 비트 아키텍쳐는 64 비트 아키텍쳐이다.
다른 실시예에서, 변환표는 각 연산 코드마다 하나의 엔트리를 갖고 있다. 소정의 변환이 수행되어야 하는 경우, 각 연산 코드의 엔트리는 소정의 오퍼랜드표에 대한 포인터를 가질 수 있다. 연산 코드의 엔트리가 하나의 오퍼랜드표에 대한 포인터를 갖고 있지 않다면, 변환은 수행되지 않는다.
오퍼랜드표는 오퍼랜드 비트 아키텍쳐 유형들의 가능한 각 조합마다의 엔트리를 갖고 있다. 오퍼랜드표 안에 있는 각 엔트리는 적어도 하나의 변환 연산을 표시한다. 이러한 경우에 있어서, 명령을 변환하는 단계는, 오퍼랜드 비트 아키텍쳐의 유형들이 제1 비트 아키텍쳐의 명령에 있는 각 오퍼랜드의 비트 아키텍쳐의 유형들과 일치하는 오퍼랜드표 안에서, 하나의 엔트리를 결정하는 단계를 포함한다. 이어서, 적어도 하나의 변환 연산이 실행되어, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐로 변환하게 된다.
본 발명의 양호한 실시예는 명령을 하나의 아키텍쳐에서 다른 아키텍쳐로,예컨대 32 비트에서 64 비트로 변환하는 기술을 제공한다. 이 양호한 실시예의 기술에 의하면, 코드, 예컨대 중간 코드를 32 비트 명령으로 변환하는 컴파일러는 변경되지 않아도 된다. 그 대신, 결과로 얻어진 32 비트 명령은 각 연산 코드 유형마다 변환 연산을 제공하는 다양한 표를 이용하여 처리된다. 본 발명의 양호한 실시예는 32 비트 아키텍쳐와 64 비트 아키텍쳐를 모두 지원하고자 하는 기계가, 32 비트 명령을 이용하여 소스 프로그램을 제작할 수 있으면서 여전히 그러한 기계를 작동시킬 수 있게 하는 데 특히 유용하다.
도 1은 컴파일러의 구성 요소를 도시하는 도면.
도 2는 본 발명의 양호한 실시예에 따라 컴파일러의 코드 생성기 부분의 구성 요소를 도시하는 도면.
도 3은 본 발명의 양호한 실시예에 따라 32비트의 명령을 64비트의 명령으로 변환하는 코드 생성기에 사용되는 논리를 도시하는 흐름도.
도 4는 본 발명의 양호한 실시예에 따라 STORE 지령을 32 비트의 포맷에서 64 비트의 포맷으로 변환하는데 사용되는 엔트리의 예를 도시하는 도표.
<도면의 주요 부분에 대한 부호의 설명>
2 : 컴파일러
4 : 소스 프로그램
6 : 전위(front end)
8 : 중간 코드
10 : 코드 생성기
12 : 목적 프로그램
14 : 목적 컴퓨터
20 : 문장 프로세서 모듈
22 : 32 비트 명령
24 : 변환기
26 : 64 비트 명령
28 : 컴파일러 사전
30 : 명령 변환표
32 : 변환 오퍼랜드표
34 : 대체표
다음의 설명에서, 본원의 일부를 형성하고 본 발명의 몇 가지 실시예를 도시하는 첨부 도면에는 참조 부호가 병기되어 있다. 본 발명의 범주를 벗어나지 않고서도 다른 실시예가 사용될 수 있고 구조적 및 동작적 변화가 이루어질 수 있음이 이해될 것이다.
도 1은 컴파일러(2)의 일반적인 구성 요소를 도시하고 있다. 컴파일러(2)는 하이 레벨 소스 언어로 작성된 소스 프로그램(4)을 입력으로서 수신한다. 전위(前位: front end) 프로세스(6)는, 목적 기계가 예컨대 비트, 정수, 실수, 포인터 등을 직접 조작할 수 있는 양으로 중간 코드(8)에 나타나는 명칭들의 값을 표현할 수 있게 소스 프로그램(4)을 주사하고 해부하여 상세한 중간 표현 방식으로 번역함으로써, 소스 프로그램(4)을 중간 코드(8)로 전환한다. 코드 생성기(10)는 중간 코드(8)를 입력으로서 수신하고 목적 프로그램(12)을 출력으로서 발생하여, 완전한 기계어, 재배치 가능한 기계어 또는 어셈블리어를 구성할 수 있다.
목적 프로그램(12)은 목적 컴퓨터(14)를 수행하고자 한 것이다. 양호한 실시예에서, 목적 컴퓨터(14)는 32 비트 명령과 64 비트 명령을 처리할 수 있다. 예컨대, 목적 컴퓨터는 32 비트 명령 세트와 64 비트 명령 세트 양쪽을 지원하는 인텔의 IA-64 아키텍쳐를 이용할 수 있다. 인텔의 IA-64 프로세서는 32 비트 애플리케이션의 실행을 지원하는 64 비트 운용 체제 상에서 32 비트 애플리케이션을 실행시킬 수 있다. 또한, 인텔의 IA-64 아키텍쳐는 혼합형의 32 및 64 비트 코드를 실행할 수도 있다. 인텔의 IA-64 아키텍쳐에 관한 상세한 설명은 본 명세서에 인용된 인텔의 공보 "IA-64 애플리케이션 개발자의 아키텍쳐 가이드", 일련 번호 제245188-011(저작권자: 인텔사, 1999년 5월)에 설명되어 있다.
도 2는 양호한 실시예에 따라 32 비트 명령을 64 비트 명령으로 변환하기 위한 코드 생성기(10)의 구성 요소를 도시하고 있다. 문장 프로세서 모듈(20)은 중간 코드(8)를 입력으로서 수신하고 32 비트 명령(22)을 생성한다. 32 비트 명령은 변환기(24)에 입력되고, 이어서 변환기(24)는 컴파일러 사전(28), 명령 변환표(30), 변환 오퍼랜드표(32) 및 대체표(34)를 이용하여 그 32 비트 명령을 64 비트 명령(26)으로 전환한다. 이들 표(28, 30, 32 및 34)는 32 비트에서 64 비트로의 변환을 수행하는데 필요한 정보를 변환기(24)에 제공한다. 컴파일러 사전(28)은 32 비트 명령으로부터 어셈블되고, 명령에 대한 오퍼랜드와 데이터 필드의 성질을 비롯해서 명령에 관한 정보를 포함하고 있다. 예컨대, 전형적인 명령은 다음의 형태로 되어 있다.
op operand 1, operand 2
여기에서, 「op」는 연산의 유형을 표시하는 연산 코드이고, operand 1과 operand 2는 그 연산(op)에 종속하는 데이터이다. 예컨대, operand 1은 그 연산에 종속하는 소스 데이터일 수 있고, operand 2는 그 연산의 결과를 포함하고 있는 목적지(destination)일 수 있다. operand 1과 operand 2 양쪽은 메모리의 레지스터와 같은 어드레스 가능한 위치이다. 컴파일러 사전(28)은 특정 레지스터의 데이터(operand)가 32 비트인지 64 비트인지의 여부, 데이터 필드의 크기 등을 비롯해서, 소스 프로그램(4)에서 정의되고 사용되고 있는 모든 데이터의 성질에 관한 정보를 포함할 수도 있다.
명령 변환표(30)는 각 연산 유형, 예컨대 각 op 코드마다 엔트리를 포함하고 있다. 특정 연산 코드를 명령 변환표(30)의 엔트리에 사상(map)시키기 위해, 인덱스가 제공될 수 있다. 양호한 실시예에 있어서, 명령 변환표(30)는 0 또는 어드레스 중 어느 하나가 들어 있는 포인터의 어레이를 포함하고 있다. 만일 명령이 변환되지 않아야 한다면, 명령 변환표(30) 내의 대응 엔트리는 0으로 설정될 것이다. 그렇지 않고, 명령이 변환되어야 한다면, 명령 변환표(30) 내의 엔트리는 변환 오퍼랜드표(32)에 대한 어드레스를 포함할 것이다. 양호한 실시예에 있어서, 0이 아닌 값을 갖는 명령 변환표(30) 내의 각 엔트리마다, 즉 변환에 종속하는 각 연산마다 하나의 변환 오퍼랜드표(32)가 있다.
변환 오퍼랜드표(32)는 명령 유형에 대해서 오퍼랜드 값들의 가능한 각각의 조합에 대한 엔트리를 포함하고 있다. 예컨대, 데이터를 레지스터에서 메모리로 전송하는 STORE 명령에 대한 변환 오퍼랜드표(32)에 의해, 각 오퍼랜드, 즉 operand1과 operand 2는 32 비트 또는 64 비트 중 어느 하나가 될 수 있다. 이 경우, STORE 명령에 대한 변환 오퍼랜드표(32)는 그 오퍼랜드의 아키텍쳐 유형들의 가능한 각 조합마다 네 개의 엔트리를 가질 수 있다.
1. operand 1 = 32 비트값
operand 2 = 32 비트값
2. operand 1 = 64 비트값
operand 2 = 64 비트값
3. operand 1 = 32 비트값
operand 2 = 64 비트값
4. operand 1 = 64 비트값
operand 2 = 32 비트값
하나의 변환 오퍼랜드표(32) 내의 각 엔트리, 즉 오퍼랜드값들의 가능한 각 조합마다에는, 그 특정 오퍼랜드 아키텍쳐 조합에 대한 변환을 어떻게 수행할지에 관한 정보를 제공하는 변환표(34)가 있다. 예컨대, 전술한 STORE 명령에 대한 오퍼랜드 아키텍쳐 유형의 가능한 네 가지 조합의 각 조합에 대해서 수행되는 변환이 다를 수 있다. 각 대체표(34)는 변환을 이용하는 방법, 예컨대 변환 연산에 관해 변환기(24)에 지시하는 필드를 포함할 수도 있을 것이다. 양호한 실시예에 있어서, 대체표(34)는 변환에 종속되어 있는 명령 op 코드 대신에 사용하기 위해 새로운 변환 op 코드 또는 명령을 표시하는 필드와, 레지스터가 32 비트 데이터인지 또는 64 비트 데이터인지의 여부를 표시하기 위해 레지스터 상태표를 갱신하거나, 그 레지스터 상태를 변경되지 않은 채 유지하는지의 여부를 표시하는 플래그를 포함할 수 있을 것이다. 이 레지스터 상태표는 컴파일러 제어 구조의 일부이거나 컴파일러 사전(28) 내에 유지될 수 있다. 부가의 변환 단계들을 표시하는 다른 플래그들을 이용하여, 입력 32 비트 명령(22)을 32 비트에서 64 비트로 변환하게 할 수도 있다.
변환의 일부에는 op 코드의 명칭을 변경하는 것(단계 또는 수단)이 포함될 수 있다. 예컨대, 32 비트 명령은 기억의 경우에 ST, 그리고 로드(적재)의 경우에 L과 같은 니모닉 포맷이어도 되고, 64 비트 명령은 기억의 경우에 STG, 그리고 로드(적재)의 경우에 LG와 같이 약간 바뀌어도 된다. 「G」라는 니모닉은 명령이 적어도 하나의 64 비트 오퍼랜드를 구비하고 있음을 나타낸다. 대체의 실시예에 있어서, 32 비트 명령과 64 비트 명령을 구별하기 위해 다른 니모닉이 이용되어도 된다.
도 3은 표(28, 30, 32 및 34)를 이용하여 32 비트 명령을 64 비트 명령으로 변환하는 코드 생성기(10)의 변환기(24) 구성 요소 내에 구성되는 논리를 도시하고 있다. 제어는 블럭(100)에서 개시하며, 이 때 변환기(24)는 문장 프로세서 모듈(20)로부터 생성된 32 비트 명령을 수신한다. 변환기(24)는 수신된 명령의 op 코드에 대해서 명령 변환표(30) 내의 엔트리를 블럭(102)에서 조사(look-up)한다. 전술한 바와 같이, 조사 동작은 특정 op 코드에 대응하는 엔트리를 찾기 위해 인덱스를 이용하는 단계를 포함할 수 있다. 블럭(104)에서, 만일 조사된 엔트리에서의 값이 0이라면, 0은 그 특정 op 코드에 대해서 변환 처리가 전혀 수행될 수 없음을 표시하므로, 변환 처리는 블럭(106)에서 종료한다. 그렇지 않은 경우, 엔트리 내의값은 변환 오퍼랜드표(32)에 대한 포인터이다. 변환기(224)는 그 엔트리 내의 포인터에 의해 어드레스되는 변환 오퍼랜드표(32)를 블럭(108)에서 액세스한다. 변환기(24)는 각 오퍼랜드가 32 비트인지 또는 64 비트인지의 여부와 같이, 컴파일러 사전(28)으로부터 수신된 명령의 오퍼랜드에 대한 성질을 블럭(110)에서 결정하기도 할 것이다.
이어서, 변환기(24)는 수신된 명령의 오퍼랜드의 성질과 일치하는 오퍼랜드 성질을 갖는 엔트리를 찾기 위해 변환 오퍼랜드표(32) 내의 엔트리들을 블럭(112)에서 순회할 수 있을 것이다. 예컨대, 만일 수신된 명령의 오퍼랜드들이 각각 32 비트와 64 비트라면, 그들 오퍼랜드 비트 아키텍쳐의 값들에 대해 지정된 변환 오퍼랜드표(32)가 선택될 것이다. 이는 상기 STORE 명령에 대한 엔트리의 예에서, 상기 리스트화된 제3 엔트리를 구성할 것이다. 이어서, 변환기(24)는 변환 오퍼랜드표(32) 내에 배치된 엔트리에 리스트화된 대체표(34)를 블럭(114)에서 액세스할 것이다. 이어서, 변환기(24)는 수신된 명ㄹ영의 op 코드를 대체표(34) 내에 리스트화된 하나 또는 그 이상의 대체 op 코드로 대체하고, 따라서 32 비트 명령을 64 비트 명령(26)으로 변환할 것이다. 블럭(118)에서, 변환기(24)는 대체표(34) 내에 표시되어 있는 바와 같이 변환의 결과로서 새로운 32 비트 또는 64 비트의 상태를 표시하기 위해 레지스터 상태표를 갱신한다. 예컨대, 변환되어 있는 32 비트 수신 명령 내의 소정의 오퍼랜드는 변환 후의 64 비트값을 가질 것이다. 이와 같이 하여, 그 선행의 32 비트 오퍼랜드에 대한 레지스터 상태는 현재에 있어서는 64 비트 오퍼랜드임을 반영하도록 갱신될 것이다.
도 4는 STORE 명령의 경우에 어떻게 대체를 하는지에 관해 설명하고 있는 표(150)를 도시하고 있다. 표(150) 내의 각 엔트리는 STORE 명령의 경우에 변환 오퍼랜드표(32) 내에 엔트리를 형성할 것이다. OPERAND 1과 OPERAND 2의 오퍼랜드값이 32 비트 명령(22)의 오퍼랜드값들과 일치하는 엔트리를 찾을 때, 표(150)는 새로운 명령(들)과, 레지스터 상태표가 갱신되어 있는지의 여부를 비롯해서, 대체 동작들을 리스트화한다. 이어서, 표(150)는 가능한 오퍼랜드값들의 각 조합마다 대체표와 변환 오퍼랜드표의 엔트리들을 조합한다. 표(150) 내의 제3 엔트리와 제4 엔트리는 OPERAND 1이 변환 이전의 32 비트값이었기 때문에 레지스터 1의 상태 플래그가 갱신되어 있음을 나타낸다. 새로운 명령에서의 「G」 니모닉은 명령이 64 비트의 명령임을 표시한다. 더욱이, 표(150)에서, 32 비트의 OPERAND 1을 갖는 32 비트 STORE 명령은 두 개의 64 비트 명령으로 변환된다.
마찬가지로, 다른 모든 32 비트 명령에 대해서도 변환 오퍼랜드표와 대체 엔트리 또는 표가 있을 수 있다. 양호한 실시예에 있어서, ADD, SUBTRACT, MULTIPLY, DIVIDE, COMPARE, AND, OR, EXCLUSIVE OR와 같은 많은 명령에 대해, 오퍼랜드들 중 하나의 오퍼랜드가 32 비트일 때마다, 대체표(34)는 다른 오퍼랜드를 64 비트로 변환하기 위해 변환기(24)에 지시하는 변환 오퍼랜드를 포함할 것이다. 그러나, 만일 레지스터가 32 비트라고 선언된 사용자라면, 변환기(24)는 이러한 레지스터를 64 비트로 변환하게 지시되지는 않을 것이다. 32 비트 명령을 64 비트로 변화한하는 방법에 관한 변환기(24)에 대한 부가 명령은 대체표(34) 내로 부호화될 것이다.
양호한 실시예는 32 비트 명령을 64 비트로 변환하는 방법, 시스템 및 프로그램을 제공한다. 양호한 실시예의 기술에 관한 한 가지 이점은 중간 코드로부터 32 비트 명령을 생성하는 실제 문장 프로세서 모듈(20)이 변환의 달성을 위해 변경되지 않아도 된다는 것이다. 그 대신, 각각의 표(28, 30, 32 및 34)와 변환기(24) 구성 요소가 부가되어, 32 비트 명령을 64 비트 명령으로 변환하는 부가 단계를 수행한다. 이와 같이 하여, 문장 프로세서 모듈(20)에 대한 컴파일러 코드는 변형될 필요가 없고, 초기의 32 비트 명령이 현재의 컴파일러를 이용하여 생성된다. 컴파일러 개발자는 중간 코드를 32 비트 명령으로 변환하는 코드 생성기 부분을 변형시키거나 폐를 끼치지 않고서도 최종 변환을 수행할 수 있게 표와 변환기(24) 논리를 부가하기만 하면 된다. 따라서, 양호한 실시예는 64 비트 컴퓨터에 의해서만 처리하는 목적 컴퓨터에 대해서, 또는 인텔의 IA-64 아키텍쳐를 이용하는 시스템과 같이, 32 비트 명령과 64 비트 명령 양쪽을 처리할 수 있는 컴퓨터에 대해서 32 비트 명령을 64 비트로 전환하는 기술을 제공한다.
대체 실시예와 결론
여기에서는 본 발명의 양호한 실시예의 설명에 관해 결론을 짓는다. 다음에서는 본 발명을 달성하기 위한 몇 가지 대체 실시예에 관해 설명한다.
양호한 실시예는 소프트웨어, 펌웨어, 하드웨어, 또는 그들의 소정의 조합을 제조하는 표준 프로그래밍 및/또는 엔지니어링 기술을 이용하는 방법, 장치 또는 제조 물품으로서 구현될 수 있다. 본 명세서에서 사용되는 「제조 물품」(또는, 달리, 「컴퓨터 프로그램 제품」)이라는 용어는 하나 또는 그 이상의 컴퓨터 프로그램 및/또는 데이터 파일을 포괄하고자 사용되며, 그 컴퓨터 프로그램 및/또는 데이터 파일은 하나 또는 그 이상의 컴퓨터 판독 가능 장치, 캐리어, 또는 매체, 예컨대 자기 기록 매체, 플로피 디스크, CD-ROM, 광디스크, 홀로그래픽 장치, 휘발성 또는 불휘발성 전자 메모리, 네트워크 전송선로, 무선 전송 매체, 공간을 통해 전파하는 신호 등을 거쳐 프로그램에 액세스하는 파일 서버로부터 액세스될 수 있다.물론, 당해 기술 분야의 숙련자는 본 발명의 범주를 벗어나지 않고서도 이 구성에 대해 많은 변형을 이룰 수 있음을 인식할 것이다.
양호한 실시예는 32 비트 명령을 64 비트 명령으로 변환하는 것에 대해 설명되었지만, 양호한 실시예의 표와 변환기 방법은 32 비트와 64 비트 이외의, 예컨대 8 비트를 16 비트로, 16 비트를 32 비트로의 소정의 명령 포맷과 비트 아키텍쳐에, 또는 아직 개발되지 않은 아키텍쳐에 대한 변환에 대해 적용할 수 있다. 이것이 가능한 이유는, 본 발명의 양호한 실시예의 기술은 현재의 컴파일 기술을 이용하여 초기의 명령을 제1 비트 아키텍쳐로 컴파일하고, 이어서 표와 변환기를 이용하여 그 제1 비트 아키텍쳐의 명령을 제2 비트 포맷의 아키텍쳐로 변환하기 때문이다. 게다가, 그 변환은 보다 큰 아키텍쳐, 예컨대 64 비트에서 보다 작은 아키텍쳐, 예컨대 32 비트로 수행될 수 있다.
양호한 실시예는 각각의 표로서, 컴파일러 사전, 명령 변환표, 변환 오퍼랜드표, 및 대체표에 관해 설명했지만, 대체 실시예에서는 설명된 각 표의 내부의 데이터가 하나 또는 그 이상의 표로 조합될 수 있다.
요약하면, 본 발명은 제1 비트 명령으로부터의 명령을 제2 비트 아키텍쳐에서의 명령으로 변환하는 방법, 시스템, 프로그램 및 데이터 구조를 제공한다. 코드는 오퍼랜드 코드와 적어도 하나의 오퍼랜드를 갖는 제1 비트 아키텍쳐의 명령으로부터 변환된다. 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐로 변환하는 정보를 포함하는 변환표가 액세스된다. 제1 비트 아키텍쳐의 명령은, 변환표가 제1 비트 아키텍쳐의 명령을 변형시키도록 표시하는 정보를 포함하고 있다면, 제2 비트 아키텍쳐의 대응 명령으로 변환된다. 변환은 제1 비트 아키텍쳐의 명령을 변형하는 변환 연산에 기초하여 제2 비트 아키텍쳐의 명령을 생성한다.
본 발명의 양호한 실시예의 전술한 설명은 개시와 설명의 목적으로 제시되었다. 이는 본 발명을 정확히 공개된 형태에 꼭 맞거나 그에 한정하고자 하는 것은 아니다. 전술한 교시에 비추어 보면, 많은 변형과 변경이 가능하다. 본 발명의 범주는 이 상세한 설명에 의해가 아니라, 오히려 특허 청구 범위에 의해 한정되어야 한다. 전술한 설명, 예 및 자료는 본 발명에 관한 제조의 완전한 설명과 구성의 사용을 제공한다. 본 발명의 사상과 범주를 벗어나지 않고서도 본 발명의 많은 변형이 만들어질 수 있으므로, 본 발명은 특허 청구 범위에 있다.

Claims (26)

  1. 코드를, 연산 코드와 적어도 하나의 오퍼랜드를 갖는 제1 비트 아키텍쳐의 명령으로 변환하는 단계와,
    상기 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐로 변환하기 위한 정보를 포함하고 있는 변환표를 액세스하는 단계와,
    상기 변환표가 상기 제1 비트 아키텍쳐의 명령을 변경함을 표시하는 정보를 포함하고 있는 경우에 상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐의 대응 명령으로 변환하는 단계를 구비하고,
    상기 변환은 상기 제2 비트 아키텍쳐의 명령을 생성하기 위해 상기 제1 비트 아키텍쳐의 명령을 변경하는 변환 연산을 기초로 하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  2. 제1항에 있어서, 상기 변환표는 각 연산 코드마다 하나의 엔트리를 포함하고 있고, 각 연산 코드의 상기 엔트리는 변환이 수행되어야 하는 경우에 오퍼랜드표에 대한 포인터를 포함할 수 있으며, 상기 연산 코드에 대한 상기 엔트리가 하나의 오퍼랜드표에 대한 포인트를 포함하지 않는 경우에는 변환이 수행되지 않는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  3. 제2항에 있어서, 상기 오퍼랜드표는 오퍼랜드 비트 아키텍쳐 유형의 있을 수있는 각 조합마다 엔트리를 포함하고 있고, 상기 오퍼랜드표에서의 각 엔트리는 적어도 하나의 변환 연산을 표시하며, 상기 명령을 변환하는 단계는,
    상기 제1 비트 아키텍쳐의 상기 명령에서 각 오퍼랜드의 상기 비트 아키텍쳐 유형과 일치하는 오퍼랜드 비트 아키텍쳐 유형을 갖는 상기 오퍼랜드표에서 하나의 엔트리를 결정하는 단계와,
    상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐로 변환하기 위해 적어도 하나의 변환 연산을 수행하는 단계를 구비하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  4. 제3항에 있어서, 상기 제1 비트 아키텍쳐의 명령에서 각 오퍼랜드의 상기 비트 아키텍쳐 유형을 결정하는 단계는 상기 제1 비트 아키텍쳐의 각 명령의 성질에 관한 정보를 포함하는 사전을 처리하는 단계를 구비하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  5. 제3항에 있어서, 상기 적어도 하나의 변환 연산을 수행하는 단계는 상기 연산 코드가 상기 제2 비트 아키텍쳐임을 표시하기 위해 상기 연산 코드의 명칭을 변경하는 단계를 포함하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  6. 제3항에 있어서, 상기 적어도 하나의 변환 연산을 수행하는 단계는 상기 변환에 종속하는 명령의 하나의 오퍼랜드를 포함하는 레지스터가 상기 제2 비트 아키텍쳐임을 표시하기 위해 오퍼랜드를 포함하는 각 레지스터에 관한 정보를 포함하는 레지스터 상태표를 갱신하는 단계를 포함하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  7. 제6항에 있어서, 상기 레지스터 상태표는, 상기 변환에 종속하는 명령의 하나의 상기 오퍼랜드가 상기 제1 비트 아키텍쳐 내에 있고 상기 변환에 종속하는 명령의 다른 오퍼랜드가 상기 제2 비트 아키텍쳐 내에 있을 때, 상기 변환에 종속하는 명령의 하나의 오퍼랜드를 포함하는 레지스터가 상기 제2 비트 아키텍쳐 내에 있음을 표시하게 갱신되는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  8. 제3항에 있어서, 상기 오퍼랜드표의 각 엔트리는 상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐로 변환하기 위해 상기 적어도 하나의 변환 연산을 포함하는 대체표에 대한 포인터를 포함하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  9. 제1항에 있어서, 상기 제1 비트 아키텍쳐의 명령은 상기 제1 비트 아키텍쳐와 상기 제2 비트 아키텍쳐의 양쪽 내에 오퍼랜드를 가질 수 있는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  10. 제1항에 있어서, 상기 제1 비트 아키텍쳐는 32 비트 아키텍쳐이고 상기 제2 비트 아키텍쳐는 64 비트 아키텍쳐인 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 방법.
  11. 코드를, 연산 코드와 적어도 하나의 오퍼랜드를 갖는 제1 비트 아키텍쳐의 명령으로 변환하는 수단과,
    상기 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐로 변환하기 위한 정보를 포함하고 있는 변환표를 액세스하는 수단과,
    상기 변환표가 상기 제1 비트 아키텍쳐의 명령을 변경함을 표시하는 정보를 포함하고 있는 경우에 상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐의 대응 명령으로 변환하는 수단을 구비하고,
    상기 변환은 상기 제2 비트 아키텍쳐의 명령을 생성하기 위해 상기 제1 비트 아키텍쳐의 명령을 변경하는 변환 연산을 기초로 하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  12. 제11항에 있어서, 상기 변환표는 각 연산 코드마다 하나의 엔트리를 포함하고 있고, 각 연산 코드의 상기 엔트리는 변환이 수행되어야 하는 경우에 오퍼랜드표에 대한 포인터를 포함할 수 있으며, 상기 연산 코드에 대한 상기 엔트리가 하나의 오퍼랜드표에 대한 포인트를 포함하지 않는 경우에는 변환이 수행되지 않는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  13. 제12항에 있어서, 상기 오퍼랜드표는 오퍼랜드 비트 아키텍쳐 유형의 있을 수있는 각 조합마다 엔트리를 포함하고 있고, 상기 오퍼랜드표에서의 각 엔트리는 적어도 하나의 변환 연산을 표시하며, 상기 명령을 변환하는 수단은,
    상기 제1 비트 아키텍쳐의 상기 명령에서 각 오퍼랜드의 상기 비트 아키텍쳐 유형과 일치하는 오퍼랜드 비트 아키텍쳐 유형을 갖는 상기 오퍼랜드표에서 하나의 엔트리를 결정하는 수단과,
    상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐로 변환하기 위해 적어도 하나의 변환 연산을 수행하는 수단을 구비하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  14. 제13항에 있어서, 상기 제1 비트 아키텍쳐의 명령에서 각 오퍼랜드의 상기 비트 아키텍쳐 유형을 결정하는 상기 결정 수단은 상기 제1 비트 아키텍쳐의 각 명령의 성질에 관한 정보를 포함하는 사전을 처리하는 단계를 구비하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  15. 제13항에 있어서, 상기 적어도 하나의 변환 연산을 수행하는 수단은 상기 연산 코드가 상기 제2 비트 아키텍쳐임을 표시하기 위해 상기 연산 코드의 명칭을 변경하는 단계를 포함하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의명령으로 변환하는 시스템.
  16. 제13항에 있어서, 상기 적어도 하나의 변환 연산을 수행하는 수단은 상기 변환에 종속하는 명령의 하나의 오퍼랜드를 포함하는 레지스터가 상기 제2 비트 아키텍쳐임을 표시하기 위해 오퍼랜드를 포함하는 각 레지스터에 관한 정보를 포함하는 레지스터 상태표를 갱신하는 단계를 포함하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  17. 제16항에 있어서, 상기 레지스터 상태표는, 상기 변환에 종속하는 명령의 하나의 상기 오퍼랜드가 상기 제1 비트 아키텍쳐 내에 있고 상기 변환에 종속하는 명령의 다른 오퍼랜드가 상기 제2 비트 아키텍쳐 내에 있을 때, 상기 변환에 종속하는 명령의 하나의 오퍼랜드를 포함하는 레지스터가 상기 제2 비트 아키텍쳐 내에 있음을 표시하게 갱신되는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  18. 제13항에 있어서, 상기 오퍼랜드표의 각 엔트리는 상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐로 변환하기 위해 상기 적어도 하나의 변환 연산을 포함하는 대체표에 대한 포인터를 포함하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  19. 제13항에 있어서, 상기 제1 비트 아키텍쳐의 명령은 상기 제1 비트 아키텍쳐와 상기 제2 비트 아키텍쳐의 양쪽 내에 오퍼랜드를 가질 수 있는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  20. 제13항에 있어서, 상기 제1 비트 아키텍쳐는 32 비트 아키텍쳐이고 상기 제2 비트 아키텍쳐는 64 비트 아키텍쳐인 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 시스템.
  21. 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 데 이용하기 위한 제조 물품으로서, 상기 제조 물품은 적어도 하나의 컴퓨터 프로그램을 내장하고 있는 컴퓨터용 매체를 구비하며, 상기 적어도 하나의 컴퓨터 프로그램에 의해 상기 컴퓨터는,
    코드를, 연산 코드와 적어도 하나의 오퍼랜드를 갖는 제1 비트 아키텍쳐의 명령으로 변환하는 단계와,
    상기 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐로 변환하기 위한 정보를 포함하고 있는 변환표를 액세스하는 단계와,
    상기 변환표가 상기 제1 비트 아키텍쳐의 명령을 변경함을 표시하는 정보를 포함하고 있는 경우에 상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐의 대응 명령으로 변환하는 단계를 수행하고,
    상기 변환은 상기 제2 비트 아키텍쳐의 명령을 생성하기 위해 상기 제1 비트아키텍쳐의 명령을 변경하는 변환 연산을 기초로 하는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 데 이용하기 위한 제조 물품.
  22. 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는데 사용하기 위한 적어도 하나의 데이터 구조를 포함하고 있는 컴퓨터 판독 가능 데이터 전송 매체로서,
    상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐로 변환하기 위한 정보를 포함하는 적어도 하나의 변환표와,
    상기 제2 비트 아키텍쳐의 대응 명령을 생성하기 위해 상기 제1 비트 아키텍쳐의 상기 명령을 변경하는 연산을 표시하는 변환 연산을 구비하고,
    상기 변환표가 상기 제1 비트 아키텍쳐의 명령을 변경함을 표시하는 정보를 포함하고 있는 경우에 상기 제1 비트 아키텍쳐의 명령은 상기 제2 비트 아키텍쳐의 상기 명령으로 변환되는 것인, 컴퓨터 판독 가능 데이터 전송 매체.
  23. 제22항에 있어서, 적어도 하나의 오퍼랜드표를 더 구비하고, 상기 변환표는 각 연산 코드마다 하나의 엔트리를 포함하고 있고, 각 연산 코드의 상기 엔트리는 변환이 수행되어야 하는 경우에 하나의 오퍼랜드표에 대한 포인터를 포함할 수 있으며, 상기 연산 코드에 대한 상기 엔트리가 하나의 오퍼랜드표에 대한 포인트를 포함하지 않는 경우에는 변환이 수행되지 않는 것인, 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의 명령으로 변환하는 것은 컴퓨터 판독 가능 데이터 전송 매체.
  24. 제23항에 있어서, 상기 오퍼랜드표는 오퍼랜드 비트 아키텍쳐 유형들의 가능한 각 조합마다 엔트리를 포함하고 있고, 상기 오퍼랜드표 내의 각 엔트리는 적어도 하나의 변환 연산을 표시하며, 상기 오퍼랜드표는 오퍼랜드 비트 아키텍쳐의 유형들이 상기 제1 비트 아키텍쳐의 명령 내에 있는 각 오퍼랜드의 비트 아키텍쳐 유형들과 일치하는 하나의 엔트리를 포함하고 있고, 적어도 하나의 변환 연산은 상기 제1 비트 아키텍쳐의 명령을 상기 제2 비트 아키텍쳐로 변환하도록 수행되는 것인, 컴퓨터 판독 가능 데이터 전송 매체.
  25. 제24항에 있어서, 상기 제1 비트 아키텍쳐의 각 명령의 성질들에 관한 정보를 포함하고 있는 사전을 더 구비하고,
    상기 제1 비트 아키텍쳐의 명령의 각 오퍼랜드의 비트 아키텍쳐 유형들을 결정하는 것은 각 명령의 성질들을 결정하기 위해 상기 사전을 처리하는 것을 구비하는 것인, 컴퓨터 판독 가능 데이터 전송 매체.
  26. 제24항에 있어서, 레지스터 상태표를 더 구비하고,
    상기 레지스터 상태표는, 상기 변환에 종속하는 명령 내의 하나의 오퍼랜드를 포함하고 있는 레지스터가 상기 제2 비트 아키텍쳐 내에 있음을 표시하기 위한 오퍼랜드를 포함하는 각 레지스터에 관한 정보를 포함하며,
    상기 레지스터 상태표는 상기 적어도 하나의 변환 연산을 수행할 때 갱신되는 것인, 컴퓨터 판독 가능 데이터 전송 매체.
KR1020010001884A 2000-01-14 2001-01-12 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의명령으로 변환하는 방법, 시스템, 프로그램 및 데이터 구조 KR20010086328A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/483,203 US6662361B1 (en) 2000-01-14 2000-01-14 Method, system, program, and data structures for transforming an instruction in a first bit architecture to an instruction in a second bit architecture
US09/483,203 2000-01-14

Publications (1)

Publication Number Publication Date
KR20010086328A true KR20010086328A (ko) 2001-09-10

Family

ID=23919104

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010001884A KR20010086328A (ko) 2000-01-14 2001-01-12 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의명령으로 변환하는 방법, 시스템, 프로그램 및 데이터 구조

Country Status (7)

Country Link
US (1) US6662361B1 (ko)
EP (1) EP1118933A3 (ko)
JP (1) JP3606561B2 (ko)
KR (1) KR20010086328A (ko)
CN (1) CN1127688C (ko)
SG (1) SG99328A1 (ko)
TW (1) TW494361B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10120663B2 (en) 2014-03-28 2018-11-06 Intel Corporation Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024666B1 (en) * 2002-01-28 2006-04-04 Roy-G-Biv Corporation Motion control systems and methods
US20010032278A1 (en) 1997-10-07 2001-10-18 Brown Stephen J. Remote generation and distribution of command programs for programmable devices
US8032605B2 (en) 1999-10-27 2011-10-04 Roy-G-Biv Corporation Generation and distribution of motion commands over a distributed network
US6880069B1 (en) * 2000-06-30 2005-04-12 Intel Corporation Replay instruction morphing
US7904194B2 (en) 2001-02-09 2011-03-08 Roy-G-Biv Corporation Event management systems and methods for motion control systems
US6819270B1 (en) * 2003-06-30 2004-11-16 American Express Travel Related Services Company, Inc. Method and system for universal conversion of MCC, SIC or other codes
US20060064503A1 (en) 2003-09-25 2006-03-23 Brown David W Data routing systems and methods
US8027349B2 (en) 2003-09-25 2011-09-27 Roy-G-Biv Corporation Database event driven motion systems
CN100345136C (zh) * 2004-06-30 2007-10-24 中国科学院计算技术研究所 使64位处理器兼容32位桥接芯片的系统及转换装置
US7437541B2 (en) * 2004-07-08 2008-10-14 International Business Machiens Corporation Atomically updating 64 bit fields in the 32 bit AIX kernel
CN100388195C (zh) * 2006-02-22 2008-05-14 北京金山软件有限公司 一种64位视窗操作系统下获取函数参数的方法及系统
US9652210B2 (en) * 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US8832679B2 (en) * 2007-08-28 2014-09-09 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
WO2017153815A1 (en) * 2016-03-11 2017-09-14 Lzlabs Gmbh Load module compiler
CN107423084B (zh) * 2017-04-24 2021-02-02 武汉斗鱼网络科技有限公司 程序修改方法及装置
CN109491659B (zh) * 2017-09-11 2022-06-21 龙芯中科技术股份有限公司 指令转换方法和装置
JP2019095952A (ja) * 2017-11-21 2019-06-20 ソニーセミコンダクタソリューションズ株式会社 プロセッサ、情報処理装置および処理方法
US20220374236A1 (en) * 2021-05-20 2022-11-24 Huawei Technologies Co., Ltd. Method and system for optimizing address calculations
KR20240025509A (ko) * 2022-08-17 2024-02-27 베리실리콘 마이크로일렉트로닉스 (상하이) 컴퍼니 리미티드 크로스 링크 방법, 장치, 전자 설비 및 저장 매체

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04500132A (ja) * 1988-07-29 1992-01-09 ハンター・システムズ・ソフトウェア・インク 2進符号の機械語のプログラムを別の2進符号の機械語に翻訳する機械処理
DE69231451T2 (de) 1991-03-11 2001-05-10 Mips Tech Inc Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum
EP0651321B1 (en) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5577231A (en) * 1994-12-06 1996-11-19 International Business Machines Corporation Storage access authorization controls in a computer system using dynamic translation of large addresses
US5826089A (en) 1996-01-04 1998-10-20 Advanced Micro Devices, Inc. Instruction translation unit configured to translate from a first instruction set to a second instruction set
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US5819067A (en) 1996-02-23 1998-10-06 Advanced Micro Devices, Inc. Computer system configured to translate a computer program into a second computer program prior to executing the computer program
US5875318A (en) 1996-04-12 1999-02-23 International Business Machines Corporation Apparatus and method of minimizing performance degradation of an instruction set translator due to self-modifying code
US5710731A (en) * 1996-05-07 1998-01-20 International Business Machines Corporation Combined adder and decoder digital circuit
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
US5875336A (en) 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US6009261A (en) * 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6199202B1 (en) * 1998-01-06 2001-03-06 Hewlett-Packard Company Method and apparatus for the inter-operation of differing architectural and run time conventions
US6018799A (en) * 1998-07-22 2000-01-25 Sun Microsystems, Inc. Method, apparatus and computer program product for optimizing registers in a stack using a register allocator

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10120663B2 (en) 2014-03-28 2018-11-06 Intel Corporation Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture

Also Published As

Publication number Publication date
US6662361B1 (en) 2003-12-09
JP2001216169A (ja) 2001-08-10
CN1127688C (zh) 2003-11-12
TW494361B (en) 2002-07-11
JP3606561B2 (ja) 2005-01-05
EP1118933A3 (en) 2004-04-07
EP1118933A2 (en) 2001-07-25
CN1306245A (zh) 2001-08-01
SG99328A1 (en) 2003-10-27

Similar Documents

Publication Publication Date Title
KR20010086328A (ko) 제1 비트 아키텍쳐의 명령을 제2 비트 아키텍쳐의명령으로 변환하는 방법, 시스템, 프로그램 및 데이터 구조
KR101150003B1 (ko) 소프트웨어 개발 툴 생성 방법
US4667290A (en) Compilers using a universal intermediate language
KR20050081869A (ko) 소프트웨어 원자화를 위한 뷰
WO1992015937A1 (en) Automatic flowgraph generation for program analysis and translation
US4445173A (en) Improved system for saving and restoring state in call and return operations
US6684394B1 (en) Relocation format for linking with relocation instructions containing operations for combining section data
US7779391B2 (en) Method of employing instructions to convert UTF characters with an enhanced extended translation facility
US4503492A (en) Apparatus and methods for deriving addresses of data using painters whose values remain unchanged during an execution of a procedure
US6687899B1 (en) Relocation format for linking
US8392888B2 (en) Method of translating n to n instructions employing an enhanced extended translation facility
US10152307B2 (en) Specifying user defined or translator definitions to use to interpret mnemonics in a computer program
Sadolewski et al. Compiler and virtual machine of a multiplatform control environment
Costa et al. YAP User’s manual
EP2711837A1 (en) Methods and apparatuses for endian conversion
US5774694A (en) Method and apparatus for emulating status flag
US4447879A (en) Improved apparatus for representing the size of an element in a compound data item and deriving addresses and lengths using the element size
Zhirkov Low-Level Programming
Dave et al. Compilers: principles and practice
Cameron et al. Bitwise data parallelism with llvm: The icgrep case study
Lombardi System handling of functional operators
Bastien et al. Moving to two's complement sign representation
Sato Module Generation in Multi-Stage Programming
US7155709B2 (en) Displaying user readable information during linking
Jeon LLVM-IR based Decompilation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E801 Decision on dismissal of amendment
E601 Decision to refuse application