KR950012113B1 - 멀티 아키텍춰 환경내의 다중 코드 실행 및 디버깅 시스템에서 코드 인터페이스 자케팅에 특히 적합한 크로스-도메인 명령 호출 및 데이타 참조를 검출하기 위한 시스템 및 방법 - Google Patents
멀티 아키텍춰 환경내의 다중 코드 실행 및 디버깅 시스템에서 코드 인터페이스 자케팅에 특히 적합한 크로스-도메인 명령 호출 및 데이타 참조를 검출하기 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR950012113B1 KR950012113B1 KR1019920702761A KR920702761A KR950012113B1 KR 950012113 B1 KR950012113 B1 KR 950012113B1 KR 1019920702761 A KR1019920702761 A KR 1019920702761A KR 920702761 A KR920702761 A KR 920702761A KR 950012113 B1 KR950012113 B1 KR 950012113B1
- Authority
- KR
- South Korea
- Prior art keywords
- call
- domain
- jacket
- code
- routine
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Shielding Devices Or Components To Electric Or Magnetic Fields (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Regulation Of General Use Transformers (AREA)
Abstract
내용 없음.
Description
[발명의 명칭]
멀티 아키텍춰 환경내의 다중 코드 실행 및 디버깅 시스템에서 코드 인터페이스 자케팅에 특히 적합한 크로스-도메인 명령 호출 및 데이터 참조를 검출하기 위한 시스템 및 방법
[도면의 간단한 설명]
본 발명의 일부를 구성하는 첨부 도면은 본 발명의 한 실시예를 예시한 것으로서 명세서의 상세한 설명과 함께 본 발명의 목적, 장점 및 원리에 관한 설명을 제공한다.
제1도는 멀티 아키텍춰 환경에서 다중 코드를 실행 및 디버깅하기 위한 시스템의 기능 블록도이다.
제2a도는 제1도의 시스템에 이용되며 본 발명에 따른 크로스-도메인 명령 호출 및 어떤 데이터 참조를 검출하기 위한 시스템을 포함하는 소프트웨어 시스템의 상세한 기능 블록도이다.
제2b도는 제2a도의 시스템의 일부로서 포함된 환경 관리자에 의해 이용되는 드라이버 루우프(driver loop)에 대한 순서도이다.
제3도는 제1도의 멀티 아키텍춰 시스템을 위한 프로그램이 생성되는 과정을 나타내는 기능 블록도이다.
제4도는 제2a도의 크로스 도메인 검출 시스템의 소프트웨어 및 하드웨어 구조를 나타내는 기능 블록도이다.
제5도는 크로스-도메인 호출을 검출하기 위해 실행 코드로 구성되는 스터브 루우틴(stub routine)의 동작을 예시한 도면이다.
제6도는 멀티 아키텍춰 시스템내의 자연 아키텍춰(native architecture)로부터의 크로스-도메인 루우틴 호출의 자동 검출을 위해 제공하는 예약 오페란드 오류 루우틴에 대한 순서도이다.
제7도는 호출이 행해진 도메인을 판별하도록 검출 시스템에 사용된 어드레스 범위 검사 루우틴에 대한 순서도이다.
제8도는 자케팅을 필요로 하는 크로스-도메인 데이터 참조를 검출하는 루우틴에 대한 순서도이다.
제9도는 실행 시간(run-time)에서 크로스-도메인 호출을 자켓하도록 자켓시스템에 의해 사용된 자켓용 루우틴에 대한 순서이다.
[발명의 상세한 배경]
[발명의 배경]
본 발명은 멀티 아키텍춰 환경(multi-architercture environment) 내에서의 다중 코드 실행 및 디버깅 시스템 및 방법에 관한 것으로 , 구체적으로 이러한 시스템 및 방법에 의한 혼합코드 실행시 크로스-도메인(cross-domain:교차 영역) 인터페이싱 관리를 지원하는 크로스-도메인 루우틴 호출 및 데이터 참조의 검출에 관한 것이다.
멀티 아키텍춰 환경내에서 다중 코드를 실행하는 시스템의 동작시, 코드실행은 코드내의 명령 시퀀스에 따라서 때때로 경계부를 교차시킨다. 참고 문헌 1870-0411 및 다른 참고 문헌에 개시된 새로운 시스템 및 방법은 실제의 새로운 하드웨어 아키텍춰를 위해 고안된 새로운 또는 수정된 소프트웨어를 실행, 시험 및 디버깅(debugging)하도록 다중 아키텍춰 환경에서 다중 코드 실행을 이용한다. 참고 문헌 1870-422에 기재된 자켓시스템(jacketing system)은 1870-411 시스템에서 크로스-도메인 실행을 효율적이고 필수적 투명성을 갖고서 용이하게 한다. 본 발명은 멀티 아키텍춰시스템에서 다중 코드의 실행시 크로스-도메인 코드 실행을 위한 호출 및 크로스-도메인내의 푸우틴들간의 인터페이싱을 용이하게 하고, 특히 1870-0422의 자켓 시스템에서 투명성을 갖는 자케팅을 지원함과 동시에 1870-0411의 멀티 아키텍춰 디버깅/시뮬레이팅 시스템에서 효과적이고 효율적인 시스템 관리를 지원한다.
[발명의 개요]
크로스 도메인 호출 검출 시스템은 제1하드웨어(X)아키텍춰를 구현하고 메모리 시스템과, 최소한 하나의 제2컴퓨터 하드웨어(Y) 아키텍춰를 시뮬레이팅( simulating:모의 실험)하기 위한 서브시스템 및 크로스 도메인 호출을 검출하기 위한 자켓 서브시스템을 포함하는 다중 코드를 실행 및 디버깅하기 위한 시스템을 구비하는 컴퓨터 시스템에 제공된다.
X 코드 및 Y 코드는 메모리 시스템내에 저장된다. X 코드는 X 하드웨어상에서 실행되고 Y 코드는 X 하드웨어상의 시뮬레이터에 의해 실행된다.
Y 도메인내의 서비스를 위해 실행중인 X 코드 루우틴으로부터의 호출을 검출하고 도메인내의 서비스를 위해 실행중인 Y 코드 루우틴으로부터의 호출을 검출하기 위한 수단이 제공된다. 검출된 크로스-도메인 호출은 저켓 시스템에 의한 처리를 위해 통과된다.
[양호한 실시예의 설명]
제1도에는 멀티 아키텍춰 환경에서 다중 코드를 시행 및 디버깅하도록 구성된 시스템(10)이 도시되어 있다. X 프로세서(12)는 X 코드를 포함하는 다중 코드의 실행을 위해 제공되는 실제 X 아키텍춰의 일부를 형성한다.
일반적으로, 시스템(10)은 다중 코드를 처리 및 실행하도록 동작될수 있지만, 양호한 실시예에서는 시스템(10)이 두 개의 코드, 즉 X 코드 및 Y 코드로서 지정된 다른 코드를 시행하기 위한 구조로 되어 있다. 시스템(10)은 Y 코드로 번역 또는 변환되는 새로운 사용자 레벨 또는 다른 레벨 프로그램을 직접 실행할 수 있으며, 그러한 실행을 함에 있어 X 오퍼레이팅 시스템 및 지원 소프트웨어를 이용한다.
변환된 X 프로그램 코드에 대한 시스템(10)의 상업적 응용이 한 예로서, X 코드는 복합 명령 세트 코드(CISC)로서 그것을 위해 하드웨어 구성이 존재하며, Y 코드는 축소 명령 세트코드(RISC)로서 그것을 위해 실제 RISC하드웨어가 존재하지 않는다. 가능한 CISC시스템은 본 출원의 양수인에 의해 제작된 VAX컴퓨터 시스템이다. CISC대 RISC변환 시스템에 관계된 관련 출원 1870-0409 및 0410, 0411, 0416, 0419, 0420, 0421, 0422 및 1870-0423을 참고하기로 한다.
시스템(10)은 제1도에 도시된 프로그램 및 데이터 성분에 대한 일반적 레이아웃(layout)을 갖는 메모리 시스템(14)을 추가로 포함한다. X 로더(16)는 관련 출원 1870-0411호에 보다 상세히 기재된 바와 같이 메모리 시스템(14)에대한 프로그램 코드 입력(entry)을 제공한다.
제2a도는 시스템(10)에 의해 실행될수 있는 소프트웨어 시스템(100)의 아키텍춰를 도시한 것이다. 호출 가능한 시뮬레이터(104)는 제2아키텍춰(바람칙하기로 X 하드웨어에 구현된 Y아키텍춰인 도메인)내에서 소프트웨어 시스템(100)의 일부로서 기능을 한다.
시뮬레이터(104)는 개발중에 잇으며 아직은 사용이 되지 않는 X 하드웨어상의 Y 하드웨어를 모방(emulation)하기 위해서 구성된다. 일반적으로, 시뮬레이터(104)는 X 코드로부터 환경관리자(102)를 통한 호출시 Y명령을 실행한다. 호출은 X 코드실행을 위해 Y 코드로부터 환경 관리자(102)를 통해 행해질수 있다. 예를들어 , Y 코드는 사용자 레벨 응용 프로그램을 나타내거나 X 라이브러리에 배치된 루우틴을 실행하기 위해 호출할수 있으며, 또는 X 도메인에서 처리하는 작동 시스템을 요구하는 호출을 할수 있다. 시뮬레이터(104)의 구성 및 작용을 상세히 설명하기 위해서 , 참조 문헌 1870-0420을 참조해 볼 수 있다.
디버깅 기능은 시스템(10)에 포함될 필요가 없다. 왜냐하면 시스템 작동이 다중 코드 실행에만 한정되기 때문이다. 그러나, 시스템(10)이 코드 테스트에 사용되는 경우에는 디버깅이 제공된다.
디버거 시스템(110)은 상기 환경 관리자(102)의 제어하에서 Y 도메인내의 디버깅 작용을 위해서 제공된다. 전체 작동시에, 디버거 시스템(110)은 양쪽 도메인의 코드 실행시에 사용자가 제어하도록 하여 전체 실행 프로세스는 기능을 수정하기 위해서 검사 및 변경된다. 일반적으로 , 상기 디버거 시스템은 X 및 Y 도메인에서 정지점 (breakpoint)을 설정하는 것과 같은 디버깅 작용에 필요한 절차를 제공한다. 디버거 (110)는 시스템(100)내의 호출 가능한 시뮬레이터(104)와 상호 작용을 위해 구성된다. 디버거(10)의 구성 및 작용에 대한 상세한 설명은 참조 문헌 1870-0421을 참조해 볼 수 있다.
상기 환경 관리자(102)는 호출 가능한 시뮬레이터(104) 및 디버거(110)에 대해서 드라이버 루우프(112)의 실행을 통해서 감독 제어를 실행한다. 지원루우틴(114)은 여러 가지 서비스를 제공하는데 특히 디버거(110)로부터의 요구시에 그러한 서비스를 제공한다.
참조 문헌 1870-0409 및 1870-0410에 설명한 코드 변환 시스템 및 방법을 사용하여, CISC사용자레벨 및 다른 X 프로그램은 기능적으로 동일한 RISC Y 프로그램으로 변환될수 있는데 상기 프로그램은 작동이 가능한 RISC Y 하드웨어가 사용될수 없을지라도 검사 및 디버깅의 목적으로 시스템(10)에 의해 실제의 CISC X 하드웨어에서 실행될수 있다.
바람직하게는, X 프로그램은 Y 프로그램 코드로 부분적으로 변환될 수 있으며, 또는 새로운 프로그램은 지원으로 실행을 위해 Y 코드 또는 다른 X 프로그램 코드에 부분적으로 쓰여질 수 있으며, 혼합된 X-Y 프로그램 코드는 X 및 Y 코드의 검사 및 디버깅을 위해 시스템(10)에 의해 실행될수 있다. Y 코드는 시뮬레이팅된 아키텍춰에서 실행, 검사 및 디버깅되며, 나머지 X 코드는 원래의 X 아키텍춰에서 실행, 검사 및 디버깅된다. 현재의 Y 코드를 성공적으로 테스트하여, X 코드가 완전히 변환되고 Y 코드 검사 및 디버깅이 완료될 때까지 단계화된 Y 코드 검사 및 디버깅을 위해 X 코드의 부가적인 세그먼트가 변환된다. 진보하여 단계화된 검사 및 디버깅을 사용하여 , 전체 검사 및 디버깅 프로세스가 편리하게 사용된다.
전체적으로 하나의 프로그램은 Y 코드로 변환 또는 번역하고 호출 가능한 시스템 시뮬레이터에서 Y 코드를 실행하므로 Y 아키텍춰에 대해 실행 및 검사될 수 있다. Y 코드에 대한 실행 시간 주변 환경은 멀티아귀텍춰 시스템에 포함되어 있는 X 또는 원래의 하드웨어 아키텍춰 상에서 실행되는 작동 시스템 및 실행-시간 라이브러리에 의해 제공된다. 합성 소프트웨어는 결합된 X(실제의 ) 및 Y (시뮬레이트된) 아키텍춰상에서 적당히 실행되는 X 및 Y 코드를 포함한다. 여기에 설명된 양호한 실시예에서 , 상기 합성 소프트웨어 시스템에 대한 작동 시스템은 구조적으로 X아키텍춰에 포함된다. 실제의 아키텍춰와 시뮬레이트된 아키텍춰 사이의 코드 경계는 일반적으로 시스템 사용자의 필요에 따라서 달라진다.
스프트웨어 시스템(100)은 일반적으로 매우 다양한 아키텍춰에 응용된다. 상기 시스템(100)은 다양한 작동 시스템 및 다양한 컴퓨터 시스템에 응용되며, 그러한 응용은 상기 아키텍춰-수행 시스템이 유사한 작동 시스템 및 유사한 호출 표준을 갖을때에 편리하게 사용된다.
호출시스템 및 그들의 차이점에 대한 추가 배경 정보에 대해서는 관련 출원 1870-0422호를 참고하기 로한다.
[드라이버 루우프]
제2b도에서, 시뮬레이션/디버깅 작용을 구동하는 드라이버 루우프(112)에 대한 순서도가 도시되어 있다. 호출이 X 코드로부터, 때때로 자켓시스템(108)을 통한 Y 루우틴의 실행을 위한 X 응용 코드로 부터 일어날 때 블록(118)의 루우프(112)로 입력이 생긴다. 자켓팅은 표준차를 호출하기 위해서 조정하도록 X 와 Y 코드사이에 인터페이싱을 제공한다.
블록(120)에서, 파라미터가 자케팅 프로세스의 일부로서 설정되는데, 특히, X 파라미터는 Y 코드 실행을 하는 동안에 사용하기 위해서 적당한 Y 위치에 배치된다. 따라서 공통으로 자켓된 루우틴 호출을 위해, 자켓 테이블은, 파라미터가 X도메인에서 나오는지 그리고 대응하는 값이 Y 도메인에 배치되어야 하는지를 판별하기 위해 자켓 시스템에서 참조된다. 자동적으로 자켓된 루우틴 호출을 위해, 자켓시스템(108)내에서 이러한 목적으로 표준호출규약이 특별한 코드로 넣어진다. 도메인 인터페이스 목적을 위한 자케팅에 관한 보다 상세한 내용은 관련 출원 1870-0422호에 기재되어 있다.
표준 어드레스-복귀 레지스터에는 특유의 또는 구분된 복귀 어드레스가 배치된다. 상기 구분된 복귀어드레스는 Y 코드를 포함하도록 미리 설정된 어드레스 경계 밖에 놓인다. 그것은 Y-X 호출을 인코드하기 위해 사용될수 있는 어드레스와는 달라야한다.
기능 블록(122)에서, ENV_CMD로 명명된 스트링 변수는 런-모드(run-mode)(연속 명령 실행)로 디폴트(default)에 의해 설정되거나 디버거(110)로부터 사용자 선택에 의해 스텝 모드(step-mode)(하나의 명령씩 실행)로 설정될수 있다. 예를들어, 사용자는 X 코드 루우틴에 의해 호출된 특정한 Y 루우틴상의 유지를 수행하도록 결정될수 있으며, 따라서 Y 도메인에 대한 스텝 선택을 할수 있다.
상기 시뮬레이터(104)는 선택된 모드 및 현재의 Y 머신 상태에 따라 Y 머신을 시뮬레이팅하기 위해 블록(124)에 의해 호출된다. 하나 이상의 Y 명령은 X 하드웨어에 의해 Y 도메인에서 실행된다.
블록(126)은 다음에 드라이버 루우프를 종료하며 그 작동이 종료된 후에 시뮬레이터(104)로부터 복귀된 검출 상태에 따라서 되돌아간다. Y 프로그램 카운터가 블록(126)으로 표시된 바와 같은 데이터와 Y 코드를 포함하는 것으로 미리 설정된 경계 밖으로 결정되면, 테스트 블록(130)은 Y 프로그램 카운터가 호출자 X 프로그램으로 되돌아 가는지를 결정한다.
Y 프로그램 카운터가 블록(130)내 특유의 복귀 어드레스와 일치하면, Y 루우틴의 실행은 완료되고 그 X 호출자로 되돌아간다. 블록(132)은 Y 결과 레지스터(들)로부터의 값을 복사하므로 자케팅 서비스를 X 도메인으로 제공한다. 공통으로 자켓된 호출은 원래의 호출에 사용된다. 시뮬레이션은 출력 블록(134)으로 표시된 바와 같이 이 점에서 완료된다.
상기 테스트 블록(130)이 Y 프로그램 카운터가 자켓 테이블 엔트리에 대응하고 상기 특유의 복귀어드레스와 일치하지 않으면, Y 도메인에서 현재의 실행 프로세스내에서 X 루우틴을 실행하도록 호출이 행해지고 있는지의 여부를 검출한다. (이 경우 프로그램 에러가 없을 경우이다.) 이어서 블록(136)은 자케팅 서비스를 제공하며, 즉 Y-X 호출을 개시하며, 자켓 시스템(108)은 또한 Y 도메인으로부터 X 도메인으로의 파라미터를 복사하는데 필요한 정보를 얻도록 자켓 테이블을 엑세스하며, X 루우틴의 어드레스가 호출된다. 피호출 X 루우틴으로부터 블록(136)으로 복귀되면, 복귀 값은 Y 도메인으로 복사되며 시뮬레이션은 경로(137)로 표시된 바와 같이 복구된다.
블록(126)을 다시 참조하여, 스텝 모드가 요구되고 시뮬레이션 종료가 블록 (138)으로 표시된 바와 같이 "스텝 던(Step Done)"으로 불리는 경우가 되기로 결정되면, 기능 블록(140)은 요구된 스텝작용의 완성을 표시하고 먼저 복귀된 상태 및 변수 ENV_CMD를 통과하기 위해 디버거(110)을 호출한다. 시뮬레이터로 복귀되는 것은 디버거(110)에 의해 직접 시뮬레이터 재호출(recall)을 필요로 하지 않고도 복구된 시뮬레이션을 가능케한다.
상기 디버거(110)는 상기 상대를 변환하며 사용자에게 보고할 수 있다. 부가적인 시뮬레이터 스텝작용은 사용자 선택에 의해서 또는 미리 결정된 내부 스크립트에 따른 디버거(110)에 의해 요구될수 있다. 상기 드라이버 변수 ENV_ CMD 는 디버거 요구에 따라 런 또는 스텝으로 세트된다.
상기 디버거(110)는, 세트 정지점과 같이 다른 질문(inquiary) 및 상태제어 기능을 수행하기 위해 환경 관리자(102)를 호출하는데, 참조 문헌 1870-0419에서 보다 자세히 참조해 볼 수 있다. 본 실시예에서, 시뮬레이션은 드라이버(112)에 의해서만 제어된다.
상기 시뮬레이션이 정지(abort)(142) 또는 정지점(144) 또는 Y 에러(146)로 인해 종료되면, 블록(148)은 디버거(110)를 호출하고 블록(140)에서와 같이 작용한다.
기능 프로그램 시스템을 제작하기 위한 프로세스
제3도의 기능 블록도는 메모리(14)에 저장된 그리고 멀티 아키텍춰, 다중 코드 실행 및 디버깅 시스템(10)의 일부로서 작용하는 프로그램 시스템을 제작하기 위해 본 발명의 양호한 실시예에서 실시된 프로세서(150)를 나타낸다. 상기 시스템 사용자가 디버깅 또는 다른 실행을 위해 어떤 레벨의 프로그램으로 들어간다 해도, 사용자 레벨의 응용 프로그램은 시스템(10)으로 들어가게 되는 응용 프로그램으로서 프로세서(150)에서 사용된다. 왜냐하면 그것이 본 발명의 작용 및 장점을 명백히 예시하기 때문이다.
표시된 바와 같이, 들어가는 응용 프로그램은 Y 프로그램부(152)와 X 프로그램부(154)로 분할된다. 예를들어, Y 하드웨어 및 그 작동 시스템을 사용하기 전에, 현재의 X 사용자 레벨 프로그램을 Y 아키텍춰 웰(architecture well)로 이동시켜서, X 프로그램의 모듈러 또는 다른 부분이 Y 프로그램부(152)를 형성하는 Y 코드로 번역된다. 두 개의 프로그램부(152,154)가 시스템(10)으로 들어간후, Y 프로그램부(152)에서 대베깅이 수행될 수 있다.
계속해서, 상기 X 프로그램의 부가적인 모듈러부는 새로운 Y 프로그램부로 번역될 수 있는데 상기 새로운 Y 프로그램부는 디버그된 Y 프로그램부 및 새로운 Y 프로그램부의 디버깅을 위해 나머지 X 프로그램부와 함께 들어간다. 이러한 모듈러 또는 단계적 디버깅 프로세서는 더 관리가 쉽고 더 편리하게 디버깅되는데 다음과 같은 이유 즉, 최종 영상의 전체 기능성이 이동된 Y 모듈(152)로 사용되는 것을 포함하여 여러 가지 이유에서 디버깅된다. 상기 단계적 프로세스는 전체 X 프로그램이 등가 디버그된 Y 프로그램으로 변환될 때 까지 계속된다.
전술된 바와 같이 미리 디버깅시키는 것에 더해서, 본 발명은 디버깅 프로세스 자체를 크게 용이하게 한다. 일반적으로, X 및 Y에 대한 사용자 레벨코드와, 필요하다면 다른 아키텍춰는 본 발명에 따라서 실시된 시스템에 의해 실행 및 디버깅을 위해서 자유롭게 서로 혼합될 수 있다.
각각의 루우틴 또는 서브 프로그램에 대응하는 다중 소스 파일을 포함하는 Y 응용 프로그램부(152)는, 하나 이상의 목적 파일(157)을 제작히기 위해서 Y 크로스 컴파일러(156)에 의해 처리된다. 이와 유사하게, X 컴파일러(158)는 다중 X 목적 파일을 갖는 X 목적 영상(159)을 형성하기 위해서 X 프로그램부(154)를 처리한다.
크로스 링커 프로그램(160)은 Y 아키텍춰를 위한 응용 가능한 호출 규약에 따라 호출 및 피호출 Y 목적 파일(루우틴) 사이에 크로스 파일 링크를 제공하므로 Y 목적 파일을 결합시킨다. X 링커 프로그램(162)은 그와 유사하게 X목적 파일을 결합시킨다.
Y 목적 파일(루우틴)이 X 목적 파일(루우틴)의 실행을 위해 크로스-도메인 호출을 할 수 있기 때문에, X-Y 호출 인터페이스는 링커(160,162)에 의해 각각 Y 목적 파일 및 X 목적 파일과 결합되며 따라서 실행 시간에 크로스-도메인 실행절환을 편리하게 한다. 특히, Y 자켓 타겟 파일(161) 및 X 자켓 타겟 파일(163)은 링커(160,162)에 의해 Y 타겟 파일 및 X 타겟 파일과 링크된다.
본 실시예에서, 환경 관리자(102)를 위한 소스 코드(151)는 X 목적파일(155)을 발생하기 위해 (153)에서 번역된다. 상기 X 링커(162)는 결합된 X 형상(167)을 형성하는데 환경 관리자 목적 파일(155)을 다른 목적 파일과 링크시킨다.
Y 크로스 링커(160)는 Y 목적 파일과 결합되어 단일 형상을 형상한다. Y 코드를 포함하는 Y 링커에 의해 발생된 Y 형상은 외부적으로 표준의 할당 가능한 X 영상으로 포맷화된다.
양호한 실시예에서, 글로발 데이터 시스템이 사용되어 각각의 코드 X 또는 Y는 일반적으로 모든 데이터를 엑세스 한다. 그러나, 보호된 장소로 인해 Y 도메인으로부터 크로스-도메인 액세스를 위한 특별한 처리가 필요한다.
상기 호출 인터페이스를 형성하기 위해, 사용자는 응용 X 및 Y 호출 규약에 대한 지식을 기초로하여 각각의 X 및 Y 루우틴을 위해 자켓 설명(165)을 준비한다. 양호한 실시예에서, 각 루우틴에 대해 한쌍의 자켓 설명이 준비되는데, 그중 하나는 호출 도메인에 적용되며 하나는 피호출 도메인에 적용된다.
자켓 컴파일러(166)는 자켓 테이블을 형성하기 위해 자켓 설명을 처리하는데 상기 테이블은 크로스-도메인 실행을 위해 필요한 자케팅 작용을 위해 실행시간에 다른 소프트 웨어에 의해 번역될 수 있다. 자케팅 및 크로스-도메인 호출 검출에 대한 보다 충분한 설명이 참조 문헌 1870-0421 및 1870-0422에 제공된더.
X 로더 또는 영상 작동기는 Y 형상(164), X 형상(167), 디버거(110)를 위한 형상(170) 및 시뮬레이터(104)를 위한 영상(172)을 링크시킨다. X 메모리(14)로 적재되는 X 로더(168)로부터의 출력은 실행 가능한 코드로 형성된다.
크로스-도메인 검출용 시스템
제4도에 도시된 기능 블록도는 크로스-도메인 검출 시스템(106)의 보다 상세한 사시도이다. 일반적으로, 자켓 시스템은 일단 크로스-도메인 호출이 검출 시스템(106)에 의해 검출되었으면 X 또는 Y 도메인으로부터 다른 Y 또는 X 도메인으로 호출을 인터페이스시키는데 필요한 자케팅을 제공한다.
양호한 실시예에 있어서, 크로스-도메인 호출은 어떤 도메인에서 다른 도메인으로 코드 실행시 절환을 필요로 한다(즉 크로스-도메인 루우틴의 실행을 위한 호출). 크로스-도메인 호출은 또한 크로스-도메인 참조의 처리를 필요로 하는데, 이 경우에 크로스-도메인 참조는 X 도메인에 할당된 어떤 메모리 장소를 판독 또는 기입하도록 Y 도메인으로부터의 요구일 수도 있다(메모리(14)내의 X 및 Y 메로리 어드레스가 일반적으로 글로발 형태로 액세스 가능하게되는 경우에도).
코드(300)가 Y 도메인내의 루우틴의 실행을 위해 절환이 행해지는 경우 X 프로세서(12)(제1도)에 의한 코드 실행 지점에 도달할 때, 호출 검출 시스템(106)은 드라이버 루우프(112)가 Y 시뮬레이터(104)의 동작 및 타겟 Y루우틴의 실행을 개시함에 따라 자켓 시스템(108)이 호출을 자켓하도록 한다.
이어서, X 도메인으로의 복귀를 위한 호출이 시뮬레이터(104)에 의해 행해지고, X 도메인으로의 복귀를 송출하기 위해 호출 검출 및 자케팅이 제공된다.
코드 절환의 X 대 Y 방향에서, 크로스-도메인 호출이 행해질 때를 판별하기 위해 두가지 다른 검출 메카니즘이 사용된다. 따라서, 메카니즘(350)은 Y 루우틴의 실행을 위한 X 호출의 수동 검출을 위해 제공되고, 다른 메카니즘(352)은 Y 루우틴의 실행을 위한 어떤 다른 X 호출의 자동 검출을 위해 제공된다.
메카니즘(350)은 제3도와 관련하여 기재된 X 영상 구성 과정 동안 X 코드로 삽입된 구조에 의해 검출이 행해지기 때문에 "수동" 검출기라고 정의된다. 따라서, X-Y 스터브 루우틴(stub routine)(354)은 Y 도메인내의 루우틴의 실행을 위해 호출이 행해질 경우 코드내의 미리 선택된 각 지점에서 X 코드로 삽입된다.
X 스터브 루우틴(354)은 링크 시간에서 Y 도메인내의 피호출 루우틴의 어드레스가 알려진 경우에 사용될 수 있다. 별도의 X 스터브 루우틴(354)은 각 호출 가능한 Y 루우틴을 위해 제공된다. 사실상, X 스터브 루우틴(354)은 Y 루우틴 호출을 자켓 시스템(108)으로 전송하는 감독 루우틴이다. X 스터브 루우틴(354)은 일반적인 자케팅 능력을 지원하는 자켓 테이블에 대한 매우 신속한 검출 및 매우 신속한 액세스의 조합을 제공한다.
X 스터브 루우틴(354)은 두가지 기본 기능 즉 자켓 인덱스 코드를 실행 스택상에 적재하는 기능과 인덱스 값에 의해 지시된 X-Y 크로스-도메인 호출을 실행하도록 환경 관리자내의 공통 엔트리 지점으로 점프하는 기능을 제공한다. 따라서, X 스터브 루우틴(354)중 하나에 의한 X-Y 크로스-도메인 호출의 검출은 실행이 그 X 스터브(354)에 도달했다는 사실에 의해 발생한다.
X 스터브(354) 루우틴은 자동 자케팅이 크로스-도메인을 검출할 수 없는 경우를 춰급한다. 예를들어, 양호한 실시에에서, X 시뮬레이가 VAT? 시뮬레이인 경우, 두 개의 루우틴 호출 명령은 CALL 및 JSB이다. CALL의 경우 자동 검출이 사용되는반면 JSB의 경우 스터브가 사용된다.
스터브 루우틴은 프로그래밍 시간의 추가를 필요로 하지만, 적어도 어떤 경우에는 신속한 실행이 달설될 수 있는 잇점이 있다.
자동 검출 메카니즘(352)은 X 명령 오류 하드웨어(356)를 사용하여 자켓 시스템(108)에 의한 호출의 자케팅을 위해 환경 관리자(102)에 의해 분석 및 처리되는 에외 상황을 발송하는 하드웨어 트랩이다. 자동 메카니즘(352)은 링크 시간에서 특정 호출이 크로스-도메인 호출인지의 여부가 알려지지 않은 경우 동적으로 계산된 호출을 위해 사용된다. 자동 검출 메카니즘(352)은 어느 도메인이 피호출 루우틴을 포함하는지의 여부에 상관없이 작업한다. 제4도에서, Y 루우틴(358)에 대한 X 호출은 스터브 루우틴(354) 및 명령 오류 하드웨어(356)에 의해 검출된다. 본 발명의 다른 응용에 있어서, 명령 오류 하드웨어는 링크 시간에서 알려진 호출 뿐만아니라 동적으로 계산된 호출을 검출하는데 사용된다.
블록(360)은 Y 도메인내의 타겟 루우틴의 실행을 위해 자켓 시스템(108)에 의해 자켓된 호출이 시뮬레이터(104)로 통과하도록 지시한다. 일단 타겟 루우틴이 실행되면, 블록(361,362,364)로 나타낸 것처럼 X 도메인에 대한 자케팅 및 전송을 위해 복귀가 행해진다.
X 루우틴의 실행을 위한 크로스-도메인 호출은 시뮬레이터(104)에 의한 Y 코드(302)의 실행 동안 행해진다. X 도메인으로의 실행 절환이 행해질 경우 Y 코드의 실행 지점에 도달될 때, 호출 검출 루우틴(106)도 크로스-도메인 호출을 검출하여 시뮬레이터(104)가 자켓 시스템(108)에 의한 호출의 자케팅을 개시하게 한다.
X 코드(300)내의 타겟 X 루우틴이 이어서 실행되며, 복귀가 처리되고 시뮬레이터(104)로 자켓되어 Y 코드(302)의 실행을 재개한다.
양호한 실시예에서, Y 코드(302)로부터 모든 Y 대 X 크로스-도메인 루우틴 호출을 검출하기 위해 메카니즘(366)이 사용된다. 따라서, 링크 시간에서 대부분의 참조된 어드레스가 알려지기 때문에 대부분의 Y-X 호출을 검출하도록 Y 어드레스 범위에 대한 검사(368)가 사용되는 것이 바람직하다.
특수 스터브(368c)는 실행 시간까지 피호출 루우틴 어드레스 및 도메인이 알려지지 않은 동적으로 계산된 호출을 위해 공통적으로 사용되는 것이 바람직하다.
스터브(368c)는 X 도메인의 호출을 수행하도록 실행중인 Y 루우틴에 의해 호출되는 번역된 실행 시간 지원 루우틴이다. 실행 시간에서, 타겟 어드레스는 그 어드레스가 링크 시간에서 알려지지 않았던 각 Y 호출을 위해 계산된다.
차후 기재된 자동 크로스-도메인 호출 검출 시스템의 경우처럼, 스터브(368)는 본 발명의 양호한 실시예에서 비트 12의 상태를 판별하도록 루우틴 엔트리 비트 마스크를 "자동으로" 검사한다. 비트 12가 세트되면, Y 호출이 행해지고 시뮬레이터 실행에 대한 인터럽트가 행해지지 않는다. 비트 12가 클리어되면, 피호출 루우틴에 대한 타겟 어드레스가 X 도메인내에 있도록 계산되며 크로스-도메인 Y-X 호출이 행해지고, 이에 따라 시뮬레이터 실행이 인터럽트되고 환경 관리자가 호출을 처리하도록 구별된 어드레스에서 호출된다.
원한다면, Y-X 스터브 루우틴(제4도에서 생략되었지만 제5도를 참조하여 추후 설명됨)이 링크 시간에서 어드레스가 알려진 Y-X 크로스-도메인 호출의 검출을 제공하도록 링크 시간에서 Y 코드로 구성된다.
루우틴 호출은 블록(361)으로 나타낸 것처럼 시뮬레이터(104)로 검사구조 (368)에 의해 통과된다. 이어서 제2a도에 도시된 지원 루우틴(114)중 하나인 어드레스 범위 루우틴(374)이 어느 도메인이 타겟 루우틴의 어드레스를 포함하는지 판별하도록 호출된다.
X 어드레스 범위가 찾아지면, 크로스-도메인 호출 처리를 위해 환경 관리자 (102)에서 드라이버 루우트(112)로의 복귀가 행해진다. 따라서 Y-X 호출이 블록 (362)으로 나타낸 것처럼 자켓 시스템(108)에 의한 자케팅을 위해 통과된다. 일단 자켓되면, X 코드(300)내의 타켓 루우틴의 실행을 위해 그 호출은 블록(364)로 나타낸 바와 같이 통과된다. 블록(372) 및 (360)으로 나타낸 것처럼, 실행이 완료된 후 복귀가 행해진다.
시터브 루우틴(354) 및 사용 가능한 Y-X 스터브 루우틴의 생성 및 동작에 대해 개관은 제5도에 도시된다. 따라서, 적합한 X-Y 스터브(354) 및 사용 가능한 Y-X 스터브(369)가 각각 X 영상(167) 및 Y 영상(164)에 링크된다. 도시된 바와 같이, 크로스-도메인 호출 및 복귀는 X 도메인과 Y 도메인 사이에서 행해진다.
크로스-도메인 데이터 참조는 처리 및 자케팅을 위해 검출 시스템(106)에 의해 검출된다. 크로스-도메인 데이터 참조 검출 및 자케팅은 데이터 포맷이 호환성이 없는 경우 혹은 액세스 제한이 어떤 도메인에서 다른 도메인으로 출력되는 경우에 특히 유용하다.
양호한 실시예에서, Y 코드(302)의 실행시 메모리(14)의 제한 영역(376)에 대해 행해진 Y-X 데이터 참조는 ACCVIO(액세스 위반) X 하드웨어 검출기(378)에 의해 검출된다. ACCVIO 프로세서(380)는 환경 관리자(102)에 의한 처리를 위해 제한된 크로스-도메인 데이터 참조(380)를 처리하도록 환경 관리자(102)를 호출한다.
이어서, X 하드웨어에 대한 오퍼레이팅 시스템(382)이 제한된 메모리 영역 (376)을 액세스하도록 요구되어 요구된 판독 또는 기입을 수행한다. 이어서, 시뮬레이터(104)로의 복귀가 행해진다.
[자동 크로스-도메인 호출 검출 시스템]
제6도에는 X 대 Y 크로스-도메인 루우틴 호출을 검출하여 자동으로 처리하는데 사용되는 보존된 오페란드 오류 절차(352)에 대한 순서도가 도시된다. 블록(402)은 먼저 보존된 오페란드 오류의 X 하드웨어 검출을 발생한다. 이어서 예외 상황 구동기가 액세스 예외 상황 또는 X 도메인 호출이 발생되었는지의 여부를 판별하도록 환경 관리자 (102)에서 호출된다.
양호한 실시예에서, 절차 호출 명령이 엔트리 마스크라 불리는 구조로 향하는 타겟 어드레스를 갖는 X 아키텍춰에 제공된다. 엔트리 마스크는 실행 스택상에 보관되어야 하는 각 X 레지스터에 대한 비트를 포함한다.
엔트리 마스크의 사용으로, 수개의 레지스터가 절약될 수 있다. 따라서, 엔트리 마스크가 절약될 수 없는 레지스터들중 하나에 대한 비트 세트를 갖는 경우, 검출 하드웨어는 보존된 오페란드 오류를 발생한다.
Y 도메인의 호출은 절약될 수 없는 레지스터에 대한 비트를 발생하므로 보존된 오페란드 오류를 발생한다. 일반적으로, 크로스-도메인 호출 오류는 환경 관리자 (102)에 의해 처리되어 그 호출을 자켓하고 실행을 타겟 Y 도메인으로 이동시킨다.
다음은 보존된 오페란드 오류의 동작을 예시한 것이다.
테스트 블록(406)이 Y 호출이 행해지지 않았다고 판별하면, 블록(408)은 크로스-도메인 호출 검출 시스템이 호출 마스크 오류 이외의 오페란드 오류와 관련되지 않기 때문에 X 오퍼레이팅 시스템(382)이 다음 구동기로 진행되게 한다. 예오 상황을 관리하기 위한 시스템 규약하에서, 오퍼레이팅 시스템은 오류의 처리를 담당할 수 있는 다른 구동기를 찾는다.
Y 도메인 호출이 행해지면, 블록(410)은 루우틴 호출의 타겟 어드레스를 계산하는데, 그 이유는 오페란드 오류가 발생되어 오류 구동기에 의해 계산되어야 할 때 호출 마스크 어드레스가 하드웨어에 의해 제공되지 않기 때문이다.
이어서 어드레스 범위 루우틴(374)(제4도)이 타겟 어드레스가 배정 되어진 도메인을 판별하도록 테스트 블록(412)에 의해 사용된다. 이것은 X 도메인내의 소프트웨어 버그가 검출될 수 있게 하며 또한 두 개 이상의 도메인이 전체 시스템에 포함되는 경우 본 실시예에서의 X 도메인 이외의 도메인에 대한 호출의 처리를 가능케 한다.
소프트웨어 버그를 참조하여, X-Y 호출의 수행과 무관한 프로그램 에러가 보존된 오페란드 오류를 생성할 수도 있다. 타겟 어드레스가 Y 코드내에 있으면, 예외 상황에 대한 판단은 아마도 X-Y 호출로 된다. 만일 타겟 어드레스가 Y 코드내에 있지 않으면, 에러가 확실히 발생되고, 시뮬레이션을 시작하려는 어떠한 시도로 시뮬레이터 범위밖의 PC로서 중단하게 된다.
타겟이 X 도메인내에 있으면, 루우틴(400)은 블록(408)으로 분기되어 예외상황 호출을 다음 X 오퍼레이팅 시스템 구동기로 발송하게 된다.
Y 어드레스가 결정되면, 블록(414)은 X 오퍼레이팅 시스템(382)의 예외 상황춰급 과정을 삭제한다. 블록(416)은 이어서 자켓 시스템(108)에 의한 자케팅 동작을 호출하고, 블록(418)은 타겟 Y 코드를 실행한다. 타겟 루우틴이 실행되고 복귀가 행해진후, 피호출 루우틴이 X 도메인에서 실행되었던 것처럼 블록(420)으로 나타낸 바와 같이 투명성을 갖고 재개된다.
[어드레스 범위 검사]
제4도의 어드레스 범위 검사(374)는 어느 실행 제어가 Y 도메인으로부터 X 도메인으로 절환될 것인지 검출하도록 시뮬레이터(104)에 의해 사용된다.
일반적으로, 환경 관리자(102)의 초기 설정시, 멀티 아키텍춰 시스템에서 도메인의 어드레스 범위를 정의하는 테이블이 생성된다. 시뮬레이터(104)는 도메인 어드레스 테이블을 참조하여 도메인 실행을 절환하도록 환경 관리자(102)와 상호 작용한다.
제7도에 도시한 바와 같이, 블록(430)은 명령 어드레스가 Y 도메인내에 있는지의 여부를 검출한다. 명령이 Y 도메인 밖에 있는 경우, 블록(432)은 그러한 춰지로 환경 관리자(102)로의 복귀를 행하고, 자켓 시스템(108)이 호출을 자켓하도록 호출되어 실행을 X 도메인으로 절환한다. 환경 관리자(102)는 호출이 X 도메인내의 루우틴의 실행을 위한 호출인지 혹은 그 도메인으로의 복귀인지의 여부를 타겟 어드레스를 검사함으로써 판별한다.
블록(430)이 Y 도메인내의 어드레스를 검출하면, 블록(434)으로 나타낸 것처럼 Y 도메인에서 명령이 실행된다. 이어서 다음 명령 어드레스가 블록(436)으로 나타낸 바와 같이 얻어진다.
[ACCVIO 데이터 참조 춰급 절차]
제8도에는 액세스 위반에 따라 Y 시뮬레이터(104)에 의해 행해진 데이터 참조를 처리하는데 사용되는 절차(450)에 대한 순서도가 도시된다.
일반적으로, 프로세서용 오퍼레이팅 시스템은 어드레스 공간부에 대한 액세스를 허용치 않아 그 내부의 데이터를 보호하는 프로그램을 포함한다. 보호된 데이터를 액세스하는 데에 따른 프로그램이 필요한 경우, 오퍼레이팅 시스템의 어떤 동작이 액세스의 비허용을 무시하여 필요한 액세스가 가능케 하도록 호출되어야 한다. 본 실시예에서는, 메모리(14)의 영역(376)(제4도)이 Y 도메인으로부터 크로스-도메인 데이터 참조를 만족시키도록 X 오퍼레이팅 시스템(382)의 개입을 필요로 하는 보호된 또는 제한된 메모리 영역이다.
절차(450)내의 블록(452)은 ACCVIO 하드웨어 검출기(378)를 사용하여 X 액세스 위반을 검출한다. 시뮬레이터 구동기(456)는 데이터 액세스 위반이 발생했는지의 여부를 판별하도록 블록(454)에 의해 작동된다.
테스트 블록(456)이 ACCVIO가 없음을 지시하면, X 오퍼레이팅 시스템(382)은 다음 구동기로 진행하게 된다. ACCVIO가 발생하면, 블록(460)에 의해 예외 상황 춰급이 삭제된다.
이어서 환경 관리자(102)가 바람직하기로는 보호된 어드레스의 호출을 얻도록 X 오퍼레이팅 시스템(382)의 동작을 호출한 다음 Y 도메인으로부터의 데이터 참조에 의해 요구된 기입 또는 판독을 수행함으로서 ACCVIO를 처리하도록 호출된다. 만일 테스트 블록(464)에 의해 판별된 것처럼 액세스가 수행되면, 복귀가 행해지고 블록(48)으로 나타낸 것처럼 Y 코드의 실행이 재개된다. 액세스가 실패하면, 시뮬레이터는 그 판단을 반영하는 상태 표시로써 시뮬레이션을 종료한다. 이어서 환경 관리자(102)는 작동 상태라면 디버거(110)로 제어를 전달하고, 그렇지 않으면 프로그램을 종료한다.
[크로스-도메인 호출 자켓용 루우틴]계
제9도에는, X 도메인과 Y 도메인 사이의 검출된 크로스-도메인 호출을 실현하도록 자켓 시스템(108)에 의해 사용되는 자켓용 루우틴(304)에 대한 순서도가 도시된다. 크로스-도메인 호출의 검출후 블록(306)에서 입력이 행해진다.
기능 블록(308)은 우선 차후의 사용을 위해 완전한 호출 상태를 보전한다. 다음, 현재의 호출에 대한 자켓 테이블 엔트리가 블록(310)에 의해 배정된다. 블록(312)에 의해 타겟 도메인내의 호출 타입이 판별되고 타겟 상태가 세트된다.
블록(314)에 의해 호출 규약 파라미터의 수가 판별된다. 이어서 각 파라미터가 기능 블록(316)에 의해 처리된다. 특히, 각 파라미터는 호출 도메인으로부터 입력된 자켓 설명에 따라 자켓 테이블에 의해 정의된 바와 같은 어떤 변환이 필요한 피호출 도메인에 복사된다. 테스트 블록(318)은 모든 파라미터가 도메인 경계를 가로질러 복사될 때까지 블록(316)의 실행을 반복하게 한다.
다음, 블록(320)은 타겟 도메인에 실행을 위한 호출을 발생한다. 타겟 도메인이 Y 도메인인 경우, 시뮬레이터(104)가 환경 관리자에 의해 작동된다.
X-Y 또는 Y-X 호출 복귀의 경우, 블록(332)은 블록(308)에 의해 보관된 호출 도메인 상태로 복귀 결과를 복사하도록 블록(316,318)에 대하여 기재한 방식으로 자켓 테이블을 사용한다. 마지막으로, 블록(324)은 수정된 호출 상태를 복구하고 호출 도메인에서 코드 실행을 재개한다. 다시, 만일 복귀 도메인이 Y 도메인인 경우, 시뮬레이터가 환경 관리자(102)에 의해 작동된다. 자켓 시스템의 동작에 대한 보다 상세한 설명은 관련 출원 1870-422호에 기재되어 있다.
[실행-시간에서 크로스-도메인 호출의자케팅]
두가지 타입의 자케팅이 본 실시예에서 호출을 X 도메인으로부터 Y 도메인으로 인터페이스하는데 사용된다. 그 두 자케팅은 수동 자케팅과 자동 자케팅이다.
수동 자케팅은 영상 형성 시간에 생성된 자켓(링크) 구조에 기초해 있다. 본 실시예에서, 다음의 성분이 자켓 구조에 포함된다.
1. 각각의 루우틴이 참조되는 인덱스 값들
2. 엔트리 지점 스터브 루우틴은 크로스-도메인 호출을 발생하기 위해 링크시간에서 발생되며; 각각의 스터브는 실행-시간에 자케팅 코드내 공통 급송 루우틴과 병합된다. 그에 따라서 특유의 인덱스 값을 피호출 루우틴으로 통과시킨다.
3. 밖으로 나가는(유출) 그리고 들어오는(유입) 루우틴에 대해서 사용되도록 호출 형태와 파라미터 통과 메카니즘을 설명하는 엔트리를 갖는 자켓 테이블. 실행 시간에, 상기 자켓 코드는 그러한 루우틴에 대한 인덱스 값에 의해 각각의 루우틴에 대한 데이블 엔트리를 엑세스한다.
4. Y 영상 엔트리 지점은 피호출된 루우틴의 명칭과 다른 전체 심볼에 의해 규정되어 타겟 Y 루우틴과 엔트리 지점 X 스터브 루우틴 사이에 명칭의 혼란이 없게 된다. 피호출 루우틴의 명칭은 전체적으로 선언되지 않으므로 링크 시간에서 감추어지며, 후자는 상기 호출을 분석하고 그것을 환경 관리자(102)로 연계시키기 위해 전체적으로 규정된다. 양호한 실시에에서는, 표준 호출 규약이 사용된다고 가정한다. 자켓 테이블 설명이 자동 자켓 호출을 사용하기 위해 제공되는 경우에는 다른 규약이 사용될 수도 있다.
자동 자케팅은 영상 구성 시간에 사용자가 개입하지 않고도 수행된다. 본 실시예에서, 그것은 Y 루우틴에 대한 직접 X 호출이 X 오페란드 결함을 초래한다는 사실에 기초해 있다. 상기 호출 검출 시스템(106)의 조종자는 일관된 오페란드를 수신하며, 상기 자케팅 코드는 Y 도메인내에서 실행을 위한 호출을 자켓한다. 양호한 실시예에서, 표준 호출 규약이 사용된다고 가정한다. 다른 규약이 사용될 수 있는데, 이때, 자켓 테이블 설명은 자동-자켓된 호출로 사용하기 위해 제공될 수 있다.
상기 자케팅 코드는 X 도메인으로부터 Y 도메인으로 입력 파라미터를 전송한다. 수동 자케팅의 경우에, 상기 자켓 테이블은 파라미터 전환을 제한한다. 자동 마케팅을 위해서, 파라미터 전환을 직접 수행된다. 시뮬레이터 실행이 완료된 후에, 상기 호출은 상기 호출시에 사용되는 것과 같은 방식으로 호출자에게로 복귀하므로 완료된다.
Y 도메인으로부터 X 도메인으로 호출은 구성 시간에 모두 지정된다. 인덱스 값은 크로스-도메인 실행을 위한 Y 도메인으로부터의 호출이 Y 코드 어드레스 공간 바깥에 있고 따라서 불법이 되도록 지정된다.
상기 시뮬레이터(104)는 크로스-도메인 호출이 불법 어드레스를 발생할 때 지정하며, 자케팅 시스템은 X-Y 방향으로 설명된 것과 같은 방식으로 자케팅 프로세스를 수행한다.
X-Y 호출에 대한 자켓 구조는 다음을 포함한다.
1. 자켓 테이블을 위한 인덱스 값
2. 호출 형태 및 파라미터 통과 메카니즘을 위한 자켓 테이블 엔트리
3. 외부 위치에 해결되지 않은 참조를 위한 외부 심볼 결정
제5도에는, X 및 Y 도메인 사이에서 검출된 크로스-도메인 호출을 수행하기 위해 상기 자케팅 시스템(108)에 의해 사용된 자케팅 루우틴(304)에 대한 순서도가 도시되어 있다. 크로스-도메인 호출을 검출한 후에 블록(306)에서 입력이 생긴다. 기능 블록(308)은 먼저 나중에 사용하기 위해 완전한 호출상태를 보존한다. 인덱스 값을 사용하여, 현재의 호출에 대한 자켓 테이블 엔트리는 블록(310)에 의해 배치된다. 타겟 영역내의 호출 타입이 결정되며 타겟 상태는 블록(312)에 의해 세트된다.
호출 규약 파라미터의 숫자는 블록(314)에 의해 결정된다. 각각의 파라미터는 기능 블록(316)에 의해서 처리된다. 특히, 각각의 파라미터는 들어간 자켓 설명에 기초해서 자켓 테이블에 의해 규정된 바와 같이 어떤 필요한 변환으로 호출 도메인으로부터 피호출 도메인으로 복귀된다.
테스트 블록(318)은, 모든 파라미터가 상기 도메인 경계에서 복사될 때까지 블록(316)의 실행 반복을 위해 제공된다.
다음에, 블록(320)은 타겟 도메인에서 실행하기 위해 호출을 발생한다. 상기 타겟 도메인이 Y 도메인이면, 시뮬레이터(104)는 환경 관리자(102)에 의해 작동된다.
X-Y 또는 Y-X 호출 도메인에 대해서, 블록(322)은 복귀 결과를 블록(308)에 의해 저장된 호출 도메인 상태로 복사하기 위해 블록(316,318)에 대해 설명된 것과 같은 방식으로 자켓 테이블을 사용한다. 결국, 블록(324)은 호출 상태를 수정된 것으로서 저장하며, 코드 실행은 호출 도메인에서 다시 복귀된다. 다시, 상기 복귀 도메인이 Y 도메인이면, 상기 시뮬레이터는 환경 관리자(102)에 의해 작동된다. 상기 자케팅 메카니즘은 순환되며 비동기-소프트웨어 트랩(AST)이 다시 들어간다.
[크로스-도메인 데이터 자케팅]
X 도메인으로부터 Y 도메인으로 데이터를 참조하는 것은 공통 어드레스 공간이 양호한 실시예에서 사용되므로 특별한 해결책을 필요로 하지 않는다. Y 코드는 Y 영상내에 할당된 데이터 구조를 자유롭게 참조하지만, Y 코드는 X 루우틴에서 우선된 전체 데이터 선언을 함축하여 볼 수 없으며, 자케팅은 X 도메인으로 특권 Y 데이터 참조를 위해 필요한 링크를 제공하도록 Y에서 X 방향으로 사용된다.
상기 데이터 자켓은 데이터 구조 및 그 크기의 상징적 명칭의 선언을 포함하며, 필요하면, 그 액세스 모드의 상징적 명칭의 선언도 포함한다. 인덱스 값이 루우틴에 대한 자켓에서 사용되는 방식으로 사용된다.
크로스-도메인 데이터 참조를 수행함에 있어서, 시뮬레이터(104)는 데이터 참조를 위해 인덱스 값을 사용하고자 하며 엑세스 위반은 불법 어드레스로 인해 발생된다. 구동기는 시뮬레이터내에서 작동되며 자켓 시스템내의 판독 또는 기입 루우틴은 데이터 참조의 어드레스로부터 X 도메인내의 타켓 어드레스를 계산한다. 이어서 그 데이터는 인출 또는 저장되고 만족된 데이터 참조와 함께 시뮬레이터로의 복귀가 행해진다.
다중 코드 실행시 코드 인터페이스 자케팅에 특히 적합한 크로스-도메인 명령 호출 및 데이터 참조를 검출하여 멀티 아키덱춰 환경내에서 시스템을 디버깅하기 위한 본 발명의 개선된 시스템 및 방법에 대한 다양한 변형 및 수정이 본 발명의 범위 및 기술적 사상을 벗어나지 않고 당업자에 의해 가능할 것이다. 따라서 본 발명은 부속 청구범위내에 속하는 정도의 모든 변형 및 수정을 포함하여야 한다.
Claims (18)
- 제1하드웨어(X) 아키텍춰를 구현하는 것으로서, 메모리 시스템과, 적어도 하나의 제2컴퓨터 하드웨어(Y) 아키텍춰를 시뮬레이팅하기 위한 서브 시스템 및 크로스-도메인 호출을 춰급하기 위한 자켓 서브시스템을 구비하여 다중코드를 실행 및 디버깅하기 위한 시스템을 포함하는 컴퓨터 시스템내의 크로스-도메인 호출을 검출하기 위한 시스템에 있어서, X 도메인내의 상기 X 하드웨어상에 저장된 X 코드를 실행하기 위한 수단과; Y 도메인내의 상기 시뮬레이팅 수단상에 저장된 Y 코드를 실행하기 위한 수단과; Y 도메인내의 서비스를 위해 실행중인 X 코드 루우틴으로부터의 호출을 검출하고 상기 자켓 서브시스템에 의한 처리를 위해 상기 X 호출을 전송하기 위한 수단과;X 도메인내의 서비스를 위해 실행중인 Y 코드 루우틴으로부터의 호출을 검출하고 상기 자켓 서브시스템에 의한 처리를 위해 상기 Y 호출을 전송하기 위한 수단을 구비하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제1항에 있어서, 상기 X 호출 검출 수단이 링크 시간에서 호출된 어드레스가 알려지지 않은 Y 루우틴의 실행을 위해 X 루우틴으로부터의 호출을 검출하기 위한 수단을 포함하고, 상기 알려지지 않은 어드레스의 호출 검출 수단이 Y 루우틴에 대한 X 호출을 오류로서 자동으로 검출하여 그 X 호출을 상기 자켓 서브시스템으로 전송하는 X 명령 오류 하드웨어를 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제2항에 있어서, 상기 알려지지 않은 어드레스 X 호출 검출 수단이 X 호출의 타겟 어드레스를 계산하여 타겟 어드레스가 Y 도메인에 속하는 경우 그 X 호출을 상기 자켓 서브시스템에 전송하기 위한 수단을 추가로 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제1항 또는 제2항에 있어서, 상기 X 호출 검출 수단이 링크 시간에서 호출된 어드레스가 알려진 Y 루우틴의 실행을 위해 X 루우틴으로부터의 각 호출을 처리하여 그 호출을 상기 자켓 서브시스템에 전송하기 위한 X 스터브 루우틴을 포함하고, 별도의 X 스터브 루우틴이 Y 도메인내의 각 호출 가능한 루우틴을 위해 제공되는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제1항 또는 제2항에 있어서, 상기 Y 코드 호출 검출 수단이 링크 시간에서 타겟 어드레스가 알려진 경우 각 Y 호출의 타겟 어드레스의 도메인을 검출하기 위한 수단과, 각 호출을 타겟 어드레스가 X 도메인에 있는 것으로 검출하는 상기 자켓 서브시스템에 전송하기 위한 수단을 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제4항에 있어서, 상기 Y 코드 호출 검출 수단이 타겟 어드레스가 링크 시간에서 알려진 경우 각 Y 호출의 타겟 어드레스의 도메인을 검출하기 위한 수단과, 각 호출을 타겟 어드레스가 X 도메인에 있는 것으로 검출하는 상기 자켓 서브시스템으로 전송하기 위한 수단을 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제5항에 있어서, 상기 Y 코드 호출 검출 수단이 링크 시간에서 타겟 어드레스가 알려지지 않은 각 Y 호출을 공통적으로 처리하여 각 Y 호출을 상기 자켓 서브 시스템으로 전송하기 위한 공통 스터브 루우틴을 추가로 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제7항에 있어서, 상기 공통 스터브 루우틴이 링크 시간에서 타겟 어드레스가 알려지지 않은 각 Y-X 호출을 위해 실행 시간에서 계산된 타켓 어드레스를 사용하여 Y-X 크로스-도메인 호출을 처리하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제1항 또는 제2항에 있어서, 상기 메모리내의 데이터가 일반적으로 글로발 형태로 엑세스 가능하며, 상기 Y 호출 검출 수단이 X 도메인 춰급을 위해 소정의 Y 데이터 참조를 검출하여 상기 자켓 서브시스템에 전송하기 위한 수단을 포함하고, 소정의 Y 데이터 참조가 X 하드웨어 시스템에서 특권을 갖는 참조이고, 상기 데이터 참조 검출 수단이 X 엑세스 위반 검출기를 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 제9항에 있어서, 상기 데이터 참조 검출 수단이 Y 데이터 참조의 타겟 어드레스를 판별하여 타겟 어드레스가 X 도메인에 속하는 경우 X 도메인 춰급을 위해 참조를 전송하기 위한 수단을 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 시스템.
- 메모리 시스템을 갖는 제1하드웨어(X) 아키텍춰를 구현하며 적어도 하나의 제2컴퓨터 하드웨어(Y) 아키텍춰를 시뮬레이팅하기 위한 서브 프로세스, 크로스-도메인 호출을 춰급하기 위한 자켓 서브프로세스 및 크로스-도메인 호출을 검출하기 위한 서브프로세서를 포함하여 다중 코드를 실행 및 디버깅하기 위한 프로세스를 포함하는 컴퓨터를 동작하는 방법에 있어서, X 도메인내의 상기 X 하드웨어상에 저장된 X 코드를 실행하는 단계와; Y 도메인내의 상기 시뮬레이팅 수단상에 저장된 Y 코드를 실행하는 단계와;Y 도메인내의 서비스를 위해 실행중인 X 코드 루우틴으로부터의 호출을 검출하고 상기 자켓 서브시스템에 의한 처리를 위해 상기 X 호출을 전송하는 단계와;X 도메인내의 서비스를 위해 실행중인 Y코드 루우틴으로부터의 호출을 검출하고 상기 자켓 서브시스템에 의한 처리를 위해 상기 Y 호출을 전송하는 단계를 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 방법.
- 제11항에 있어서, 상기 X 호출 검출 단계가 링크 시간에서 호출된 어드레스가 알려지지 않은 Y 루우틴의 실행을 위해 X 루우틴으로부터의 호출을 검출하는 단계를 포함하고, 상기 알려지지 않은 어드레스의 호출 검출 단계가 Y 루우틴에 대한 X 호출을 오류로서 자동으로 검출하여 그 X 호출을 상기 자켓 서브프로세스로 전송하는 X 명령 오류 하드웨어를 사용하는 단계를 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 방법.
- 제11항에 있어서, 상기 알려지지 않은 어드레스 X 호출 검출 단계가 X 호출의 타겟 어드레스를 계산하여 타겟 어드레스가 Y 도메인에 속하는 경우 그 X 호출을 상기 자켓 서브프로세스에 전송하기 위한 단계를 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 방법.
- 제11항 또는 제12항에 있어서, 상기 X 호출 검출 단계가 링크 시간에서 호출된 어드레스가 알려진 Y 루우틴의 실행을 위해 X 루우틴으로부터의 각 호출을 처리하여 그 호출을 상기 자켓 서브프로세스에 전송하기 위한 X 스터브 루추틴을 사용하는 단계를 포함하고, 별도의 X 스터브 루우틴이 Y 도메인내의 각 호출 가능한 루우틴을 위해 사용되는 것을 특징으로 하는 크로스-도메인 호출 검출 방법.
- 제11항 또는 12항에 있어서, 상기 Y 코드 호출 검출 단계가 링크 시간에서 타겟 어드레스가 알려진 경우 각 Y 호출의 타겟 어드레스의 도메인을 검출하는 단계와, 각 호출을 타겟 어드레스가 X 도메인에 있는 것으로 검출하는 상기 자켓 서브프로세스에 전송하는 단계를 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 방법.
- 제14항에 있어서, 상기 Y 코드 호출 검출 수단이 타겟 어드레스가 링크 시간에서 알려진 경우 각 Y 호출의 타겟 어드레스의 도메인을 검출하고, 각 호출을 타겟 어드레스가 X 도메인에 있는 것으로 검출하는 상기 자켓 서브시스템으로 전송하는 수단을 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 방법.
- 제15항에 있어서, 상기 Y 코드 호출 검출 단계가 링크 시간에서 카겟 어드레스가 알려지지 않은 각 Y 호출을 공통적으로 처리하여 각 Y호출을 상기 자켓 서브 시스템으로 전송하기 위한 공통 스터브 루우틴을 사용하는 단계를 포함하고, 상기 공통 스터브 루우틴이 링크 시간에서 타겟 어드레스가 알려지지 않은 각 Y-X 호출을 위해 실행 시간에서 계산된 타켓 어드레스를 사용하여 Y-X 크로스-도메인 호출을 처리하도록 사용되는 것을 특징으로 하는 크로스-도메인 호출 검출 방법.
- 제11항 또는 제12항에 있어서, 상기 메모리내의 데이타가 일반적으로 글로발 형태로 액세스 가능하며, 상기 Y 호출 검출 단계가 X 도메인 춰급을 위해 소정의 Y 데이터 참조를 검출하여 상기 자켓 서브시스템에 전송하는 단게를 포함하고, 소정의 Y 데이터 참조가 X 하드웨어 시스템에서 특권을 갖는 참조이고, 상기 데이터 참조 검출 수단이 X 액세스 위반 검출기를 포함하는 것을 특징으로 하는 크로스-도메인 호출 검출 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US66607291A | 1991-03-07 | 1991-03-07 | |
US666,072 | 1991-03-07 | ||
PCT/US1992/001722 WO1992015961A2 (en) | 1991-03-07 | 1992-03-05 | Improved system and method for detecting cross-domain instruction calls and data references especiallly adapted for code interface jacketing in a multi-code execution and debugging system within a multi-architecture environment |
Publications (1)
Publication Number | Publication Date |
---|---|
KR950012113B1 true KR950012113B1 (ko) | 1995-10-14 |
Family
ID=24672707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019920702761A KR950012113B1 (ko) | 1991-03-07 | 1992-03-05 | 멀티 아키텍춰 환경내의 다중 코드 실행 및 디버깅 시스템에서 코드 인터페이스 자케팅에 특히 적합한 크로스-도메인 명령 호출 및 데이타 참조를 검출하기 위한 시스템 및 방법 |
Country Status (10)
Country | Link |
---|---|
EP (1) | EP0530351B1 (ko) |
JP (1) | JPH05505694A (ko) |
KR (1) | KR950012113B1 (ko) |
AU (1) | AU651682B2 (ko) |
CA (1) | CA2081977A1 (ko) |
DE (1) | DE69219538T2 (ko) |
HK (1) | HK1007353A1 (ko) |
IE (1) | IE920747A1 (ko) |
MX (1) | MX9200935A (ko) |
WO (1) | WO1992015961A2 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0671685B1 (en) * | 1994-03-08 | 1998-11-04 | Digital Equipment Corporation | Method and apparatus for detecting and executing cross-domain calls in a computer system |
SE504860C2 (sv) * | 1994-09-02 | 1997-05-12 | Ericsson Telefon Ab L M | Referensmodell för gränssnitt |
DE59712827D1 (de) * | 1996-07-09 | 2007-04-26 | Fujitsu Siemens Computers Gmbh | Verfahren zur migration von programmen mit portierbaren und nicht-portierbaren programmteilen |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4727480A (en) * | 1984-07-09 | 1988-02-23 | Wang Laboratories, Inc. | Emulation of a data processing system |
JP2888242B2 (ja) * | 1988-11-29 | 1999-05-10 | 富士通株式会社 | マイクロプロセッサのプログラム開発システム |
US5146593A (en) * | 1989-03-06 | 1992-09-08 | International Business Machines Corporation | Procedure call interface |
JPH0362202A (ja) * | 1989-07-31 | 1991-03-18 | Japan Electron Control Syst Co Ltd | 制御プログラム開発装置 |
-
1992
- 1992-03-04 MX MX9200935A patent/MX9200935A/es unknown
- 1992-03-05 KR KR1019920702761A patent/KR950012113B1/ko not_active IP Right Cessation
- 1992-03-05 CA CA002081977A patent/CA2081977A1/en not_active Abandoned
- 1992-03-05 EP EP92908480A patent/EP0530351B1/en not_active Expired - Lifetime
- 1992-03-05 DE DE69219538T patent/DE69219538T2/de not_active Expired - Fee Related
- 1992-03-05 AU AU15815/92A patent/AU651682B2/en not_active Ceased
- 1992-03-05 WO PCT/US1992/001722 patent/WO1992015961A2/en active IP Right Grant
- 1992-03-05 JP JP92508256A patent/JPH05505694A/ja active Pending
- 1992-03-06 IE IE074792A patent/IE920747A1/en not_active Application Discontinuation
-
1998
- 1998-06-24 HK HK98106472A patent/HK1007353A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
HK1007353A1 (en) | 1999-04-09 |
JPH05505694A (ja) | 1993-08-19 |
WO1992015961A3 (en) | 1992-12-10 |
CA2081977A1 (en) | 1992-09-08 |
AU651682B2 (en) | 1994-07-28 |
EP0530351B1 (en) | 1997-05-07 |
DE69219538D1 (de) | 1997-06-12 |
AU1581592A (en) | 1992-10-06 |
EP0530351A1 (en) | 1993-03-10 |
MX9200935A (es) | 1993-03-01 |
WO1992015961A2 (en) | 1992-09-17 |
IE920747A1 (en) | 1992-09-09 |
DE69219538T2 (de) | 1997-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR960003137B1 (ko) | 멀티 아키텍춰 환경내의 다중 코드 실행 및 디버깅 시스템에서 크로스-도메인 호출을 자켓하기 위한 개선된 시스템 | |
US5548717A (en) | Software debugging system and method especially adapted for code debugging within a multi-architecture environment | |
US5613098A (en) | Testing and debugging new Y architecture code on existing X architecture system by using an environment manager to switch between direct X code execution and simulated Y code execution | |
US5911073A (en) | Method and apparatus for dynamic process monitoring through an ancillary control code system | |
CA2292123C (en) | Method and system for modifying executable code to add additional functionality | |
US6490721B1 (en) | Software debugging method and apparatus | |
US6314560B1 (en) | Method and apparatus for a translation system that aggressively optimizes and preserves full synchronous exception state | |
US5680584A (en) | Simulator system for code execution and debugging within a multi-architecture environment | |
US5764947A (en) | System and method for automatically interfacing call conventions between two dissimilar program units | |
US20040205720A1 (en) | Augmenting debuggers | |
CN101667154A (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
Davidson et al. | An overview of firmware engineering | |
EP0595540A1 (en) | Debugging/modifying of software in ROM | |
KR950012113B1 (ko) | 멀티 아키텍춰 환경내의 다중 코드 실행 및 디버깅 시스템에서 코드 인터페이스 자케팅에 특히 적합한 크로스-도메인 명령 호출 및 데이타 참조를 검출하기 위한 시스템 및 방법 | |
WO2024069730A1 (ja) | デバッグ装置及びデバッグ方法 | |
KR100214125B1 (ko) | 전전자 교환기에서 함수 파라미터 추적 방법 | |
JP2502128B2 (ja) | コンパイラ装置 | |
Darcy et al. | Using Stimulation to Develop and Port Software | |
GB2616340A (en) | Methods, systems, and computer readable media for customizing data plane pipeline processing using Berkeley packet filter (BPF) hook entry points | |
Berthaud et al. | Coupling virtual machines and system construction | |
KR19990052901A (ko) | 전전자 교환기의 프로그램 실행 방법 | |
JPH0695910A (ja) | 異常処理のための対話型デバッグ制御方式 | |
JP2003150404A (ja) | ソフトウェア開発装置および開発プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
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: 19981231 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |