KR950006619B1 - 번역 코드 실행용의 개선된 에러 기록 방법 및 시스템 - Google Patents

번역 코드 실행용의 개선된 에러 기록 방법 및 시스템 Download PDF

Info

Publication number
KR950006619B1
KR950006619B1 KR1019920702758A KR920702758A KR950006619B1 KR 950006619 B1 KR950006619 B1 KR 950006619B1 KR 1019920702758 A KR1019920702758 A KR 1019920702758A KR 920702758 A KR920702758 A KR 920702758A KR 950006619 B1 KR950006619 B1 KR 950006619B1
Authority
KR
South Korea
Prior art keywords
address
computer program
instructions
instruction
program
Prior art date
Application number
KR1019920702758A
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
Priority claimed from US07/666,025 external-priority patent/US5307504A/en
Application filed by 디지탈 이큅먼트 코오포레이숀, 로날드 이. 마이릭 filed Critical 디지탈 이큅먼트 코오포레이숀
Application granted granted Critical
Publication of KR950006619B1 publication Critical patent/KR950006619B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • 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
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

내용 없음.

Description

[발명의 명칭]
번역 코드 실행용의 개선된 에러 기록 방법 및 시스템
[도면의 간단한 설명]
제1도는 응용 프로그램이 (a.) 제1컴퓨터 시스템(X로서 지정되고 제1명령 세트를 가짐)에 의해 실행을 위해 생성되어, (b.) 비교적 축소된 명령세트를 갖는 다른 컴퓨터 시스템(Y로 지정됨)에 의한 실행을 위해 번역되는 일반적인 방식을 나타내는 전체 기능 블록도이다.
제2도는 적합한 X-Y변환 프로그램 및 X-Y변환 프로그램이 입력 X응용 코드로부터 실행 가능한 Y응용 코드를 X명령 입상(granularity)을 갖고서 발생하도록 실행되도록 하는 범용 컴퓨터 시스템에 대한 일반화된 기능 블록도이다.
제3도는 제2도에 도시된 X-Y변환 프로그램에 대한 일반적 순서도이다.
제4도는 X코드 변환으로부터 얻어져서 실행을 위한 Y컴퓨터로 적재되는 Y응용 코드와 X명령 입상의 보존을 보장하도록 Y코드의 실행을 감독하는 명령 입상 제어(IGC) 프로그램을 갖는 Y 컴퓨터 시스템의 기능 블록도이다.
제5a도 및 제5b도는 IGC 프로그램에 수행된 적합한 기능 단계를 나타내는 순서도이다.
제6도는 X-Y코드 명령 변환 및 그에 대한 비동기 사건의 관계를 심볼화한 도면이다.
제7도는 예외 상황에 응답하기 위한 Y컴퓨터의 하드웨어에 대한 블록도이다.
제8도는 제7도의 하드웨어에 의해 수행된 동작 및 Y컴퓨터에 의해 수행된 오퍼레이팅 시스템 예외 상황 구동기 루우틴의 순서도이다.
제9도는 Y컴퓨터용 사용자 모드 예외 상황 루우틴에 의해 수행된 절차에 대한 순서도이다.
제10도는 X응용 코드의 Y응용 코드로의 변환시 발생되어 본 발명의 에러 보고 방법을 수행할 때 Y코드 명령의 어드레스로서 주어진 X코드 명령의 어드레스를 얻는데 사용되는 X-Y어드레스 상관 테이블의 개략도이다.
제11도는 X응용 코드 및 Y응용 코드의 명령들 간의 교신과, 제10도의 어드레스 상관 테이블에 저장된 X어드레스 및 Y어드레스를 나타내는 개략도이다.
제12도는 X응용 코드의 Y응용 코드로의 변환시 발생되어 본 발명의 양호한 방법을 실행하는데 사용되는 경계 명령 비트 맵의 개략도이다.
제13도는 본 발명의 적합한 방법을 실행함에 있어 제10도의 X-Y어드레스 상관 테이블 및 제12도의 경계 명령 비트 맵을 사용하기 위한 절차의 순서도이다.
제14도는 X응용 프로그램에 대한 소스 코드의 번역시 발생된 디버그 정보의 블록도이다.
제15도는 에러가 X응용 코드의 명령중 하나와 관련됨을 표시하도록 제14도의 디버그 정보를 사용하기 위한 절차의 순서도이다.
[발명의 상세한 설명]
[번역 코드 실행용의 개선된 에러 기록 방법 및 시스템]
본 출원은 Scott G. Robinson 및 Richard L. Sites씨의 1991. 3. 7.자 출원된 “IMPROVED SYSTEM AND METHOD FOR PRESERVING INSTRUCTION GRANULARITY FOR TRANSLATED PROGRAM CODE”란 명칭의 미국 출원 제07/666,025호의 일부 계속 출원이다.
관련 출원에 대한 참고 문헌-본 명세서에서 참고로 하는 특허 출원은 다음과 같다.
Scott G. Robinson, Richard Sites 및 Richard Witek씨에 의해 1991.3. 7.자로 출원된 “IMPROVED SYSTEM AND METHOD FOR PRESERVING INSTRUCTION STATEATOMICITY FOR TRANSLATED PROGRAM CODE”란 명칭의 미국 출원 제07/666,071호.
본 양수인에게 양도되고 코드 번역에 관계된 다음의 특허 출원 또한 참고로 한다.
Richard L. Sites씨에 의해 1991. 3. 7.자 출원된 “'BRANCH RESOLUTION VIA BACKWARD SYMBOLIC EXECUTION”란 명칭의 출원 제07/666,070호.
Richard L. Sites씨에 의해 1991. 3. 7.자 출원된 “LOCATION PROGRAM CODE BY SUCCESSIVE CODE EXECUTION AND INTERPRETATION”란 명칭의 출원 제07/666,216호.
Richard L. Sites씨에 의해 1991. 3. 7.자 출원된 “USE OF STACK DEPTH TO INDENTIFY MACHINE CODE MISTAKES”란 명칭의 출원 제07/666,210호.
Richard L. Sites씨에 의해 1991. 3. 7.자 출원된 “CROSS-IMAGE REFERENCING OF PROGRAM CODE”란 명칭의 출원 제07/666,223호.
Thomas R. Benson씨에 의해 1991. 3. 7.자 출원된 “USE OF STACK DEPTH TO INDENTIFY ARCHITECTURE AND CALLING STANDARD”란 명칭의 출원 제07/666,083호.
Thomas R. Benson씨에 의해 1991. 3. 7.자 출원된 “REGISTER USAGE TRACKING TO SUPRORT COMPILED 32-BIT CODE IN 64-BIT ENVIRONMENT”란 명칭의 출원 제07/666,084호.
Thomas R. Benson씨에 의해 1991. 3. 7.자 출원된 “MAPPING ASSEMBLY LANGUAGE ARGUMENT LIST REFERENCES IN TRANSLATING CODE FOR DIFFERENT MACHINE ARCHITECTURES”란 명칭의 출원 제07/666,085호.
Thomas R. Benson씨에 의해 1991. 3. 7.자 출원된 “TRACKING CONDITION CODE IN TRANSLATING CODE FOR DIFFERENT MACHINE ARCHITECTURES”란 명칭의 출원 제07/666,082호.
Daniel L. Murphy씨에 의해 1991. 3. 7.자 출원된 “LINKING OF PROGRAM UNIT AT PROGRAM ACTIVATION”란 명칭의 출원 제07/666,023호.
Richard L. Sites씨에 의해 1991. 3. 7.자 출원된 “AUTOMATIC FLOWGRAPH GENERATION FOR PROGRAM ANALYSIS AND TRANSLATION”란 명칭의 출원 제07/666,196호.
본 양수인에게 양도된 다음의 특허 출원을 참고로 한다.
Mark A. Herdge, James A. Wooldrige, Scott G. Robinson, Ronald F. Brender 및 Michael V. Iles씨에 의해 1991. 3. 7.자 출원된 “IMPROVED SYSTEM AND METHOD FOR EXECUTING MULTIPLE CODES IN A MULTI-ARCHITECTURE ENVIRONMENT WITH CODE DEBUGGING CAPABILITY”란 명칭의 출원 제07/666,039호.
Daniel L. Murphy씨에 의해 1991. 3. 7.일자 출원된 “SYSTEM AND METHOD FOR AUTOMATICALLY INTERFACING CALL CONVENTIONS BETWEEN TWO DISSIMILAR PROGRAM UNITS”란 명칭의 출원 제07/666,028호.
James A. Wooldridge, Ronald F. Brender 및 Henry N. Grieb, Ⅲ씨에 의해 1991. 3. 7.자 출원된 “IMPROVED SOFTWARE DEBUGGING SYSTEM AND METHOD ESPECIALLY ADAPTED FOR CODE DEBUGGING WITHIN A MULTI-ARCHITECTURE ENVIRONMENT”란 명칭의 출원 제 07/665,888호.
Mark A. Herdeg 및 Michael V. Iles씨에 의해 1991. 3. 7.자 출원된 “IMPROVED SIMULATOR SYSTEM AND METHOD ESPECIALLT ADAPTED FOR CODE EXECUTION IN A MULTI-CODE EXECUTION AND DEBUGGING SYSTEM WITHIN A MULTI-ARCHITECTURE ENVIRONMENT”란 명칭의 출원 제07/666,022호.
Mark A. Herdeg, Scott G. Robinson, Ronald F. Brender 및 Michael V. Iles씨에 의해 1991. 3. 7.자 출원인 “IMPROVED SYSTEM AND METHOD FOR DETECTING CROSS-DOMAIN INSTRUCTION CALLS AND DATA REPERENCES ESPECIALLY ADAPTED FOR CODE INTERFACE JACKETING IN A MULTI-CODE EXECUTION AND DEBUGGING SYSTEM WITHIN A MULTI-ARCHITECTURE ENVIRONMENT”란 명칭의 출원 제07/666.072호.
Ronald F. Brender 및 Michael V. Iles씨에 의해 1991. 3. 7.자 출원된 “IMPROVED SYSTEM AND METHOD FOR JACKETING CROSS-DOMAIN CALLS IN A MULTI-CODE EXECUTION AND DEBUGGING SYSTEM WITHIN A MULTI-ARCHITECTURE ENVIRONMENT”란 명칭의 출원 제07/666,752호.
Robert V. Landau, James E. Jhonson 및 Michael V. Iles씨에 의해 1991. 3. 7.자 출원된 “FASTER PROCESS FOR DEVELOPING NEW COMPUTER SYSTEMS EMPLOYING NEW AND BETTER PROCEDURES FOR SOFTWARE DEVELOPMENT AND TESTING”란 명칭의 출원 제07/665,886호.
[발명의 배경]
1. 기술 분야
본 발명은 상이한 컴퓨터 시스템상에서의 실행을 위한 프로그램 코드를 적응시키기 위한 시스템 및 방법에 관한 것으로서, 특히 원 프로그램의 번역 실행시 원프로그램의 에러를 보고하기 위한 시스템 및 방법에 관한 것이다.
2. 배경 기술
초창기의 컴퓨터 프로그래밍에서는, 컴퓨터 프로그램용 명령이 마이크로 코드 레벨로 발생되었다. 소프트웨어 기술의 진보 및 성장에 따라, 명령 복잡도(instruction complexity)를 위해 설계된 하드웨어 아키텍춰를 갖는 컴퓨터에 의해 실행될 수 있는 단일 복합 명령에 더 많은 작업(task)이 조합되었다.
명령 복잡도의 증가는 컴퓨터 하드웨어 비용 및 성능의 개발 환경면에서 가격/성능의 이익을 증가시켰다. 그 결과, 복합 명령 세트 코드(CISC)가 널리 인정 받게 되었다.
그러나, 명령 복잡도의 증가에 따라, 고속 실행을 위한 시스템 하드웨어를 설계하는 것이 더욱 어려워졌다. 그 대신, 서로 관계된 축소 명령 세트 코드(RISC) 컴퓨터 하드웨어 아키텍춰와 결합되는 RISC와 상당히 개선된 시스템 가격/성능을 얻게하는 메카니즘으로서 인정받게 되었다.
RISC 시스템은 일반적으로 소정의 동작을 지시하는데에 보다 간단한 기본 명령을 사용한다. 단일 RISC 명령은 정상적으로는 기껏해야 단일 액세스 메모리를 갖는 단일 동작을 특정한다. 더우기, RISC 시스템은 정상적으로 각 기본 명령에 대한 레지스터를 제공한다. 따라서, RISC 명령 세트중의 명령들은 마이크로 코드보다 높은 레벨로 된다.
전형적인 CISC 시스템에서는, 단일 명령이 복잡한 동작 순서를 특정할 수 있고 또 메모리에 대한 다수의 직접 액세스를 행할 수 있다. 따라서, CISC 명령에 의해 수행된 동작은 수개의 RISC 명령을 필 할 수도 있다.
RISC 시스템은 일반적으로 이용 가능한 하드웨어 가격 및 성능에 대하여 보다 신속한 시스템 동작, 보다 나은 전체 시스템 성능 및 보다 낮은 시스템 가격을 제공하는 최적화된 하드웨어 및 소프트웨어의 타협(tradeoff)으로 설계된다.
CISC 시스템의 RISC 시스템으로의 변환에 있어 한가지 장애 요소는 CISC 시스템을 위해 개발되었으나 RISC 시스템에는 일반적으로 이용될 수 없는 대규모 소프트웨어 라이브러리(libraries)의 존재이다. 컴퓨터 시스템 사용자가 새로운 컴퓨터 시스템을 얻는 것을 선택한 경우, 사용자의 주요 고려 사항중 하나는 사용자의 응용 프로그램 라이브러리가 새로운 컴퓨터 시스템에서의 사용을 위해 사용 또는 변환될 수 있는가의 여부 및 그 라이브러리를 교환하는데 드는 가격이다. 따라서, RISC 컴퓨터 시스템을 통해 보다 나은 가격/성능을 얻고자 하는 컴퓨터 시스템 사용자의 경우, RISC 컴퓨터 실행을 위한 사용자의 응용 프로그램 라이브러리를 적응(adapting) 또는 “이동”(migraing)시키기 위한 경제적이고 효과적인 메카니즘이 제공되어야 하는 것이 대단히 중요하다.
프로그램 이동을 위해 사용자에게 몇가지 선택이 가능하다. 재번역 또는 재코드화 기술이 이용될 수 있지만, 이러한 기술은 상세한 기계 독립성을 갖지 않거나 혹은 매뉴얼 프로그래밍 수정에 의해 제거된 기존의 기계 독립성을 갖는 FORTRAN과 같은 고레벨 언어로 쓰여진 프로그램을 이동시키는데 사용된다. 또한, 재번역 또는 재코드화시, 사용자가 전형적으로 프로그램 수정 및 프로그램의 절차 보장에 관한 모든 책임을 갖게 된다.
이와는 달리 해석 절차(interpretation procedure)가 사용될 수 있지만, 이 방법의 단점은 실질적으로 프로그램 성능이 저하된다는 점이다. 구체적으로, 해석 절차는 하나의 컴퓨터를 동작시켜 주제 명령(subject instruction)의 스트림(다른 형태의 컴퓨터에 대한 명령들임)을 읽어내서 각 주제 명령에 대하여 지시된 동작을 수행하는 소프트웨어 프로그램이다. 이러한 절차는 전형적으로 단일 주제 명령을 해석하도록 하나의 컴퓨터에 대하여 10 내지 100개의 기계 명령을 실행한다. 따라서, 해석 절차는 하나의 컴퓨터에 대하여 기능적으로 동등한 코드의 실행을 지시하는 것에 비해 실질적으로 프로그램 성능이 저하되게 한다.
그러나, 가장 효율적이고 유효한 이동은 코드 변환이다. 코드 변환시, 기존의 프로그램으로부터 각 명령은 행선 기계(destination machine)의 언어로 하나 또는 그 이상의 명령으로 번역된다. 따라서, CISC 프로그램의 RISC 프로그램으로의 변환, 또는 보다 일반적으로 변환된 코드가 비교적 축소된 명령세트를 갖도록 하는 프로그램 변환은 변환중인 코드의 각 명령에 대하여 변환된 코드의 “다중”또는 “다수의”명령을 필요로 한다.
CISC의 RISC로의 코드 변환시 생기는 문제점은 변환된 프로그램의 실행이 에러로 인해 중지할 때, 에러에 관한 정보가 보통 RISC 머신의 상태에 근거한다는 점이다. 그러나, 고레벨 CISC 소스 코드와 관련된 디버깅 프로그램은 에러에 관한 정보가 CISC 머신의 상태에 근거한다고 가정한다. 예를 들어, 디버깅 프로그램은 CISC 소스 코드가 CISC 목적 코드로 번역될 때 발생된 디버그 정보를 사용한다. 디버그 정보는 전형적으로 심볼(ASCII) 명칭을 숫자로 된 CISC 프로그램 및 데이타 어드레스와 관련시키는 정보를 포함한다. 디버깅 프로그램은 이 심볼 명칭 정보를 사용하여 프로그래머로 하여금 선택된 심볼 명칭에 의해 특정된 어드레스에서 CISC 머신내의 메모리 내용을 검사할 수 있도록 한다. 디버깅 정보는 또한 전형적으로 CISC 소스 코드의 행 번호를 대응하는 CISC 목적 코드의 숫자 어드레스와 관련시키는 역추적 정보(traceback information)를 포함한다. CISC 머신에서 CISC 프로그램의 실행시 에러가 발생할 때, CISC 머신의 동작 시스템은 CISC 머신내의 하드웨어 레지스터를 읽어내서 에러가 생기게 한 CISC 명령의 어드레스를 판별한다. 그 동작 시스템은 이 어드레스를 에러 발생의 원인이 된 CISC 소스 코드의 행 번호를 프로그래머에게 보고하도록 역추적 정보를 참조하는 에러 보고 프로그램으로 통과시킨다.
CISC 소스 코드의 번역과 관련된 디버깅 프로그램은 CISC 목적 코드 어드레스, CISC 명령 및 CISC 머신내의 하드웨어에 근거하기 때문에, 그 프로그램은 RISC 머신에 대한 번역된 프로그램의 실행시 CISC 소스 코드의 디버깅을 행하지 않는다. RISC 머신에 대한 대응하는 RISC 목적 프로그램이 실행시 CISC 소스코드를 디버깅하는 것은 CISC 소스 프로그램을 RISC 목적 코드로 직접 번역함으로써 발생된 디버그 정보를 참조하는 디버그 프로그램에 의해 행해질 수 있지만, 이 기술은 CISC 소스 코드의 재번역을 필요로 한다. 더우기, 어떤 경우에는, CISC 소스 코드가 손실 또는 파괴되므로 재번역이 불가능하게 된다.
[발명의 개요]
개략적으로 말하여, 제1컴퓨터 프로그램이 제2컴퓨터 프로그램을 얻기 위해 변환되었던 상황에 있어서, 본 발명은 제2컴퓨터 프로그램의 실행시 발생된 에러가 제1컴퓨터 프로그램의 내용에 보고될 수 있게 한다. 이것은 에러가 발생할 때 제2컴퓨터 프로그램의 실행을 중지하고 ; 에러의 원인이 된 제2컴퓨터 프로그램 명령의 어드레스인 제1어드레스를 결정하고 ; 그 제1어드레스로부터 제2컴퓨터 프로그램의 명령이 번역되어졌던 제2컴퓨터 프로그램 명령의 어드레스를 결정하고, 어드레스가 발생된 것을 보고하고, 에러가 제1컴퓨터 프로그램의 명령과 관련됨을 지시하도록 제2어드레스를 사용함으로써 행해진다.
바람직하기로는, 제2어드레스는 제1컴퓨터 프로그램이 소스 코드로부터 번역될 때 발생된 역추적 및 심볼 명칭 정보를 참조함으로써 제1컴퓨터 프로그램의 명령과 관련됨을 지시하는데 사용된다. 역추적 정보는 소스 코드로부터 번역된다. 역추적 정보는 제1컴퓨터 명령이 번역되어졌던 소스 코드의 행 번호를 지시하도록 참조된다. 심볼 명칭 정보는 에러와 관련된 심볼 명칭 가령 제1프로그램의 명령을 포함하는 루우틴의 명칭 또는 그 명령에 의해 사용된 변수등을 표시하도록 참조된다.
양호한 실시예에서, 제1프로그램 명령의 어드레스는 어드레스 상관 테이블 및 경계 명령 비트 맵을 참조함으로써 제2프로그램 명령의 어드레스로부터 결정된다. 어드레스 상관 테이블은 각기 제1프로그램의 각 명령의 어드레스와 상기 각 명령으로부터 번역되었던 제2프로그램의 명령 세트중 제1명령의 어드레스를 갖는 엔트리(entry : 입구)를 포함한다. 제1프로그램의 각 명령으로 번역되었던 제2프로그램의 명령 세트중 제1명령 세트는 “경계 명령”(boundary instruction)으로 일컬어진다. 제2프로그램의 경계 명령은 경계 명령 비트 맵내의 플래그(flag : 표지)에 의해 제2프로그램의 다른 명령과 구별된다. 제2프로그램의 제1어드레스에 대응하는 제1프로그램 명령의 제2어드레스를 찾아내기 위해서, 어드레스 상관 테이블이 제1어드레스에 대하여 검색되어, 그 테이블로부터 제2어드레스를 직접 찾아내거나 혹은 제1어드레스보다 작은 제2프로그램의 가장 큰 어드레스를 찾아내게 된다. 만일 제2어드레스가 테이블로부터 직접 찾아지지 않으면, 경계 명령 비트 맵이 제1어드레스와 상기 가장 큰 어드레스 사이의 경계 명령의 수를 계수하면서 주사된다. 이어서 제2어드레스는 상기 가장 큰 어드레스를 포함하는 테이블 엔트리의 어드레스에서 명령을 시작하는 이와 동수의 제1프로그램의 명령을 분석하면서 명령 어드레스 포인터를 진행시킴으로써 찾아지게 된다.
본 발명의 다른 목적 및 장점은 첨부 도면을 참조로한 다음의 상세한 설명을 통해 보다 명백해질 것이다.
본 발명은 다양한 수정 및 변형이 가능하지만, 도면에서 특정 실시예만을 예시하고 본 명세서에서 상세히 설명할 것이다. 그러나, 본 발명을 기재된 특정 실시예로 제한하고자하는 것은 아니며, 오히려 본 발명은 부속 청구의 범위에 의해 정의된 바와 같은 본 발명의 범위에 속하는 모든 변형, 등가 및 수정 형태를 포함한다.
[양호한 실시예의 설명]
제1도에 도시한 바와 같이, 소스 코드로 쓰여진 응용 프로그램(10)은 X컴퓨터 시스템(12)에서의 실행을 위해 사용자 프로그램 라이브러리에 담겨진 다수의 응용 프로그램중 하나이다. X컴퓨터 시스템(12)에 대한 하드웨어 아키텍춰는 프로그램(10) 또는 사용자 라이브러리내의 다른 응용 프로그램의 실행 가능한 형태를 생성해내는데 사용되는 X명령 세트와 동작하기에 적합하다.
Y컴퓨터 시스템(20)과 사용하기 위한 프로그램(10)을 적응시키기 위해서, 프로그램(10)의 실행 가능한 형태가 Y컴퓨터 시스템(20)의 하드웨어 아키텍춰가 적응되어지는 Y명령 세트를 사용하여 Y실행 가능 코드(22)로서 제공되는 것이 필요하다.
Y명령 세트는 일반적으로 X명령 세트가 사용되는 것 보다 소수의 기본 명령을 사용하며 X코드의 Y코드로의 변환은 하나 내지 다수의 명령 변환을 필요로 한다. X명령 세트는 CISC 명령 세트일 수 있고 Y명령 세트는 RISC 명령 세트일 수 있다. 예를 들어, 제1도에 예시 목적을 위해 상세히 나타냈지만, X시스템은 VAX아키텍춰를 사용하고 Y시스템은 Digital Equipment Corporation내에서 RISC 아키텍춰라 불리는 축소 명령 세트 아키텍춰를 사용한다. 양 아키텍춰는 본 발명의 양수인인 Digital Equipment Corporation에 의해 제작된 장비에서 실현된다.
제1도에 도시한 바와 같이, 응용 프로그램(10)은 간접 통로(24) 또는 직접 통로(26)에서 Y실행 가능 코드(22)로 이동될 수 있다. 직접 이동은 Y컴파일러(28) 및 Y링커(30)을 사용하여 얻어진다. 그 결과의 Y실행 가능 코드는 참조 번호(22B)로 나타낸다.
Y컴파일러(28) 및 Y링커(30)가 개발되지 않았거나 이용될 수 없다면, 혹은 관련 단점 때문에 직접 이동통로(26)를 사용하는 것을 사용자가 선택하지 않았다면, 간접 통로(24)가 프로그램 투자 절약 및 시스템 성능 이득을 달성하도록 X응용 프로그램을 Y시스템으로 이동시키는데 사용될 수도 있다.
간접 통로에서는, 프로그램(10)의 X컴파일러(16) 및 X링커(18)에 의해 X컴퓨터 시스템(12)에 대한 실행 가능 코드(14)도 변환된다. 그 결과 X실행 가능 코드(14)는 X컴퓨터 시스템(12)을 동작시킬 수 있다. X-Y변환기(32)는 참조 번호(22A)로 표시된 X실행 가능 코드를 변환한다. 코드 변환은 Y코드가 축소 명령 세트를 기본으로 하고 있지만 정확히 명령 입상을 갖는 X코드 결과치를 얻기 위해 실행하도록 수행된다.
바람직하기로는, 코드 변환 시스템(40)(제2도)은 제1도의 변환기(32)를 구성하는데 사용된다. 변환 시스템(40)은 프로세서(42), 메모리 시스템(44) 및 X응용 코드(43)가 변환을 위해 입력되는 각종 입/출력 장치(도시생략)을 갖는 통상의 범용 컴퓨터를 포함한다.
변환 결과는 본 발명에 따라서 Y코드(45)로 발생되는데 그 Y코드(45)는 번역중인 코드의 확실한 보증을 보전하도록 특히 Y코드가 실제로 실행될 때 X명령의 입상의 보증된 보전을 용이하게 하도록 주문된다. 확실한 CISC 보증은 전기 관련 출원 PD 91-0063/1870-409에 보다 자세히 기재된 확실한 VAX보증으로 예시화된다.
메모리 시스템(44)은 여타 섹션(section)중에서 통상의 데이타 저장 섹션(46) 및 컴퓨터 오퍼레이팅 시스템이 저장되는 섹션(48)을 구비한다. X-Y코드 변환에 사용된 기본 요소는 다른 메모리 섹션에 저장된 변환 프로그램이다. 입력 X코드(43)는 X코드 리스트(62)로서 저장된다. 또한, Y명령의 시퀀싱을 제어하기 위해서, Y명령 하달 기준(52)이 저장되고 X-Y명령 코드 패턴(54)이 저장되어 명령 연산 특정자(instruction operation specifier) 및 명령 오페란드 특정자(instruction operand specifier)의 변환을 가능케 한다.
변환 프로그램(50)의 일반적 순서도가 제3도에 도시된다. 블록(60)에서, 연속 X명령은 프로그램 루우프(64)를 통해 처리하기 위해 저장된 X코드 리스트(62)로부터 순차적으로 입력된다.
루우프(64)에서, 기능 블록(66)은 현재 처리된 X명령에 대응하는 Y명령 연산 및 오페란드 특정자를 저장된 X-Y코드 패턴(54)(제2도)에 따라서 발생한다. 다음, 기능 블록(68)으로 나타낸 바와 같이, 그 결과의 Y코드는 이어지는 실제 Y코드 실행시 X명령 입상의 보전을 용이하게 하는 소정의 기준에 따라 순서를 이룬다.
X-Y명령 변환의 그래프 표시는 제6도에 도시된다.
모든 X명령은 일반적으로 입력을 얻고, 입력을 수정하고 그 결과를 일시 기억 장치에 두고 메모리 및 레지스터 기억 장소에 대한 상태 갱신을 제공하는 기본적 작업을 제공한다. X명령이 “다수의” Y명령으로 변환될 때, Y명령을 조직하는데 사용되는 순서 기준(52)은 현재 변환된 X명령에 대한 Y코드의 Y명령들을 다음과 같이 그룹지어 순서를 이루도록 하는 것이다.
1. Y코드의 명령들의 제1그룹 G1은 입력을 얻어 그 입력을 일시 기억 장치에 두는 것이다.
2. 코드의 명령들의 제2그룹 G2는 입력을 연산하고 수정된 결과치를 발생하여 그 결과를 일시 기억 장치에 저장하는 것이다.
3. Y코드의 명령들의 제3그룹 G3는 X상태(메모리 또는 레지스터)를 갱신하고 가능한 예외 상황으로 되게 하는 것(차후 정의됨)이다.
4. Y코드의 명령들의 제4그룹 G4(최종 그룹)은 X상태(메모리 또는 레지스터)를 갱신하고 가능한 예외 상황이 없도록 하는 것이다.
X상태는 X메모리 상태 및 X레지스터 상태를 포함한다. 제4도에 참조 번호(94)로 표시한 X메모리 상태 및 참조 번호(97)로 표시한 X레지스터 상태는 각각 X코드로 정의된 기억 장소로될 Y머신의 메모리 및 레지스터 구조를 참조한다. X메모리 및 레지스터 상태는 또한 X아키텍춰로 비춰질 수 있는 메모리 상태 및 레지스터 상태라고 불리울 수 있다.
X-Y코드 변환시의 적합한 Y명령 조직 기준을 실현한 결과, X명령 입상의 보전은 다음의 이유로 용이하게 된다.
1. 제6도의 도면에서 화살표(71)로 나타낸 Y명령의 처음 두 그룹 G1 및 G2의 실행시의 어느 때에나 Y 코드 실행 동안 비동기적 사건이 발생한다면, X명령 입상은 비동기적 사건 처리를 허용하여 X명령에 대한 입상 경계인 다음 백업(backup) Y명령(제6도의 Yo)로 Y명령 카운터 pc를 백업함으로써 유지된다.
재시도를 위해 현재의 Y코드 시퀀스의 실행을 중지함으로써 가능한 상태 액세스 실패가 현재의 Y코드 시퀀스의 어떤 그룹 G3 명령에서 피해지기 때문에 X명령 입상의 가능한 정지(breakage)가 피해질 수 있다. 그러나, Y코드 조직의 결과로서 일시 기억 장소만이 삭제되고 X명령 입상이 보전되는데 그 이유는 현재 Y코드 입상의 실행이 비동기 사건 처리후 명령 입상과 함께 처리될 수 있을 때까지 지연되었기 때문이다.
2. 그룹 G1 및 G2의 Y명령이 실행된 후 비동기적 사건이 발생되고 그룹 G3의 Y명령이 존재하지 않는다면, 혹은 제6도에서 화살표(73)으로 나타낸 바와 같이 그룹 G3에 포함된 모든 Y명령의 실행후 사건이 발생하였다면, 비동기식 사건의 처리는 그룹 G4 명령이 어떠한 상태 예외 상황도 가능하지 않다는 것을 미리 알고서 실행되므로 단시간 지연될 수 있다. 다음의 실행은 X명령 입상으로 제공된다.
다수의 Y명령이 그룹 G3(제6도에 도시되지 않음)에 포함되고 하나의 Y명령이 실행된 후 비동기식 사건이 발생하지만 그룹 G3의 적어도 하나의 Y명령이 실행되도록 남아 있는 경우, 메모리 분자수가 X명령 입상을 보전하기 위해 현재의 Y코드 입상내에 제공될 수 있다. 메모리 분자는 필수적으로 X명령의 모든 메모리 엑세스가 발생하거나 발생치 않는 것을 필요로 하며, 또한 X명령 입상을 위해 필요하다.
이러한 경우 뿐만아니라 다른 특수 경우에 그것을 달성하기 위한 메모리 분자 및 메카니즘은 동일자 출원된 관련 특허 출원 제1870-0409호에서 보다 상세히 설명된다. 간단한 하나의 기입 X명령이 취급되는 양호한 실시예에서는, X메모리 분자 및 X명령 입상이 동시에 달성된다.
제3도를 다시 참조하여, 기능 블록(68)에서 일단 Y명령 코드가 기재된 바와 같은 순서를 이루면, 불록(70)은 현재의 Y명령이 그것이 유출되었던 X명령에 대한 경계 또는 “X입상”표지인지의 여부를 판별한다. 연속적으로 처리된 Y명령에 대하여 검출된 yes 및 no비트가 기능 블록(72)에 의한 X경계 명령 비트맵에 기록된다.
테스트 블록(76)은 더 이상의 X명령이 변환 처리를 위해 리스트되는가의 여부를 검사한다. 만일 그렇다면, 루우프(64)가 반복된다. 모든 X명령이 변환되었을 때, 루우프 순환이 종료되고 기능 블록(76)으로 나타낸 바와 같이 축적된 Y코드가 출력을 위해 이용될 수 있다.
VAX아키텍춰로부터의 CISC 명령의 다음의 두가지 특정예가 본 발명에 따른 변환 기능을 예시화하고 있다.
[예 1]
INCL(R1)+
이 명령은 R1에 어드레스가 포함된 메모리의 장워드(longword)(4바이트 또는 32비트)에 1을 가산한다. 이어서 R1은 다음 장워드를 지시하도록 증분된다.
다음 RISC(Y) 코드는 기재된 조직 기준으로 동작하는 변환기로부터 발생된다.
1d1 r23,(r1) : 어드레서(R1)의 메모리의 내용 R23에 적재하라.
add1 r23,#1,r24 : R23을 1씩 증분시키고 R24에 두어라.
st1 r24(r1) : 어드레스(R1)의 메모리에 R24를 기억하다.
1da r1,4(r1) : 다음 장워드를 지시하도록 R1에 4씩 증분시켜라.
[예 2]
MOVL(R1)+, (R2)+
이 명령은 R1의 내용에 의해 어드레스된 메모리로부터의 장워드를 R2의 내용에 의해 어드레스된 장워드로 이동시킨다. R1 및 R2 양자는 그중 하나가 명령이 시작된 때를 지시한 후 다음 장워드를 지시하도록 증분된다. 다음 RISC(Y) 코드는 기재된 조직 기준으로 동작하는 변환기로부터 발생된다.
1d1 r23(r1) : (R1)의 메모리의 내용 R23에 적재하라.
st1 r23,(r2) : R23의 내용을 위치(R2)의 메모리에 기억하라.
1da r1,4(r1) : 다음 장워드를 지시하도록 R1을 4씩 증분시켜라.
1da r2,4(r2) : 다음 장워드를 지시하도록 R2을 4씩 증분시켜라.
보증된 X명령 입상을 갖는 결과 Y코드를 실행하기 위해, Y컴퓨터 시스템(20)(제1도)에 대응하는 Y프로세서(80)는 보전될 보증된 X명령 입상을 갖는 결과 Y코드의 실행을 위해 제공된다. 통상의 데이타 입/출력 장치(82) 및 간격 클럭(84)은 Y프로세서(80)에 결합되며, 때때로 이 장치들은 Y코드 실행으로부터 프로세서 동작의 일시적 전환을 요구하는 비동기적 사건을 구성하는 인터럽트(interrupt)를 발생한다(제4도). 보장된 X명령 입상이 없는 경우, 이러한 또는 다른 인터럽트에 의해 발생된 프로세서 전환은 Y코드 실행시에 X명령 입상의 파괴를 일으킬 수 있다. 이것은 전형적으로 인터럽트 후이나 메모리 상태 변화가 현재의 Y명령에 의해 이루어지기 전의 가능한 Y명령 입력 변화 때문에 발생한다.
제4도에 도시한 바와 같이, 블록(86)은 입력 장치로부터 Y프로세서(80)에 결합된 메모리 시스템(90)의 섹션(88)으로 발생된 Y코드를 입력시키는 것을 나타내며, 블록(87)은 Y코드 실행의 결과로서 출력 장치를 위해 발생된 데이타 출력을 나타낸다. 메모리 시스템(90)은 또한 통상의 데이타 섹션(92) 및 통상의 연산 시스템 섹션(94)을 포함한다.
명령 입상 제어 프로그램(IGC)(96)은 동일 참조 번호로 나타낸 다른 메모리 섹션에 저장된다. Y코드의 실행시의 IGC 프로그램(96)의 운용은 제5a도 및 제5b도에 도시된 순서도로 보다 자세히 나타낸다.
IGC 프로그램(96)(제5a도)는 비동기 사건의 발생으로 (98)로 나타낸 것처럼 시작한다. 일반적으로, 비동기 사건은 변환된 X코드로 비춰질 수 있는 X상태 변화를 잠정적으로 발생할 수 있는 인터럽트로 인한 Y명령 스트림의 전환으로 정의된다. 다시 Y명령의 X입상에 대한 비동기 사건의 관계를 나타내는 선도인 제6도를 참조하기로 한다. 다음은 Y명령 스트림과 비동기 사건의 상호 작용을 예시한 것이다.
정상 실행 : Y0 Y1 Y2 Y3 Y4 Y5
X 명령 경계ㆍㆍㆍㆍㆍㆍㆍㆍ∧ㆍㆍㆍ∧ㆍㆍ∧ㆍㆍㆍ
비동기 사건 실행 Y0 Y1 Y2 Y3 Y4 Y5
사건 발생ㆍㆍㆍㆍㆍㆍㆍㆍㆍ∧
IGC 프로그램(96)은 X상태에서의 어떤 다른 변화를 실행하기 전에 Y명령 어드레스를 Y1으로(Y2가 차후 정의될 바와 같이 가능한 예외 상황인 경우), 혹은 Y3로(Y2가 가능한 예외 상황을 갖지 않은 경우 Y2를 실행함으로써) 정렬시켜야 한다.
다시 제5a도의 순서도를 참조하면, 기능 블록(100)에 의해 비동기 사건의 처리시 일시적 홀드가 이루어지고, 기능 블록(102)에 의해 Y명령의 메모리 어드레스(PC-AE로 지정)가 비동기 사건이 기록되는 시점에서 처리된다.
다음 앞서 참조한 비트 맵 Y명령ㆍPC-AE가 X명령 경계인지의 여부를 판별하도록 블록(104)에 의해 검사된다. 만일 그렇다면, 테스트 블록(106)은 IGC 프로그램을 통로(107)을 거쳐 X코드 명령 입상을 파괴하지 않고 비동기 사건을 리쥼(resume)할 수 있도록 하는 블록(108)으로 향하게 한다.
만일 Y명령 PC-AE가 X명령 경계가 아니라면, 기능 블록(110)은 X명령 경계인 다음 이전 또는 다음 이후의 Y명령과 Y명령 카운터 PC를 정렬시킨다. 프로그램 통로(111)는 이어서 다시 X코드 명령 입상을 파괴하지 않고 전술한 바의 비동기 사건 처리를 위해 IGC 프로그램(96)에 의해 블록(108)로 이어진다. 이 경우에, 비동기 사건은 모든 Y명령이 X명령 입상내에서 실행되지 않은 시점에 발생되며, X명령 입상의 보전은 제5b도에서 보다 자세히 설명될 바와 같이 프로그램 블록(110)의 동작을 통해 달성된다. 제5a도에서의 표지 “A”및 “B”는 제5b도의 상세 블록이 제5a도의 순서도에서 알맞는 경우를 나타낸다.
제5b도에서, Y명령의 순방향 스캔은 X명령 경계인 다음 Y명령을 찾아내도록 프로그램 루우프(113)내에 기능 블록(112)에 의해 행해진다. 테스트 블록(114)은 각각 순방향으로 스캔된 Y명령을 검사하여 나머지 Y명령의 실행 이전에 인터럽트를 처리하는 것이 대응하는 X코드가 동일한 비동기 시간의 부과로써 실행되었더라면 생성되어야 할 결과와 다른 Y코드 실행 결과를 생성할 수 있을 것인지의 여부를 판별한다.
각각의 순방향 Y명령 테스트를 행함에 있어서, 테스트 블록(114)은 비동기 사건이 처리되도록 허용되고 이어서 Y코드의 실행이 취소되면 예외 상황 조건이 Y명령의 의도된 실행에 의해 생성될 것인지의 여부를 판별하는 것이 바람직하다. 일반적으로 명령은 그것이 완료될 수 없는 경우 예외 상황을 갖는다. 다음은 순방향 Y명령으로 식별되는 경우 X경계인 다음 선행 Y명령에 대한 Y코드 중지를 발생하는 일반적인 예외 상황의 분류이다.
1.) 액세스 제어 위반 또는 페이지 오류와 같은 메모리 관리 예외 상황.
2.) 부동점 오버플로우 오류 또는 영에 의한 제산의 오류와 같은 연산 예외 상황.
3.) 부적법한 연산 코드 또는 정지점 연산 코드와 같은 명령 예외 상황.
본 발명의 양호한 실시예에 있어서, 변환중인 코드에 대한 적용 가능한 예외 상황의 리스트는 실행시 IGC 프로그램에 액세스될 수 있는 기억 장치에 두어진다. 따라서 실행 판별은 기억된 예외 상황 리스트에 대하여 각각 순방향으로 스캔된 Y명령을 참조함으로써 행하여 진다.
다음은 예외 상황 케이스의 예이다.
공유 메모리 장소는 비동기 사건에 의해 증분된다.
INCL @#23은 장소(33)을 증분한다.
LDL R23,33(R31) : 장소(33)으로부터 R23을 적재하라.
LDA R23,1(R23) : R23의 내용에 1을 가산하라.
STL R23,33(R31) : R23의 결과를 장소(33)에 다시 기억하라.
비동기 사건이 LDA 및 STL 명령 사이에 발생하고 비동기 사건의 처리가 장소(33)을 증분하면, 사건 처리시 행해진 증분은 스트림이 STL 명령을 리쥼할때 없어지게 된다.
다음의 비예외상황 케이스의 예이다.
명령 INCL R1은 R1을 증분한다. RISC 명령은 다음과 같다.
LDA R1,1(R1) : R1을 증분하라.
여기서는 예외 상황을 위한 어떠한 기회도 존재하지 않는다. 순방향 스캔의 연속적인 Y명령을 테스트함에 있어 모든 스캔된 Y명령이 예외 상황을 나타내지 않는 경우(블록 116), 나머지 Y명령은 비동기 사건 처리가 전술된 바와 같이 X명령 입상을 정지시키지 않고 블록(108)(제5a도)에 의해 가능하게 되기 전에 실행된다. 한편, 순방향으로 스캔된 Y명령이 블록(118)에 의한 시험하에서 예외 상황을 보이는 경우에는, 기능 블록(118)은 Y프로그램 카운터를 X명령 경계인 다음 백업 Y명령으로 백업하며, 비동기 사건 처리가 X명령 입상을 정지시키지 않고 블록(108)(제5a도)에 의해 다시 가능하게 된다. 이러한 방법에 의해, X명령 입상의 정지 가능성 마저 피해지고 그에 따라 X명령 입상이 보증된다.
상태로의 기입을 갖지 않거나, 혹은 단지 하나의 정렬된 전체 장워드 또는 쿼드 워드(quad word) 기입을 갖는 명령을 변환하는 경우에, 바이트 또는 비정렬 기입 문제와 인터록 문제가 존재하지 않는다. 유일한 문제점은 전체 시퀀스를 실행하도록 나타나게 하거나 혹은 시퀀스의 어떤 것도 실행하도록 나타나지 않게 하는 것이다. 변환은 CISC 대 RISC 변환의 경우에 RISC 명령의 제1 및 제2그룹이 메모리 및/또는 레지스터 상태 갱신을 제외하고 CISC 명령의 모든 작업을 행하고 RISC 명령의 제3그룹이 정렬된 전체 장워드 또는 쿼드 워드의 영 또는 하나의 RISC 저장 명령을 포함하며 RISC 명령의 제4그룹이 단지 간단한 레지스터 이동을 포함하게끔 제약받는다.
제2명령 그룹이 완료되기 전에 인터럽트되는 변환된 시퀀스는 각 변환된 CISC 명령에 대한 코드의 시작을 표시하는 비트 테이블을 사용함으로써 시퀀스의 시작시에 다시 시작되게 된다. 제2명령 그룹이 완료된 후 그리고 제3명령 그룹이 완료되기 전에 인터럽트된 변환된 시퀀스는 간단한 레지스터 이동으로 제3명령 그룹을 완료하게 된다.
그 순 효과는 시퀀스가 중간에 어떤 다른 변환 시퀀스를 갖지 않고 시작부터 끝까지 실행하거나, 그룹 2의 완료전에 일시 정지되고 나중에 시작부터 재시도된다는 점이다. 이 경우 또한 단일 프로세서 머신에 대한 1 또는 2바이트 비인터록형 기입에 적용한다. 변환된 시퀀스는 상태 판독-수정-기입 시퀀스를 포함하고 단일 기입은 그룹 3의 명령이다.
본 발명은 구체적으로 X컴퓨터 프로그램의 변환인 Y컴퓨터 프로그램의 실행시 제1도의 Y컴퓨터 시스템을 동작시키는 방법에 관한 것이다. 다시 말하여, 본 발명은 구체적으로 소스 코드 프로그램(10)이 간접 통로(24)를 따라 Y실행 가능 코드로 이동될 때 에러를 보고하는 것에 관한 것이다. 이 상황에서, X컴파일러(16)에 의해 발생된 디버그 정보는 X실행 가능 코드의 명령의 어드레스를 포함한다. 그러나, 차후 설명될 바와 같이, 예외 상황 하드웨어 및 Y실행 가능 코드(22A)가 조직되어 Y코드 어드레스에 대하여 동작한다. 본 발명은 에러를 야기한 Y코드 명령의 제1 어드레스와 Y코드 명령이 번역되어졌던 X코드 명령의 제2 어드레스간의 연결부를 제공한다. 이 연결부는 Y프로세서(제4도의 80)의 하드웨어에서 예외 상황 신호로 시작되어 X코드 명령의 지시와 관련하여 에러를 보고하는 것으로 끝나는 에러 취급 절차에 사용된다.
이제 제7도로 돌아가면, 복수의 예외 상황 입략(131)중 어느 하나상의 각 예외 상황 신호에 응답하기 위한 Y프로세서(제4도의 80)내의 일반적으로 (130)으로 지정된 하드웨어가 도시되어 있다. 예를 들어, 예외 상황 신호는 하드웨어 고장, 메모리 액세스 명령에서 비롯된 메모리 예외 상황 및 연산 명령에서 비롯된 연산 논리 유니트(132)로부터의 연산 예외 상황을 나타내는 패리티 에러 신호를 포함할 수도 있다.
본 발명은 구체적으로 연산 논리 유니트(132)로부터의 연산 예외 상황과 같은 예외 상황을 발생하는 응용 프로그램 에러를 보고하는 것에 관계된다. 연산 예외 상황은 예컨대 정수 또는 부동점 오버플로우(그 결과가 미리 정해진 정수 또는 부동점 포멧으로 저장되기에는 너무 큼), 0에 의한 정수 또는 부동점 계산(공급된 계수가 0임) 및 부동점 언더플로우(그 결과가 미리 정해진 부등점 포멧으로 표현되기에는 너무 작음)를 포함한다.
연산 논리 유니트(132)는 연산 동작이 수행될 때마다 연산 예외 상황 조건의 존재를 검지한다. 그러나, Y코드 명령중 어떤것은 예외 상황 조건이 예외 상황 신호를 발생할 수 없게 하고, 다른 Y코드 명령이 예외 상황 신호를 발생하도록 연산 예외 상황 조건이 가능케 한다. 이러한 기능은 제7도에서 AND게이트(133)으로 예시되어 있다.
Y프로세서는 어떤 주어진 시간에서 예외 상황 입력중 하나에만 응답할 수 있다. 다수의 동시 예외 상황 신호의 상황을 취급하기 위해, 예외 상황 입력(131)은 신호중 하나를 선택하는 우선순위 인코더(priority encoder)(134)에 수신된다. 예외 상황 신호의 승인된 우선순위는 우선순위 인코더(134)에 의해 제공된 코드에 의해 표시된다.
예외 상황 입력(131)은 제어 로직(136)에 의해 인식된 예외 상황 신호를 제공하도록 OR게이트(135)에서 합성된다. 제어 로직(136)은 Y코드 명령의 실행을 일시적으로 중단하고 각 레지스터 또는 전송 게이트(137,138,139)로부터의 예외 상황에 속하는 데이타의 수집을 제어한다. 예외 상황에 속하는 데이타는 예외상황을 야기시킨 명령의 Y코드 어드레스(PC-AE)인 “예외 상황 PC”, 예외 상황을 야기시킨 명령의 실행시에 프로세서 상태를 나타내는 프로그램 상태 쟝워드인 “예외 상황 PSL”, 및 예외 상황의 타입을 정의하는 예외 상황 타입 정보를 포함한다. 연산 예외 상황의 경우에, 예컨대 연산 논리 유니트(132)는 연산 예외 상황 타입을 나타내는 코드를 제공한다. 우선순위를 갖는 예외 상황의 코드에 따라서, 멀티플렉서(140)는 우선순위 인코더(134)에 의해 선택된 예외 상황에 대한 예외 상황 타입 정보를 선택한다.
제어 로직(136)은 예외 상황 정보가 데이타 버스(141)상에 순차적으로 실려서 커널 스택 메모리(kernel stack memory)에 쌓이게 된다. 이어서, 우선순위 인코더(134)에 의해 선택된 예외 상황의 코드에 따라서, 각 예외 상황 벡터가 예외 상황 급송 테이블(142)로부터 읽혀져서 프로그램 카운터(143)에 적재된다. 이어서 제어 로직(136)이 프로그램 카운터(143)내의 예외 상황 벡터에서 시작하는 명령 실행을 시작한다.
이제 제8도로 돌아가면, 예외 상황 취급을 위해 처리 시스템 루우틴과 관련하여 제7도의 동작은 예시한 일반적으로 (150)으로 지정된 순서도가 도시된다. 제7도에서 전술한 바와 같이 예외 상황이 발생할 때 제7도의 하드웨어는 제8도의 단계(151)에 나타낸 바와 같은 명령 실행을 일시 정지하고, 이어서 단계(152)에 나타낸 바와 같이 예외 상황 PC, 예외 상황 PSL 및 예외 상황 타입 정보를 커널 모드 스택상에 둔 다음, 단계(153)에 나타낸 바와 같이 급송 테이블로부터의 각 예외 상황 벡터로써 프로그램 카운터를 적재한다. 이 경우에 예외 상황 벡터는 오퍼레이팅 시스템 “커널 모드”의 예외 상황 구동기이다.
오퍼레이팅 시스템 예외 상황 취급 루우틴은 단계(154)에서 예외 상황이 바로 오퍼레이팅 시스템이라기 보다는 사용자 프로그램에 의해 취급될 “사용자 모드”예외 상황인지의 여부를 검사함으로써 시작한다. 예를 들어 명령의 실행에 따라 발생하는 하드웨어 에러는 정상적으로 사용자 모드 에러는 아니고, 오퍼레이팅 시스템 단계(15)에서 예외 상황을 취급할 것이다. 사용자 모드 예외 상황의 경우, 단계(156)에서 커널 모드 스택상에 두어졌던 예외 상황 정보 및 Y프로세서의 범용 레지스터의 내용은 사용자 모드 스택상에 넣어진다. 최종적으로, 단계(157)에서, 실행은 예외 상황을 취급하기 위해 정의된 사용자 모든 예외 상황 루우틴으로 점프한다.
이제 제9도를 참조하면, 사용자 모드 예외 상황 루우틴의 순서도(160)가 도시되어 있다. 제1단계(161)에서, X머신 상태 정보가 수집된다. 다시말하여, X머신 상태의 일관된 모델이 Y머신 레지스터 및 사용자 메모리에 재구성된다. INCB-(R1) X코드 명령에 대한 Y코드의 특정예와 관련하여 차후 설명될 바와 같이, X코드 명령은 X머신 상태의 일관된 모델이 단계(161)에서, 재구성될 수 있게끔 Y코드로 변환된다. 다음, 단계(162)에서, 예외 상황을 갖는 Y코드 명령의 Y어드레스가 메모리 장소 Y_ADDR에 축적되므로 본 발명의 방법에 따른 에러 보고를 위해 나중에 이용될 수 있다.
단계(163) 및 (164)에서, Y어드레스 포인터 PC-AE는 제5a도의 단계(106) 및 (110)과 관련하여 상술한 바와 같이 X명령 입상 경계에 정렬된다. 이것은 조건 구동기 프로그램이 존재할 때 정렬된 Y어드레스 포인터 PC-AE로부터의 복구 및 계속된 프로그램 실행을 가능케한다. 단계(165)에서 예외 상황 타입에 대한 조건 구동기의 이용 가능성이 검사된다. 이러한 조건 구동기가 이용될 수 있을 경우, 단계(166)에서 실행은 조건 구동기로 분기하게 된다. 그렇지 않은 경우는, 단계(167)에서 사용자 모드 예외 상황 루우틴은 에러를 유발한 Y코드 명령이 변환되어 졌던 X코드 명령의 어드레스를 얻는다. A_DDR에 대응하는 X명령 어드레스를 얻는 적합한 방법이 제13도를 참조하여 이하에 추가로 설명된다.
단계(168)에서, 에러는 Y_ADDR에 대응하는 X어드레스를 갖는 X명령과의 관련성과 함께 보고된다. 적합한 에러 보고 절차에 대해서 제15도를 참조하여 차후에 설명될 것이다. 일반적으로, 단계(168)을 수행하기 위한 Y코드 프로그램은 X코드 응용 프로그램이 X코드 계산 시스템에 의해 실행될 때 발생하는 에러를 보고하기 위해 알려진 X코드 프로그램을 변환하고 또 에러를 유발한 명령의 어드레스로서 X명령의 어드레스를 참조하도록 변환된 프로그램을 약간 수정함으로써 얻어질 수 있으므로, 그것이 참조하는 다른 X머신 상태 정보다 단계(161)에서 X머신 상태 정보이다. 따라서, 본 발명의 중요한 장점은 기존의 X코드 버그 루우틴이 변환되어 Y코드 컴퓨터 시스템에서 동작된 변환된 응용 프로그램을 디버깅하기 위한 약간의 수정으로 사용될 수 있게 한다는 점이다.
본 발명의 양호한 실시에는 Y_ADDR에 대응하는 X명령 어드레스를 얻기 위한 X-Y어드레스 상관 테이블을 사용한다. 제10도에 도시한 바와 같이, X-Y어드레스 상관 테이블(170)은 각각 X코드 응용 프로그램의 각 명령의 어드레스(172) 및 X코드 응용 프로그램으로부터 변환되었던 Y코드 응용 프로그램의 대응하는 명령의 어드레스(173)을 갖는 엔트리(171)를 포함한다. 각 어드레스(172,173)는 예컨대 32비트의 장워드이다. 테이블의 각 X어드레스에 대한 명령이 Y코드 응용 프로그램의 일련의 Y코드 명령으로 변환될 때, 테이블 엔트리에서의 대응하는 Y코드 명령 어드레스는 그 일련의 명령중 제1명령의 어드레스이다.
X코드 응용 프로그램 명령의 모든 어드레스가 X-Y어드레스 상관 테이블(170)에 포함되지 않는 것이 바람직하다. 그렇지 않으면, 테이블이 매우 대규모로 되어 많은 양의 메모리 공간을 소모하고 테이블을 설치하기 위한 시간을 심하게 증가시키게 된다. 본 발명에 따라 에러를 보고하는데 사용되는 것외에도, 테이블(170)은 X코드 응용 프로그램의 부분적 변환을 실행할 때 X코드 해석기로부터 복귀하는데 사용된다. 완전한 변환이 항상 바람직하지만, X응용 프로그램내의 모든 X코드를 찾아내는데 있어서의 어려움으로 인해 완전한 변환을 수행하는 것이 항상 가능한 것은 아니다. 이 상황에서, X코드 해석기는 테이블(170)내의 X코드 어드레스가 X코드 응용 프로그램의 X코드의 기본 블록의 엔트리 지점인 한 변환시 Y코드의 실행으로 효과적으로 복귀할 수 있다. 각 기본 블록은 기본 블록의 시작시 하나의 알려진 엔트리 지점을 갖는 인접 명령의 시퀀스이다. 실행은 단지 기본 블록의 시작으로만 전달되고, 또 기본 블록의 종료로부터만 전달된다. 이러한 상황에서 해석의 동작과 부분적 변환에 관해서는 본 명세서에서 참고로하여야 할 Richard L. Sites씨에 의해 1991. 3. 7.자 출원된 “AUTOMATIC FLOWGRAPH GENERATION FOR PROGRAM ALALYSIS AND TRANSLATION”란 명칭의 관련 출원 제07/666,196호에 자세히 기재되어 있다.
이제 제11도를 참조하면, “MAIN”이라 불리는 X코드 응용 프로그램의 일부에 대한 예가 도시되는데, 그것은 프로그램의 기본 블록을 예시하도록 순서도(180)의 형태로 되어 있다. 제1기본 블록은 X-INSTRUCTION-1로 구성된다. 제2기본 블록은 X-INSTRUCTION-2, X-INSTRUCTION-3 및 X-INSTRUCTION-4로 구성된다. 제3기본 블록은 X-INSTRUCTION-5로 구성된다. 제4기본 블록은 X-INSTRUCTION-6으로 시작한다. 제11도에는 또한 X코드 명령과 그에 대응하는 Y코드 명령 Y-INSTRUCTION-1 내지 Y-INSTRUCTION-14간의 대응 관계 및 제11도의 X-Y어드레스 상관 테이블(170)의 X코드 및 Y코드 어드레스를 도시하고 있다.
본 발명의 양호한 실시예는 또한 Y_ADDR이 X-Y어드레스 상관 테이블의 엔트리에서 발견되지 않는 경우 전형적인 상황에서 Y_ADDR에 대응하는 X명령 어드레스를 얻기 위한 경계 명령 비트맵을 사용한다. 이제 제12도를 참조하면, 경계 명령 비트맵(185)에 대한 적합한 포맷이 도시되어 있다. 플래그(186)와 같은 단일 비트 플래그는 장워드(187)와 같은 장워드로 압축된다. 각 플래그는 하나의 Y코드 명령에 대응하고, 그 플래그는 대응하는 Y코드 명령이 경계 명령인 경우 변환기(제1도의 (32))에 의해 세트된다.
경계 비트맵(185)의 플래그는 또한 VAXX코드의 “인공적” 입상 경계를 표시하도록 세트된다. 인공적 입상 경계를 표시하는 것은 정확한 트랩(trap)을 갖지 않는 RISC Y코드 명령으로 “정확한”트랩을 갖는 VAXX코드 명령으로 변환할 경우 바람직하다. 예외 상황이 가능한가의 여부에 관계없이 예외 상황 조건이 발생할 때(예외 상황 신호를 발생하는 경우 제외), 명령의 실행이 동일 결과를 발생하면 명령은 정확한 트랩을 갖는다. 양호한 RISC 컴퓨터 시스템에서, 연산 명령은 추가 회로 복잡도 및 실행 사이클이 예외 상황 조건이 검출된 후 연산 명령의 결과를 완료하는데 필요하지만, 만일 프로그래머가 정확한 트랩을 모방(emulation)하길 원한다면 한쌍의 명령에 의해 행해질 수 있다. 그 동작은 먼저 디스에이블된 트랩을 갖는 명령으로 코드화 되고, 이어서 인에이블된 트랩을 갖는 명령으로 코드화된다. RISC Y코드에 대한 X명령 입상을 보전하기 위해, “드레인 트랩”(DRAI NT)명령은 인에이블된 트랩을 갖는 명령후에 코드화된다. 이와는 달리 RISC 컴퓨터 시스템이 인에이블된 트랩을 갖는 명령 다음에 이어지는 명령과 함께 인에이블된 트랩을 갖는 명령을 포함하여 동시에 하나 이상의 명령을 실행하기 때문에, DRAINT 명령은 트랩이 발생할 때 X머신 상태가 변환되었던 X코드 명령의 완성에 대응하는 일관된 X머신 상태를 형성하도록 제9도의 단계(161)에서 쉽게 수집될 수 있다.
X코드 명령을 인에이블된 트랩을 갖는 Y코드 명령을 포함하는 일련의 Y코드 명령으로 변환하는 것에 대한 특정예가 다음에 주어진다.
TITLE Increment Byte Example Code
;
; The following code duplicates : INCB-(R1)
; with VAXAtomicity and using a PAL routine to store the
; results.
;
; ===== > Geanular VAXBoundary
BIS R31,R31,R24 ; Clear Count of Interference
TOP : RS R31 ; Set Flag used by PAL routine to
test
; for Interrupts or Exception
LDQU R16,-1(R1) ; Most Likely Unaligned
LDA R17,-1(R1) ; Address used to align bytes
EXTBL R16,R17,R18 ; Byte to 0000000A
SLL R18,#56,R18 ; Byte to A0000000
BIS R31,#1,R19 ; Position Constant 1
SLL R19,#56,R19 ; 10000000
ADDQ R18,R19,R16 ; Incremented to B0000000(No Trap)
SRL R16,#56,R16 ; Byte to 0000000B
CALL_PAL TRN_STB ; Store Byte in R16 at address in R17
BEQ RO,INTERFERE ; Failed,Make this a forward Branch
to
; fool branch prediction
SUBQ R1,#1,R1 ; Perform Auto-Decrement(No Trap)
; ===== > Artificial Granular Boyndary
ADDQ/V R18,R19,R16 ; Redo Operation to Get Overflow Trap
; if any
DRAINT ; Wait for Trap if any
; ===== > Granular VAXBoundary
; ㆍ
; ㆍ
; ㆍ
; Check to see if loop iterations are too many
INTERFERE ; ADDQ R24,#1,r24; ; ; Increment
Interference
; ; Count
CMPULE R24,#255,R0 ; ; Been Here For A
While?
BNE R0,TOP ; ; To, Try Again
BUG_CHECK ; ; Abort....
.END
이 예에서 ADDQ 명령은 완전한 연산 결과를 제공하도록 디스에이블된 트랩과 함께 제1시간에서 발생되고, DRAINT 명령이 뒤따르는 인에이블된 트랩을 갖는 일련의 Y코드 명령의 종료 근처에 제2시간에서 발생한다. 인에이블된 트랩을 갖는 명령의 어드레스는 “인공적 입상 경계”로서 표시되고 그것의 대응하는 플래그는 경계 명령 비트맵에 세트된다. 이것은 X코드 명령의 결과(가능한 트랩 제외)가 인공적 입상 경계에서 완료되기 때문에 인터럽트의 취급시 개선된 성능을 제공한다. 따라서, 인터럽트가 바로 트랩전에 발생하는 경우, PC-AE는 제5a도의 단계(110)에서 인공적 입상 경계에 정렬되어 X코드 명령으로부터 변환된 Y코드의 시작시에 경계 명령에 완전히 지원하지 않고 X코드 명령 입상을 보전할 수 있다.
이제 제13도는 참조하면, Y코드 어드레스 Y_ADDR에 대응하는 X코드 명령의 어드레스를 찾아내도록 X-Y어드레스 상관 테이블(제10도의 (170)) 및 경계 명령 비트맵(제12도의 (185))을 사용하기 위한 적합한 절차의 순서도(190)가 도시되어 있다. 제1단계(191)에서, X-Y어드레스 상관 테이블은 Y_ADDR보다 작거나 동일한 테이블내의 가장 큰 Y코드 어드레스(Y_ADDR_MAX)를 찾아내도록 설치된다. 다음, 단계(191)에서, 메모리 장소 X-ADDRESS의 내용은 Y_ADDR_MAX를 포함하는 테이블 엔트리로부터의 X코드 어드레스와 동일하게 세트된다. 이어서, 단계(193)에서, 제13도의 절차는 Y_ADDR_MAX가 Y_ADDR에 일치할 경우 X_ADDRESS의 소정의 X코드 어드레스로써 완료된다. 그렇지 않으면, 단계(194)에서, 메모리 장소 COUNT의 내용은 Y_ADDR과 Y_ADDR_MAX사이의 Y코드 경계의수를 계수하는 것을 시작하도록 클리어된다. 이것은 경계 명령 비트맵을 스캔하는 동안 행해진다.
단계(195)에서, (Y_ADDR)에 대응하는 위치에 있는 비트맵의 플래그가 테스트된다. 플래그가 세트되면, 단계(196)에서, 다음 명령의 연산 코드(명령들이 Y명령 아키텍춰의 장워드인 4바이트이기 때문에 Y ADDR+4에서)가 DRAINT 명령인지의 여부를 검사하도록 감시된다. 그러한 경우라면, Y_ADDR에서의 명령은 인에이블된 트랩을 갖는 명령이 되고, 세트되었던 단계(194)에서 찾아졌던 대응 플래그는 인공적 입상 경계에 대한 플래그가 된다. 만일 플래그가 세트되지만 인공적 입상 경계에 대한 것이 아니라면 단계(197)에서, COUNT가 1씩 증분된다.
단계(198)에서, Y_ADDR은 하나의 RISC Y코드 명령의 길이에 대응하는 4바이트 만큼 증분된다. Y ADDR_MAX로 다시 스캔하는 것이 완료되었는지의 여부를 테스트하기 위해, Y_ADDR이 Y_ADDR MAX에 비교되고 Y_ADDR이 Y_ADDR_MAX보다 클 경우 단계(195)에서 스캐닝을 계속한다. 그렇지 않은 경우, 단계(200)에서 COUNT의 값이 0과 비교된다. 카운트가 0일때, X_ADDRESS의 값은 X코드 명령의 소정의 어드레스이고, 제9도의 단계(168)에서 실행을 계속한다. 그렇지 않을 경우, 단계(201)에서 X ADDRESS가 X코드 명령 디코드 포인터로서 사용되고 하나의 X명령을 분석함으로써 진행되며, 단계(202)에서 COUNT가 1만큼 감분된다. 단계(200,201,202)는 X명령의 카운트수가 분석될 때까지 반복되고, X ADDRESS는 소정의 어드레스로 진행하게 된다.
이제 제14도를 참조하면, X코드 응용 프로그램이 번역되었을 때 발생되었던 디버그 정보(22)의 블록도가 도시되어 있다. 주어진 X코드 명령 어드레스에 대응하는 소스 코드 행 번호에 대한 보고를 가능케하기 위해서, 디버그 정보는 역추적 정보를 포함한다. 역추적 정보는 예컨대 소스 코드의 각 행 번호와 관련되는 X코드 어드레스 범위에 대한 기록의 리스트를 포함한다. X코드 어드레스 범위는 소스 코드의 행으로부터 번역된 X코드 명령의 어드레스 범위를 나타낸다. 어떤 컴파일러는 링커(제1도의 (18))에 의해 함께 연결된 별도의 소스 코드 모듈을 번역한다. 이 경우에, 컴파일러는 모듈 명칭 및 관련 X코드 어드레스 범위를 포함한 기록을 갖는 모듈 테이블(도시생략)을 발생한다. 이 경우에 컴파일러는 또한 각 모듈에 대하여 역추적 정보의 별도의 테이블을 발생한다.
디버그 정보(220)는 또한 응용 소스 코드에서 발생한 심볼 명칭을 메모리 어드레스 및 X코드 응용 프로그램에서 참조되는 메모리 어드레스 및 스택위치와 관련시키는 심볼 명칭 정보를 포함한다. 심볼 명칭 정보(222)는 예컨대 소스 코드의 각 글로발 변수와 관련된 X코드 어드레스 범위에 대한 기록을 포함한다. 아울러, 각 루우틴은 루우틴의 각 로칼 변수에 대한 스택 프레임 오프셋의 다수의 기록을 그것과 관련시킬 수도 있다. 심볼 명칭 정보(222)의 기록은 ASCII 코드로된 심볼 명칭을 포함하는 스트링(string)(223)에 대한 포인터를 포함한다.
이제 15도를 참조하면, 에러 및 에러를 발생하는 X코드 명령의 X_ADDRESS와의 관련성을 보고하기 위해 제14도의 디버그 정보를 사용하는 적합한 절차가 도시되어 있다. 단계(231)에서 역추적 정보(제14도의 (221))의 기록은 X어드레스를 포함하는 어드레스 범위를 갖는 기록에 대하여 검색된다. 이러한 기록이 발견되면, 단계(232)에서 그 기록의 소스 코드 행 번호가 프로그래머 또는 사용자에게 보고된다. 단계(232)에서 에러의 타입이 예외 상황 타입 정보로부터 결정되어 프로그래머 또는 사용자에게 보고된다. 다음, 단계(234)에서 심볼 명칭 정보의 기록이 에러와 관련된 심볼 명칭을 찾기 위해 검색된다. 루우틴의 기록은 예컨대 X어드레스를 포함하는 어드레스 범위를 갖는 기록을 찾기 위해 검색된다. 관련 루우틴의 명칭이 발견되면, 단계(235)에서 그것이 그것의 타입 및 그것의 ASCII 스트링과 함께 보고된다. 단계(236)에서, 심볼 명칭이 서브 루우틴인 경우, 에러 보고는 단계(237)로 계속된다. 단계(237)에서 X머신 상태 정보의 스택(제9도의 단계(161)에서 수집됨)은 서브 루우틴으로 끝나는 호출 루우틴의 체인에 대한 추적을 제공하여, 프로그래머 또는 사용자에게 보고된다.
단계(234), (235)에서, 에러와 관련된 글로발 및 로칼 변수가 또한 발견되어 보고될 수도 있다. 오우버플로우 또는 언더플로우 연산 에러인 경우, 예를 들어, X어드레스의 X코드 명령과 소수의 다수 명령들이 연산 동작의 결과가 기억되어지는 글로발 또는 로칼 변수의 결과 어드레스를 식별하도록 검사될 수 있다. 0에 의한 계산 에러인 경우, 소수의 선행 X코드 명령이 제수가 발생된 글로발 또는 로칼 변수의 소스 어드레스를 식별하도록 검사될 수 있다.
제15도의 절차를 사용하여 보고될 수 있는 에러 메시지의 예는 다음의 내용을 포함한다.
LINE 200 INTEGER OVERFLOW IN SUBROUTINE “DIVIDEND” WHEN CALLED BY ROUTINE “MAIN” AT LINE 50, RESULT STORED IN LOCAL VARIABLE “TOTAL”.
LINE 500 FLOATING-POINT DIVIDE BY ZERO IN SUBROUTINE “STOCK” WHEN CALLED BY ROUTINE “MAIN” AT LINE 75, DIVISOR FROM GLOBAL VARIABLE “SHARES”.
상술한 바와 같이, 본 명세서에는 Y코드 응용 프로그램이 변환되어 졌던 X코드 응용 프로그램의 내용에 따라 Y코드 응용 프로그램을 실행하는 동안 발생된 에러를 보고하기 위한 방법 및 시스템이 기재되었다. 본 발명은 에러를 유발한 Y코드 명령에 대응하는 Y코드 명령의 실행 완료시 X코드 머신이 가졌던 상태에 관한 일관된 정보와 함께 제공된다. 따라서, X코드로부터 Y코드로 변환되고 X코드 응용 프로그램에 대한 소스 코드의 번역시 발생된 디버그 정보를 사용하는 디버그 루우틴에 의해 에러가 보고될 수 있다.

Claims (22)

  1. 제1컴퓨터 프로그램의 변환인 제2컴퓨터 프로그램의 실행시 발생하는 에러를 보고하기 위한 것으로서, 상기 제1컴퓨터 프로그램이 제1명령 아키텍춰에 근거하는 제1명령 세트로부터의 명령들을 포함하고, 상기 제1컴퓨터 프로그램의 상기 명령들이 각각 어드레스를 가지며, 상기 제2컴퓨터 프로그램이 제2명령 아키텍춰에 근거하는 제2명령 세트로부터의 명령을 포함하고, 상기 제2컴퓨터 프로그램의 상기 명령들이 각각 어드레스를 가지며, 상기 제1컴퓨터 프로그램의 상기 명령들중 어떤 것은 각각 상기 제2컴퓨터 프로그램의 상기 복수의 각 명령으로 변환되며, 상기 에러가 상기 제2컴퓨터 프로그램의 상기 명령들중 하나의 실행에 의해 야기되도록 하는, 에러 보고를 위해 디지탈 컴퓨터를 동작시키는 방법에 있어서, (a) 상기 에러가 발생할 때 상기 제2컴퓨터 프로그램의 실행을 중지하는 단계 ; (b) 상기 제2컴퓨터 프로그램의 상기 명령들중 하나의 제1어드레스를 결정하는 단계 ; (c) 상기 제2컴퓨터 프로그램의 상기 명령들중 하나가 변화되어졌던 상기 제1컴퓨터 프로그램의 상기 명령들중 하나의 제2어드레스를 상기 제1어드레스로부터 결정하는 단계 ; (d) 상기 에러가 상기 제1프로그램의 상기 명령들중 하나와 관련됨을 나타내도록 상기 제2어드레스를 사용하여 상기 에러가 발생하였다는 것을 보고하는 단계를 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  2. 제1항에 있어서, 상기 제1컴퓨터 프로그램이 소스 프로그램으로부터 번역되고, 상기 제1컴퓨터 프로그램이 번역될 때 역추적 정보가 발생되는데 상기 역추적 정보는 상기 소스 프로그램내의 소스 코드의 행들의 행수를 상기 소스 코드의 각 행들로부터 번역된 상기 제1컴퓨터 프로그램의 명령들의 어드레스와 관련시키며, 상기 제2어드레스가 상기 제1컴퓨터 프로그램의 상기 명령들중 하나가 번역되어졌던 소스 코드의 행 수를 표시함으로써 상기 에러가 상기 제1컴퓨터 프로그램의 상기 명령들중 하나와 관련됨을 나타내도록 상기 역추적 정보와 함께 사용되는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  3. 제1항에 있어서, 상기 제1컴퓨터 프로그램이 소스 프로그램으로부터 번역되고, 상기 제1컴퓨터 프로그램이 번역될 때 명칭 정보가 발생되는데 상기 심볼 명칭 정보는 상기 소스 프로그램의 심볼 명칭을 상기 제1컴퓨터 프로그램의 어드레스와 관련시키며, 상기 에러와 관련된 심볼 명칭을 식별하도록 상기 심볼 명칭을 참조하는 단계 및 상기 에러와 함께 상기 심볼 명칭을 보고하는 단계를 추가로 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  4. 제1항에 있어서, 상기 제2컴퓨터 프로그램을 얻도록 상기 제1컴퓨터 프로그램의 변환시 어드레스 상관 테이블이 발생되는데 상기 어드레스 상관 테이블은 각각 상기 제1컴퓨터 프로그램의 각 명령의 어드레스 및 상기 제2컴퓨터 프로그램의 명령 세트중 제1명령의 어드레스를 가지며, 상기 제2컴퓨터 프로그램의 상기 명령 세트는 상기 제1컴퓨터 프로그램의 상기 각 명령으로부터 변환되었던 것이며, 상기 제1어드레스로부터 제2어드레스를 결정하는 단계(c)가 상기 제1어드레스를 갖는 상기 어드레스 상관 테이블을 참조하는 단계를 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  5. 제4항에 있어서, 상기 제1컴퓨터 프로그램의 명령들의 모든 어드레스가 상기 어드레스 상관 테이블의 엔트리에 포함되는 것은 아니며, 상기 제2컴퓨터 프로그램을 얻도록 상기 제1컴퓨터 프로그램의 변환시 경계 명령 비트맵이 발생되는데 상기 경계 명령 비트맵은 상기 제1컴퓨터 프로그램의 각 명령으로부터 변환된 명령 세트들을 시작하는 상기 제2컴퓨터 프로그램의 명령들을 표시하며, 상기 제1어드레스로부터 제2어드레스를 결정하는 단계(c)가 상기 제1어드레스에 대응하는 상기 비트맵내의 제1위치와 상기 어드레스 상관 테이블의 엔트리에 포함된 상기 제2컴퓨터 프로그램의 어드레스에 대응하는 상기 비트맵내의 제2위치 사이에서 상기 경계 명령 비트맵을 스캔하는 단계, 명령들의 카운트를 얻도록 상기 제1위치와 상기 제2위치 사이에서 상기 비트맵내의 상기 경계 명령 비트맵 카운트 표시를 스캔할 때 상기 어드레스 상관 테이블의 상기 엔트리로부터 상기 제1컴퓨터 프로그램의 제3어드레스를 읽어내는 단계, 및 상기 제3어드레스 및 상기 명령들의 카운터로부터 상기 제2어드레스를 결정하는 단계를 추가로 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  6. 제5항에 있어서, 상기 제2어드레스가 상기 제3어드레스로부터 시작하는 선택된 수의 명령들을 분석함으로써 상기 제3어드레스로부터 결정되는데 상기 선택된 수의 명령들이 상기 명령들의 카운트에 근거하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  7. 제5항에 있어서, 상기 경계 명령 비트맵은 또한 인에이블된 트랩을 갖는 상기 제2컴퓨터 프로그램의 명령들에 대한 표시를 포함하며, 인에이블된 트랩을 갖는 상기 제2프로그램의 명령들에 대한 표시가 상기 명령들의 카운트를 얻도록 상기 제1위치와 상기 제2위치 사이에서 상기 비트맵의 상기 카운트 표시 동안 카운트되지 않는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  8. 제1컴퓨터 프로그램의 변환인 제2컴퓨터 프로그램의 실행시 발생하는 에러를 보고하기 위한 것으로서, 상기 제1컴퓨터 프로그램은 소스 프로그램을 번역함으로써 발생되고, 제1명령 아키텍춰에 근거하는 제1명령 세트로부터의 명령들을 포함하며, 상기 제1컴퓨터 프로그램의 상기 명령들이 각각 어드레스를 가지며, 상기 제2컴퓨터 프로그램이 제2명령 아키텍춰에 근거하는 제2명령 세트로부터의 명령을 포함하고, 상기 제2컴퓨터 프로그램의 상기 명령들이 각각 어드레스를 가지며, 상기 제1컴퓨터 프로그램의 상기 명령들중 어떤 것은 각각 상기 제2컴퓨터 프로그램의 상기 복수의 각 명령으로 변환되며, 상기 에러가 상기 제2컴퓨터 프로그램의 상기 명령들중 하나의 실행에 의해 야기되도록 하는, 에러 보고를 위해 디지탈 컴퓨터를 동작시키는 방법에 있어서, (a) 상기 에러가 발생할 때 상기 제2컴퓨터 프로그램의 실행을 중지하는 단계 ; (b) 상기 제2컴퓨터 프로그램의 상기 명령들중 하나의 제1어드레스를 결정하는 단계 ; (c) 상기 제2컴퓨터 프로그램의 상기 명령들중 하나가 변환되어졌던 상기 제1컴퓨터 프로그램의 상기 명령들중 하나의 제2어드레스를 상기 제1어드레스로부터 결정하도록 어드레스 변환 테이블을 참조하는 단계 ; (d) 상기 제1컴퓨터 프로그램의 상기 명령들중 하나가 번역되어졌던 상기 소스 프로그램의 소스 코드의 일부를 식별하도록 역추적 정보를 참조하는 단계 ; (e) 상기 에러가 발생되었음을 보고하고 상기 제1컴퓨터 프로그램의 상기 명령들중 하나가 번역되어졌던 상기 소스 프로그램의 상기 소스 코드의 일부를 표시하는 단계를 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  9. 제8항에 있어서, 상기 제1컴퓨터 프로그램이 번역될 때 심볼 명칭 정보가 발생되는데 상기 심볼 명칭 정보는 상기 소스 프로그램의 심볼 명칭을 상기 제1컴퓨터 프로그램의 어드레스와 관련시키며, 상기 에러와 관련된 심볼 명칭을 식별하도록 상기 심볼 명칭을 참조하는 단계 및 상기 에러와 함께 상기 심볼 명칭을 보고하는 단계를 추가로 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  10. 제8항에 있어서, 상기 심볼 명칭중 적어도 하나가 상기 제1컴퓨터 프로그램의 상기 명령들중 하나가 변환되어졌던 소스 코드를 포함하는 상기 소스 프로그램의 루우틴의 명칭인 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  11. 제8항에 있어서, 상기 어드레스 상관 테이블이 각각 상기 제1컴퓨터 프로그램의 각 명령의 어드레스 및 상기 제2컴퓨터 프로그램의 명령 세트중 제1명령의 어드레스를 갖는 엔트리를 포함하는데 상기 제2컴퓨터 프로그램의 상기 명령 세트는 상기 제1컴퓨터 프로그램의 상기 각 명령으로부터 번역된 것이며 ; 상기 제1컴퓨터 프로그램의 명령들의 모든 어드레스가 상기 어드레스 상관 테이블의 엔트리에 포함되는 것은 아니며 ; 경계 명령 비트맵이 상기 제2컴퓨터 프로그램을 얻도록 상기 제1컴퓨터 프로그램의 변환시 발생되고, 상기 제1컴퓨터 프로그램의 각 명령들로부터 변환된 명령 세트들을 시작하는 상기 제2컴퓨터 프로그램의 명령들을 표시하며 ; 상기 어드레스 변환 테이블을 참조하는 단계(c)가 상기 제1어드레스에 대응하는 상기 비트맵내의 제1위치와 상기 어드레스 상관 테이블의 엔트리에 포함된 상기 제2컴퓨터 프로그램의 어드레스에 대응하는 상기 비트맵내의 제2위치 사이에서 상기 경계 명령 비트맵을 스캔하는 단계와, 명령들의 카운트를 얻도록 상기 제1위치와 상기 제2위치 사이의 상기 비트맵의 상기 경계 명령 비트맵 카운트 표시를 스캔할때 상기 제1컴퓨터 프로그램의 제3어드레스를 상기 어드레스 상관 테이블의 상기 엔트리로부터 읽어내는 단계와, 상기 제3어드레스 및 상기 명령들의 카운트로부터 상기 제2어드레스를 결정하는 단계를 추가로 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  12. 제11항에 있어서, 상기 제2어드레스가 상기 제3어드레스로부터 시작하는 선택된 수의 명령들을 분석함으로써 상기 제3어드레스로부터 결정되는데 상기 선택된 수의 명령들이 상기 명령들의 카운트에 근거하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  13. 제11항에 있어서, 상기 경계 명령 비트맵은 또한 인에이블된 트랩을 갖는 상기 제2컴퓨터 프로그램의 명령들에 대한 표시를 포함하며, 인에이블린 트랩을 갖는 상기 제2프로그램의 명령들에 대한 표시가 상기 명령들의 카운트를 얻도록 상기 제1위치와 상기 제2위치 사이에서 상기 비트맵의 상기 카운트 표시 동안 카운트되지 않는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  14. 제1컴퓨터 프로그램의 변환인 제2컴퓨터 프로그램의 실행시 발생하는 에러를 보고하기 위한 것으로서, 상기 제1컴퓨터 프로그램이 제1명령 아키텍춰에 근거하는 제1명령 세트로부터의 명령들을 포함하고, 상기 제1컴퓨터 프로그램의 상기 명령들이 각각 어드레스를 가지며, 상기 제2컴퓨터 프로그램이 제2명령 아키텍춰에 근거하는 제2명령 세트로부터의 명령을 포함하고, 상기 제2컴퓨터 프로그램의 상기 명령들이 각각 어드레스를 가지며, 상기 제1컴퓨터 프로그램의 상기 명령들중 어떤 것은 각각 상기 제2컴퓨터 프로그램의 상기 복수의 각 명령으로 변환되며, 상기 변환은 어드레스 상관 테이블 및 경계 명령 비트맵을 발생하는데 상기 어드레스 상관 테이블은 각각 상기 제1프로그램의 명령의 각 어드레스 및 상기 각 명령으로부터 변환되어졌던 상기 제2프로그램의 명령 세트중 제1명령의 어드레스를 갖는 엔트리를 포함하며, 상기 제1컴퓨터 프로그램의 명령들은 모든 어드레스가 상기 어드레스 상관 테이블의 엔트리에 포함되는 것은 아니며 상기 경계 명령 비트맵이 상기 제1컴퓨터 프로그램의 각 명령들을 변환함으로써 얻어진 명령 세트들중 제1명령인 상기 제2프로그램의 명령을 표시하는 플래그를 포함하며, 상기 에러가 상기 제2컴퓨터 프로그램의 상기 명령들중 하나의 실행에 의해 야기되도록 하는, 에러 보고를 위해 디지탈 컴퓨터를 동작시키는 방법에 있어서, (a) 상기 에러가 발생할 때 상기 제2컴퓨터 프로그램의 실행을 중지하는 단계 ; (b) 상기 제2컴퓨터 프로그램의 상기 명령들중 하나의 제1어드레스를 결정하는 단계 ; (c) 상기 제2컴퓨터 프로그램의 상기 명령들중 하나가 변환되어졌던 상기 제1컴퓨터 프로그램의 상기 명령들중 하나의 제2어드레스를 상기 제1어드레스로부터 결정하는 단계로서, 상기 제2어드레스가 상기 테이블에서 상기 제1어드레스 보다 작은 상기 프로그램의 명령중 가장 큰 어드레스 및 상기 가장 큰 어드레스와 동일한 테이블 엔트리에서 상기 제1프로그램의 명령들의 대응하는 어드레스를 찾아내도록 상기 어드레스 상관 테이블을 참조하는 것과, 상기 제1어드레스와 상기 가장 큰 어드레스 사이의 어드레스를 갖는 상기 제2프로그램의 상기 플래그에 의해 지시된 명령의 카운트 수를 얻도록 상기 경계 비트 맵을 스캔하는 것과, 명령 어드레스 포인터를 전진시켜 상기 제2어드레스로 진행되게 하면서 상기 대응 어드레스로부터 시작하는 상기 제1프로그램의 명령들의 상기 카운트 수를 분석하는 것에 의해 결정되는 단계 ; (d) 상기 에러가 상기 제1프로그램의 상기 명령들중 하나와 관련됨을 나타내도록 상기 제2어드레스를 사용하여 상기 에러가 발생하였다는 것을 보고하는 단계를 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  15. 제14항에 있어서, 상기 제1컴퓨터 프로그램이 소스 프로그램으로부터 번역되고, 상기 제1컴퓨터 프로그램이 번역될 때 역추적 정보가 발생되는데 상기 역추적 정보는 상기 소스 프로그램내의 소스 코드의 행들의 행수를 상기 소스 코드의 각 행들로부터 번역된 상기 제1컴퓨터 프로그램의 명령들의 어드레스와 관련시키며, 상기 제2어드레스와 상기 제1컴퓨터 프로그램의 상기 명령들중 하나가 번역되어졌던 소스 코드의 행 수를 표시함으로써 상기 에러가 상기 제1컴퓨터 프로그램의 상기 명령들중 하나와 관련됨을 나타내도록 상기 역추적 정보와 함께 사용되는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  16. 제14항에 있어서, 상기 제1컴퓨터 프로그램이 소스 프로그램으로부터 번역되고, 상기 제1컴퓨터 프로그램이 번역될 때 심볼 명칭 정보가 발생되는데 상기 심볼 명칭 정보는 상기 소스 프로그램의 심볼 명칭을 상기 제1컴퓨터 프로그램의 어드레스와 관련시키며, 상기 에러와 관련된 심볼 명칭을 식별하도록 상기 심볼 명칭을 참조하는 단계 및 상기 에러와 함께 상기 심볼 명칭을 보고하는 단계를 추가로 포함하는 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  17. 제14항에 있어서, 상기 경계 명령 비트맵의 상기 플래그가 또한 인에이블된 트랩을 갖는 상기 제2컴퓨터 프로그램의 명령들을 표시하며, 인에이블된 트랩을 갖는 상기 제2프로그램의 상기 명령들이 상기 스캔 단계 동안 카운트되지 않은 것을 특징으로 하는 에러 보고를 위한 디지탈 컴퓨터의 동작 방법.
  18. 제1컴퓨터 프로그램의 변환인 제2컴퓨터 프로그램의 실행 동안 에러 발생을 보고하기 위한 것으로서, 상기 제1컴퓨터 프로그램은 소스 프로그램을 번역함으로서 발생되고, 제1명령 아키텍춰에 근거하는 제1명령 세트로부터의 명령들을 포함하며, 상기 제1컴퓨터 프로그램의 상기 명령들이 각각 어드레스를 가지며, 상기 제1컴퓨터 프로그램이 제2명령 아키텍춰에 근거하는 제2명령 세트로부터의 명령을 포함하고, 상기 제2컴퓨터 프로그램의 상기 명령들이 각각 어드레스를 가지며, 상기 제1컴퓨터 프로그램의 상기 명령들중 어떤 것은 각각 상기 제2컴퓨터 프로그램의 상기 복수의 각 명령으로 변환되며, 상기 에러가 상기 제2컴퓨터 프로그램의 상기 명령들중 하나의 실행에 의해 야기되도록 하는, 에러 발생을 보고하기 위한 디지탈 컴퓨터 시스템에 있어서, (a) 상기 에러가 발생할 때 상기 제2컴퓨터 프로그램의 실행을 중지시키기 위한 수단 ; (b) 상기 제2컴퓨터 프로그램의 상기 명령들중 하나의 제1어드레스를 결정하기 위한 수단 ; (c) 상기 제2컴퓨터 프로그램의 상기 명령들중 하나가 변환되어졌던 상기 제1컴퓨터 프로그램의 상기 명령들중 하나의 제2어드레스를 상기 제1어드레스로부터 결정하도록 어드레스 변환 테이블을 참조하기 위한 수단 ; (d) 상기 제1컴퓨터 프로그램의 상기 명령들중 하나가 번역되어졌던 상기 소스 프로그램의 소스 코드의 일부를 식별하도록 역추적 정보를 참조하기 위한 수단 ; (e) 상기 에러가 발생되었음을 보고하고 상기 제1컴퓨터 프로그램의 상기 명령들중 하나가 번역되어졌던 상기 소스 프로그램의 상기 소스 코드의 일부를 표시하기 위한 수단을 구비하는 것을 특징으로 하는 에러 발생 보고를 위한 디지탈 컴퓨터 시스템.
  19. 제18항에 있어서, 상기 에러와 관련된 심볼 명칭을 식별하도록 상기 심볼 명칭을 참조하여, 상기 에러와 함께 상기 심볼 명칭을 보고하기 위한 수단을 추가로 구비하는 것을 특징으로 하는 에러 발생 보고를 위한 디지탈 컴퓨터 시스템.
  20. 제18항에 있어서, 상기 어드레스 상관 테이블이 각각 상기 제1컴퓨터 프로그램의 각 명령의 어드레스 및 상기 제2컴퓨터 프로그램의 명령 세트중 제1명령의 어드레스를 갖는 엔트리를 포함하는데 상기 제2컴퓨터 프로그램의 상기 명령 세트는 상기 제1컴퓨터 프로그램의 상기 각 명령으로부터 번역된 것이며 ; 상기 제1컴퓨터 프로그램의 명령들의 모든 어드레스가 상기 어드레스 상관 테이블의 엔트리에 포함되는 것은 아니며 ; 경계 명령 비트맵이 상기 제2컴퓨터 프로그램을 얻도록 상기 제1컴퓨터 프로그램의 변환시 발생되고, 상기 제1컴퓨터 프로그램의 각 명령들로부터 변환된 명령 세트들을 시작하는 상기 제2컴퓨터 프로그램의 명령들을 표시하며 ; 상기 어드레스 변환 테이블을 참조하기 위한 상기 수단이 상기 제1어드레스에 대응하는 상기 비트맵내의 제1위치와 상기 어드레스 상관 테이블의 엔트리에 포함된 상기 제2컴퓨터 프로그램이 어드레스에 대응하는 상기 비트맵내의 제2위치 사이에서 상기 경계 명령 비트맵을 스캔하는 수단과, 명령들의 카운트를 얻도록 상기 제1위치와 상기 제2위치 사이의 상기 비트맵의 상기 경계 명령 비트맵의 표시를 카운트하는 수단과, 상기 제1컴퓨터 프로그램의 제3어드레스를 상기 어드레스 상관 테이블의 상기 엔트리로부터 읽어내는 수단과, 상기 제3어드레스 및 상기 명령들의 카운트로부터 상기 제2어드레스를 결정하는 수단을 추가로 구비하는 것을 특징으로 하는 에러 발생 보고를 위한 디지탈 컴퓨터 시스템.
  21. 제20항에 있어서, 상기 제3어드레스로부터 상기 제2어드레스를 결정하기 위한 상기 수단이 상기 제3어드레스로부터 시작하는 선택된 수의 명령들을 분석하기 위한 수단을 포함하는데 상기 선택된 수의 명령들은 상기 명령들의 카운트에 근거하여 선택되는 것을 특징으로 하는 에러 발생 보고를 위한 디지탈 컴퓨터 시스템.
  22. 제20항에 있어서, 상기 경계 명령 비트맵이 또한 인에이블된 트랩을 갖는 상기 제2컴퓨터 프로그램의 명령들의 표시를 포함하며, 상기 카운트를 위한 수단이 인에이블된 트랩을 갖는 상기 제2컴퓨터 프로그램의 명령들의 표시를 카운트하지 않는 것을 특징으로 하는 에러 발생 보고를 위한 디지탈 컴퓨터 시스템.
KR1019920702758A 1991-03-07 1992-03-03 번역 코드 실행용의 개선된 에러 기록 방법 및 시스템 KR950006619B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US07/666,025 US5307504A (en) 1991-03-07 1991-03-07 System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US07/700,770 US5432795A (en) 1991-03-07 1991-05-15 System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program
US700,770 1991-05-15
US666,025 1991-05-15
PCT/US1992/001714 WO1992015948A1 (en) 1991-03-07 1992-03-03 Improved error reporting for translated code execution

Publications (1)

Publication Number Publication Date
KR950006619B1 true KR950006619B1 (ko) 1995-06-19

Family

ID=27099354

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920702758A KR950006619B1 (ko) 1991-03-07 1992-03-03 번역 코드 실행용의 개선된 에러 기록 방법 및 시스템

Country Status (15)

Country Link
US (1) US5432795A (ko)
EP (2) EP0772122A3 (ko)
JP (1) JPH0734178B2 (ko)
KR (1) KR950006619B1 (ko)
AT (1) ATE155905T1 (ko)
AU (1) AU647263B2 (ko)
CA (1) CA2082064C (ko)
DE (1) DE69221041T2 (ko)
FI (1) FI102219B (ko)
IE (1) IE920742A1 (ko)
IL (1) IL100992A (ko)
MX (1) MX9200938A (ko)
NO (1) NO304459B1 (ko)
PT (1) PT100206B (ko)
WO (1) WO1992015948A1 (ko)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673390A (en) * 1992-09-03 1997-09-30 International Business Machines Corporation Method and system for displaying error messages
US5761510A (en) * 1995-11-07 1998-06-02 Microsoft Corporation Method for error identification in a program interface
US5974568A (en) * 1995-11-17 1999-10-26 Mci Communications Corporation Hierarchical error reporting system
US6000028A (en) * 1996-01-29 1999-12-07 Digital Equipment Corporation Means and apparatus for maintaining condition codes in an unevaluated state
US6226789B1 (en) 1996-01-29 2001-05-01 Compaq Computer Corporation Method and apparatus for data flow analysis
US6535903B2 (en) 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US5802373A (en) * 1996-01-29 1998-09-01 Digital Equipment Corporation Method for providing a pipeline interpreter for a variable length instruction set
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US5930509A (en) * 1996-01-29 1999-07-27 Digital Equipment Corporation Method and apparatus for performing binary translation
US6330691B1 (en) * 1996-02-23 2001-12-11 Institute For The Development Of Emerging Architectures Llc Use of dynamic translation to provide breakpoints in non-writeable object code
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US6067413A (en) * 1996-06-13 2000-05-23 Instantations, Inc. Data representation for mixed-language program development
US5754860A (en) * 1996-07-23 1998-05-19 Digital Equipment Corporation Method and apparatus for software testing using a differential testing technique to test compilers
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5987249A (en) 1996-08-27 1999-11-16 Numega Technologies IR code instrumentation
US6721941B1 (en) 1996-08-27 2004-04-13 Compuware Corporation Collection of timing and coverage data through a debugging interface
US5822511A (en) * 1996-09-03 1998-10-13 Motorola, Inc. Smart compare tool and method
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
US5812759A (en) * 1996-11-08 1998-09-22 Allen Bradley Company, Inc. Fault handling with loaded functions
US6071316A (en) * 1997-09-29 2000-06-06 Honeywell Inc. Automated validation and verification of computer software
EP0950216B1 (en) * 1997-10-02 2003-11-26 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6237137B1 (en) * 1997-10-15 2001-05-22 Dell Usa, L.P. Method and system for preventing unauthorized access to a computer program
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
JP3110367B2 (ja) * 1998-01-30 2000-11-20 日本電気アイシーマイコンシステム株式会社 ソースコンバータの処理方法及びソースコンバータ処理プログラムを記録したコンピュータ読み取り可能な記録媒体
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
JP3658514B2 (ja) * 1999-01-28 2005-06-08 富士通株式会社 帳票プログラム作成装置
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6698011B1 (en) * 1999-01-29 2004-02-24 Intel Corporation Isolation of program translation failures
AU3889200A (en) * 1999-03-15 2000-10-04 Smartsan Systems, Inc. System and method of event management and early fault detection
GB2348304B (en) * 1999-03-24 2003-07-09 Ibm Optimising Device Driver Debug Tracing
US6381737B1 (en) * 1999-04-23 2002-04-30 Sun Microsystems, Inc. Automatic adapter/stub generator
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6427232B1 (en) * 1999-06-10 2002-07-30 International Business Machines Corporation Functional debugger for debugging software programs
US6393606B1 (en) * 1999-06-25 2002-05-21 Agilent Technologies, Inc. Inverse assembler
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6553480B1 (en) * 1999-11-05 2003-04-22 International Business Machines Corporation System and method for managing the execution of instruction groups having multiple executable instructions
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
US6463578B1 (en) * 1999-11-23 2002-10-08 International Business Machines Corporation Systems, methods and computer program products for debugging java server page files using compiled java class file modifications
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US20030121027A1 (en) * 2000-06-23 2003-06-26 Hines Kenneth J. Behavioral abstractions for debugging coordination-centric software designs
GB2366399B (en) * 2000-08-26 2005-02-16 Ibm Recognition of command related items in object code
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US7251811B2 (en) * 2002-01-02 2007-07-31 Intel Corporation Controlling compatibility levels of binary translations between instruction set architectures
US7320121B2 (en) * 2002-08-01 2008-01-15 Sas Institute Inc. Computer-implemented system and method for generating embedded code to add functionality to a user application
US7296257B1 (en) * 2002-08-01 2007-11-13 Tymesys Corporation Techniques for exception handling by rewriting dispatch table elements
US7003762B2 (en) * 2002-08-01 2006-02-21 Sas Institute Inc. Computer-implemented exception handling system and method
US20050028146A1 (en) * 2003-08-01 2005-02-03 Quick Shawn G. Systems and methods for software and firmware testing using checkpoint signatures
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7496897B1 (en) 2004-03-17 2009-02-24 Timesys Corporation Multiple code sets for multiple execution contexts
US7546488B2 (en) * 2004-07-02 2009-06-09 Seagate Technology Llc Event logging and analysis in a software system
KR101244069B1 (ko) * 2005-04-20 2013-03-18 인터내셔널 비지네스 머신즈 코포레이션 프로그램 코드 변환시 정밀한 예외 핸들링을 위한 방법 및장치
GB2425372B (en) 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
US7716642B1 (en) 2005-05-03 2010-05-11 Emc Corporation Techniques for detecting coding incompatibilities
US7603669B2 (en) * 2005-09-27 2009-10-13 Microsoft Corporation Upgrade and downgrade of data resource components
US7676806B2 (en) * 2005-09-27 2010-03-09 Microsoft Corporation Deployment, maintenance and configuration of complex hardware and software systems
US7596720B2 (en) * 2005-09-27 2009-09-29 Microsoft Corporation Application health checks
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US20090271663A1 (en) * 2008-04-24 2009-10-29 Vining Robert G Providing detailed program state information for error analysis
JP5050019B2 (ja) * 2009-08-26 2012-10-17 株式会社東芝 ソースコード解析システム
US10216254B1 (en) * 2016-06-29 2019-02-26 Altera Corporation Methods and apparatus for selectively extracting and loading register states
US11809899B2 (en) 2019-06-28 2023-11-07 Intel Corporation Methods and apparatus for accelerating virtual machine migration
CN110765047B (zh) * 2019-10-24 2023-09-26 南方科技大学 基于指令集的数字信号控制系统、fpga模块及方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4500952A (en) * 1980-05-23 1985-02-19 International Business Machines Corporation Mechanism for control of address translation by a program using a plurality of translation tables
JPS61213935A (ja) * 1985-03-18 1986-09-22 Omron Tateisi Electronics Co 高級言語プログラムのデバック装置及びそのステップ方式
JPS6226535A (ja) * 1985-07-22 1987-02-04 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション プログラム内の変換テ−ブルの修正方法
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system
JPS62214443A (ja) * 1986-03-17 1987-09-21 Fanuc Ltd エミユレ−シヨン実行方法
US5133072A (en) * 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
JPH01503181A (ja) * 1987-03-24 1989-10-26 インシグニア・ソリューションズ・リミテッド コンピュータ
US4855905A (en) * 1987-04-29 1989-08-08 International Business Machines Corporation Multiprotocol I/O communications controller unit including emulated I/O controllers and tables translation of common commands and device addresses
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
EP0428560A4 (en) * 1988-07-29 1992-04-01 Hunter Systems Software, Inc. Machine process for translating programs in binary machine language into another binary machine language
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems

Also Published As

Publication number Publication date
DE69221041D1 (de) 1997-08-28
PT100206A (pt) 1994-05-31
NO304459B1 (no) 1998-12-14
DE69221041T2 (de) 1998-01-29
CA2082064C (en) 1996-12-31
NO924259L (no) 1993-01-06
FI925056A (fi) 1992-11-06
FI102219B1 (fi) 1998-10-30
AU1570592A (en) 1992-10-06
MX9200938A (es) 1993-03-01
EP0772122A2 (en) 1997-05-07
FI102219B (fi) 1998-10-30
JPH05505692A (ja) 1993-08-19
NO924259D0 (no) 1992-11-05
EP0772122A3 (en) 1997-05-14
ATE155905T1 (de) 1997-08-15
CA2082064A1 (en) 1992-09-08
WO1992015948A1 (en) 1992-09-17
AU647263B2 (en) 1994-03-17
EP0528024A1 (en) 1993-02-24
JPH0734178B2 (ja) 1995-04-12
US5432795A (en) 1995-07-11
IL100992A (en) 1995-12-31
IE920742A1 (en) 1992-09-09
PT100206B (pt) 1998-10-30
FI925056A0 (fi) 1992-11-06
EP0528024B1 (en) 1997-07-23

Similar Documents

Publication Publication Date Title
KR950006619B1 (ko) 번역 코드 실행용의 개선된 에러 기록 방법 및 시스템
US5307504A (en) System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US5636366A (en) System and method for preserving instruction state-atomicity for translated program
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
US9152531B2 (en) Post-compile instrumentation of object code for generating execution trace data
US5598560A (en) Tracking condition codes in translation code for different machine architectures
US5339238A (en) Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph
US5307492A (en) Mapping assembly language argument list references in translating code for different machine architectures
US8448152B2 (en) High-level language, architecture-independent probe program compiler
JPH03118635A (ja) ソースコード発展システム用増分コンパイラ
EP0528019B1 (en) Method and apparatus for computer code processing in a code translator
JPH0766342B2 (ja) プログラムテスト装置
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
Hart The advanced interactive debugging system (AIDS)
JP2662533B2 (ja) ロジック・アナライザ
JPH0410098B2 (ko)

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 19980428

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee