KR950006617B1 - 프로그램 동작시에 프로그램 유닛의 연결 방법 및 장치 - Google Patents

프로그램 동작시에 프로그램 유닛의 연결 방법 및 장치 Download PDF

Info

Publication number
KR950006617B1
KR950006617B1 KR1019920702759A KR920702759A KR950006617B1 KR 950006617 B1 KR950006617 B1 KR 950006617B1 KR 1019920702759 A KR1019920702759 A KR 1019920702759A KR 920702759 A KR920702759 A KR 920702759A KR 950006617 B1 KR950006617 B1 KR 950006617B1
Authority
KR
South Korea
Prior art keywords
image
symbol
target image
identified
vector
Prior art date
Application number
KR1019920702759A
Other languages
English (en)
Inventor
다니엘 엘 머피
Original Assignee
디지탈 이큅먼트 코오포레이숀
로날드 이. 마이릭
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 디지탈 이큅먼트 코오포레이숀, 로날드 이. 마이릭 filed Critical 디지탈 이큅먼트 코오포레이숀
Application granted granted Critical
Publication of KR950006617B1 publication Critical patent/KR950006617B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Abstract

내용 없음.

Description

[발명의 명칭]
프로그램 동작시에 프로그램 유닛의 연결 방법 및 장치
[도면의 간단한 설명]
제1도는 본 발명의 특징을 나타내는 컴퓨터상에서 실행을 위한 여러개의 코드 이미지를 도시한 도면.
제2도는 본 발명에 따라 이미지를 연결시키는 방법이 수행될 수 있는 컴퓨터를 도시한 도면.
제3도는 기동시에 이미지를 연결시키기 위해 VAX/VMS에서 사용되는 전송벡터를 도시한 도면.
제4도는 본 발명의 한 실시예에 따라 코드 이미지, 관련 심볼 및 심볼벡터를 도시한 도면.
제5도는 본 발명의 한 실시예에 따라 사용되는 선택 화일 프로세싱에 부가되는 스텝의 흐름도.
제6도는 제4도에서 본 발명의 실시예에 따라 심볼 참조를 프로세싱하도록 사용되는 링커에 부가되는 스텝의 흐름도.
제7도는 제4도에서 본 발명의 실시예에 따라 인터-이미지 참조를 고정하기 위해 이미지 활성자에서 사용되는 스텝의 흐름도.
[발명의 상세한 설명]
본 발명은 컴퓨터 프로그래밍에 관한 것으로, 특히 공유 가능 이미지를 지원하는 주변 장치의 코드 이미지 외부에서 볼 수 있는 호출 가능 심볼들을 만드는 방법에 관한 것이다.
컴퓨터 프로그램이 목적 코드 모듈을 생성하도록 컴파일될 때, 상기 모듈내에 심볼들이 있는데, 상기 모듈은 절차상에 호출자(calls)나 그와 같은 것으로서 가시 외부 모듈이 되어야 한다. 대개, 상기 모듈들의 넘버는 실행가능 이미지를 생성하도록 함께 연결되고 호출 가능 심볼들의 상대 위치를 연결하는 순간에 식별된다. 결합 이미지가 CPU상에서 활성화될 때(실행시간에) 상기 심볼들은 메모리 어드레스에 할당되고, 그래서 호출자들은 특정어드레스에 만들어진다. 컴퓨터상에 이용되는 대부분의 오퍼레이팅 시스템은 실행 시간에 단일 결합된 실행 가능 이미지를 생성하고, 따라서 상기 할당된 메모리 위치는 다른 부분의 프로그램에 고정관계를 생성한다.
그러나, VAX/VMSTM의 특징은 공유 가능한 목적 코드 이미지를 지원하는 것이다. 응용 프로그램에서는 예를 들어, 프린팅, 비디오 디스플레이 등을 위해 다른 많은 프로그램에 의해 이용되는 라이브러리 이미지를 이용할 수 있다. 각각의 응용 프로그램에 대한 각각의 상기 라이브러리 이미지가 카피(copy)를 이용하기 보다는 다수의 유저(user) 및/또는 다중-태스킹(multi-tasking) 주변 장치에서 동시에 활성화된 프로그램의 수에 의해서 상기 이미지들의 공유 가능성이 제공된다. 그러므로, 여러개의 프로그램들이 라이브러리 이미지를 이용하는 경우, 상기 이미지를 이용하여 각각의 프로그램에 대한 하나의 카피 대신에 상기 이미지가 오직하나의 카피만이 활성화될 필요가 있다. 이와같은 방식으로, 실제 메모리 공간은 보존된다. 더욱 주목할 점은, 계층적 메모리에서 공유 이미지는 고속 메모리에서 머무르고 필요시엔 접근 가능하며, 따라서 종합적인 성능이 개선 가능하다는 점이다. 즉, 요구되는 이미지가 필요시에는 가상 메모리 시스템의 디스크에 교체 아웃되는 대신에 실제 메모리나 캐시 메모리에 존재할 수 있다는 것이다.
상기 VMS 오퍼레이팅 시스템의 상기 공유 가능한 이미지 특징을 이용하면, 큰 프로그램 유닛(“이미지들”)은 한 세트의 컴파일된 모듈로부터 구성될 수 있고, 다른 상기 이미지 및 상기 오퍼레이팅 시스템 그자체에서 서비스를 불러낼 수 있다. 이리하여, 이미지들은 슈러모듈라 프로그램 유닛으로서 제공되는데, 상기 유닛은 다른 벤더(Vendor)에 의해서 공급될 수 있고, 어떤 제한을 갖고서 상기 유닛 주위에 다른 유닛이 교체되더라도 재건할 필요가 없다. 메인 프로그램 블록은 다수 유저, 다중 태크킹 주변 장치에서 동일 CPU상에 실행하는 다른 태스크에 의해 이용되는 특정 목적용(예컨대, 수학적 프로세싱, 윈도잉(windowing) 등) 메모리의 이미지를 이용할 수 있다. 상기 방식으로, 이와같은 보조 프로그램 기능들은 메모리내에서 복사될 필요가 없고, 이로써 메모리 공간을 보존하며, 이미지 활성화 상태에서 시간이 절약된다.
공유 가능한 코드 이미지가 특징이 VAX/VMS 오퍼레이팅 시스템이 귀중한 일부분이 되어 왔던 한편, 컴퓨터 아키텍쳐의 진보에 있어서는 상기 진보된 아키텍쳐를 이용한 프로그램에 대한 개선 및 확장된 자격(capability)을 제공하는 것이 필요해왔다. 예를 들면, 데이타 경로 폭은 8비트에서 16비트로, 32비트로, 지금은 64비트로 확장되어 왔다. 메모리는 굉장히 저렴해졌고 고속이 되어 왔다. 반도체 VLSI기법은 컴퓨터의 구성요소를 더욱더 집적되게끔 해왔고, 그 결과 스피드, 가격, 전력 손실 및 크기면에서 향상을 가져왔다. 컴파일러 이론에서의 진보는 기능 수행의 기본적인 여러 단계들을 마이크로 코드에 내장시키기 보다는 프로그래머나 컴파일러에 밝히는 것을 쉽게 하도록 해주었다. 상기 및 다른 요인들은 VAX머신(machine)의 CISC아키텍쳐보다는 RISC아키텍쳐로 불리워지는 결과를 가져왔다. 특히, 상기 향상된 모든 기법을 사용한 향상된 64비트 RISC아키텍쳐가 개발되어 왔는데, 이는 디지탈 이큅먼트 코오포레이숀에 양도되고, 1990.6.29.자로 출원되어 계류중인 미합중국 특허 출원 제547,619호에 게재되어 있고, 이는 VAX 코드에 기록된 프로그램이 변환될 수 있도록 고성능 수단을 제공한다. 기록된 프로그램을 상기 VAX아키텍쳐 및 직접 변환되는 상기 VMS오퍼레이팅 시스템에 적용하기 위해서 VAX/VMS의 많은 특징들이 향상된 RISC아키텍쳐에 대한 오퍼레이팅 시스템에 지원되어야만 한다.
이들 중에 공유 가능한 이미지의 개념이 존재한다.
상기 향상된 RISC아키텍쳐는 다른 명령어 세트와 다른 연결 메카니즘을 갖기 때문에, 상기 특징이 여전히 수단이 될 수 있도록 VAX/VMS로부터 코드를 번역하는 규정이 만들어져야 한다. 또한, VMS의 상기 공유 가능한 이미지는 이미지의 독립성에 관한 제한을 갖고 있는데, 상기 제한을 완화시킴으로써 상기 향상된 RISC주변 장치에서의 상기 수단은 더욱 융통성을 갖게 되고 덜한 제한성을 갖게 된다.
종래에는, 상기 VAX/VMS오퍼레이팅 시스템은 목표 이미지의 전송 벡터를 이용하므로써 공유 가능한 이미지는 지원했다. 상기 전송 벡터는 외부에서 보여질 수 있던 이미지내에의 각각의 절차에 대한 엔트리를 갖는 데이타 구조였다. 각각의 엔트리는 상기 절차중 하나에 오프셋을 포함했으며, 상기 엔트리는 고정 순서내에 존재했다. 호출 이미지(calling image)는 오직 전송벡터의 어드레스와 상기 전송 벡터내에서 호출된 절차의 서열수만을 했다. 그러므로, 이미지 실행 시간에 상기 호출된 절차는 단지 포인터에 의해 실제 어드레스가 밝혀지는 전송 벡터(또는, 더욱 상세히 말하자면, 절차라 불리우는 서열수로 배치됨에 따른 상기 벡터의 오프셋)을 참조하므로써 정의된다. 이미지(11)에서 상기 절차(Proc-A, Proc-B, 등)의 실제 위치는 예를 들어 상기 코드에 갱신 및 교정으로 변화될 수 있다. 그러나, 상기된 바와 같이 상기 방법은 본 주변 장치에서 어떤 결점을 갖는다.
따라서, 상기 공유 가능 이미지 특징에 의한 VAX/VMS는 프로그램 개시시에 이미지들 사이에 제한된 종류의 연결(linking)을 제공한다. 상기 연결을 위해서 프로그래머들이 수작업으로 공유될 각각의 이미지내에서 “전송 벡터”를 구성하는 것이 필요하고, 여기에서 각각의 엔트리는 상기 이미지나 데이타 셀 또는 구조내에서 절차에 대한 전송 포인트를 나타낸다. 상기 벡터를 구성하므로써(오퍼레이팅 또는 프로그래밍 시스템의 많은 인터페이스에서 통상 실시하는), 각 엔트리의 상대 값(오프셋)은 고정되고, 활성 시간에서 상기 전송 벡터의 위치가 알려지는 한, 상기 전송 벡터를 호출하는 다른 이미지로 바인딩될 수도 있다.
그러나 상기 공유 가능 이미지 특징의 전송 벡터를 사용하는데 있어서 여러가지 단점들이 지적된다. 첫째, 상기 전송 벡터를 통해 실제 목표루틴으로의 전송 제어를 필요로하기 때문에 공유 이미지를 각각 호출하는데 있어 추가적인 실행 오버헤드가 부과된다는 점이다. 상기 오버 헤드는 첨가된 명령어를 실행하고 부가적인 메모리 참조를 만들도록 구성된다. 둘째, 상기 전송 벡터를 지정하고 보존하는데 있어서 추가적인 프로그래밍 노력이 필요하다는 점이다. 셋째, 상기 벡터가 실수에 의해 변경되면 실행 에러가 발생한다는 점이다. 넷째, 데이타 셀 및 구조(실행 가능 절차와 구별되는 것으로서)를 참조하는데 있어서 융통성이 부족하다는 점인데, 이는 이들이 상기 전송벡터 자체내에 위치되어야만 하기 때문이며, 그밖에 추가적인 실행 오버헤드 및 프로그래밍 노력에 손상을 입히기 때문이다. 다섯째, 프로그래머의 언어 선택에 있어서 이용하지 못할 수도 있는 전송 벡터를 지정하도록 특수 언어 의미론(semantics)이 필요할 수도 있다는 점이다.
[발명의 개요]
본 발명의 실시예에 따르면, 본 발명에서는 프로그램 동작시에 이미지들을 연결하고, 상기 서술된 종래 방법의 제한 요소를 어드레싱하는 향상된 방법이 제공된다. 상기 향상된 방법은 자동 구성 “심볼 벡터”의 특징을 이용하는데, 상기 “심볼 벡터”는 프로그램 동작시에 링커 및 오퍼레이팅 시스템이 심볼값들의 신속한 탐색(lookup)을 위해 이용되고, 이로써 링크 시간 바인딩의 융통성과 마찬가지의 융통성을 제공한다.
본 발명의 방법에 따르면, 구성되는 각각의 공유 가능 이미지에 대하여, 프로그래머는 상기 이미지를 외부에서 볼 수 있도록 구성되는 심볼의 리스트를 제공한다(이는 번역 유닛에서 선언 심볼을 비교하는데 상기 심볼은 유닛의 외부에서 볼 수 있도록 만들어져야 한다). 상기 심볼들은 절차 명칭, 데이타셀, 절대값 또는 심볼 값의 어떤 다른 유효 용도가 될 수 있다. 단지 요구되는 점은 상기 리스트의 순서가 다음에 구축되는 하나의 이미지로부터 고정되어야 한다는 것이다. 상기 리스트로부터, “심볼 벡터”는 각각의 식별된 심볼 값으로 구성되고, 상기 심볼 벡터는 상기 공유 가능 이미지와 관련된다. 심볼 테이블도 물론 공유가능 이미지와 관련되고 여기서 각각의 심볼은 심볼 벡테에서 자신의 인덱스 값을 갖는다. 상기 링커가 다른 이미지가 참조를 분석하는 경우, 상기 링커는 상기 목표 이미지가 심볼 테이블에서 심볼 탐색을 하고 인덱스를 목표심볼 벡터의 인덱스를 획득한다. 상기 인덱스는 상기 호출 이미지에서 바인딩된다. 그 다음에, 프로그램 활성시에, 상기 이미지 활성자는 호출 이미지에서 바인딩된 인덱스를 사용하여 목표 이미지 심볼의 현재 값을 획득한다.
향상된 IRSC명령어 세트의 디자인으로 인해, 호출 표준의 디자인으로 인한 몇가지 경우에 있어서, 프로그램 동작시에 획득된 심볼 참조의 현재 값은 부가적인 오버 헤드 없이 사용되고 컴파일 또는 링크 시간에 알려진 심볼 값과 비교된다.
중요한 특징은 상기 심볼 벡터는 번역 코드로 지정될 필요가 없다는 점인데, 이로써, 언어 확장에 대한 필요성이 없어진다. 단지 상기 링커는 상기 심볼 벡터에 대한 심볼의 선언을 지원만하면 된다.
[도면의 간단한 설명]
본 발명의 인정된 특징 및 특허 청구 범위에 설명된다. 그러나 본 발명 자체, 뿐만 아니라 본 발명의 다른 장점 및 특징은 다음의 첨부된 도면을 참조하여 특수한 실시예의 상세한 설명으로 잘 이해할 수 있을 것이다.
[특정 실시예의 상세한 설명]
제1도를 참조하면, 컴퓨터 프로그램의 일부는 호출 이미지라 불리우는 코드 이미지(10 : 코드의 블록)를 나타낸다. 상기 프로그램의 또 다른 부는 목표 이미지라 불리우는 코드 이미지(11)를 나타낸다. 상기 호출 이미지(10)는 절차 호출자(12 : procedure calls)를 포함하는데, 이는 목표 이미지(11)의 Proc-A, Proc-B 및 Proc-C로 인용되는 어떠한 절차(13)를 호출하는 명령어이다. 소오스나 어셈블리 포맷에 있어서, 상기 코드 이미지들로 표현되는 상기 프로그램 세그먼트들은 심볼 형태, 즉(예컨대 Proc-A, Proc-B 등)의 명의로 호출된 절차(13)를 식별하지만, 상기 코드 이미지가 CPU에 의해 실행되는 메모리에서 활성화되는 경우에 상기 절차(13)는 그 다음에 어드레스(또는 다음에 인용된 연결쌍)에 의해 식별되어져야만 한다. 물론, 상기 어드레스들은 활성시간, 즉 이미지(10,11)의 코드가 제2도에 도시된 CPU(14)에 의해 불려내어져서 메모리(15)에 로딩되기 전까지는 알려지지 않는다. VMS와 같은 가상 메모리 주변 장치에서, 가상 어드레스들은 상기 코드 이미지들이 메모리에서 디스크(16)로 교체(swapping)되기 때문에 메모리(15)의 실제 어드레스들이 다중 작업 주변 장치에서 동적 형태로 변경될 수 있을지라도, 활성시에 지정되고, 고정된다. 서로 참조되어 수행될 수 있는 모든 호출 및 목표 이미지들(10,11 등)이 단일 패키지(즉, 공유 가능 이미지를 사용하지 않고)로 연결되면, 문제점은 다소 해소되지만, 이는 여기에서 다루어지는 케이스가 아니다. 대신, 상기 목표 이미지는 공유 가능해질 수 있고, 즉 다른 호출 이미지(17)는 호출자(18)를 상기 동일 목표 이미지(11)로 수행할 수도 있다. 즉, 대부분의 종래 오퍼레이팅 시스템에서는, 공유 가능 이미지들은 지원되지 않고, 그래서 상기 두 호출 이미지(11)에 참조되는 경우, 다음에, 상기 이미지(10,17)가 독립적으로 활성화된 프로그램내에 존재하고 둘다 동일 목표 이미지(11)에 의해 표현되는 코드의 섹션은 단지 복사된다. 제1도에 도시된 바와 같이 공유 가능 이미지를 지원하기 위해서, 상기 연결 기능을 수행하는 메카니즘이 제공되어야만 한다.
제3도를 참조하면, 공유 가능 이미지를 지원하기 위해서 VAX/VMS 오퍼레이팅 시스템에선 전송 벡터를 사용한다. 상기 VAX아키텍쳐는 1989년 디지탈지에 제2판 간행된 Levy와 Eckhous씨의 “Computer Programing and Architecture : The VAX”라는 저서에 게재되어 있는데, 여기에선 참고로 인용된다.
VMS오퍼레이팅 시스템은 목표 이미지(11)내에 있는 전송 벡터(19)의 정의를 포함하고 있으며, 상기 전송 벡터는 각각의 절차(13)에 대한 엔트리 A', B', C'를 포함하고 있다. 각각의 엔트리는 상기 절차(13)중 한 절차의 오프셋(전송 벡터(19)의 시작에 참조된 포인터)을 포함하고, 상기 엔트리들은 고정 순서로 존재한다. 호출 이미지는 단지 전송 벡터(19)의 어드레스 및 전송 벡터내에 호출된 절차의 서열수(order number)만을 갖출 필요가 있다. 제4도의 이미지(11)내에 있는 절차(Proc-A, Proc-B, 등등)들의 실제 위치는 변경 가능하고 이로써 코드의 갱신이나 정정이 일어나는 경우 전송 벡터의 호출 이미지내의 참조는 여전히 유효한데, 이는 상기 호출 이미지에서 바인딩된 참조가 전송 벡터(19)내에 있는 엔트리의 어드레스가 될 수 있기 때문이다. 그러나, 상기 서술된 바와 같이, 상기 방법은 현환경에 있어서 단점을 갖고 있다. 실행 오버헤드가 각 공유 이미지(11)의 호출상에 부가되는데, 이는 전송 벡터(19)를 통해 실제 목표 루틴(13)으로 전송할때의 제어를 필요로 하기 때문이다 : 상기 오버헤드는 실행 부가 명령어로 구성되며 추가 메모리 참조를 만든다. 전송 벡터(19)를 지정하고 유지하는데 프로그래밍 노력이 부가된다. 상기 벡터(19)가 실수로 변경되면 실행 에러가 발생될 수 있다. 데이타 셀 및 구조(실행 가능 절차(13)과는 구별되는 것으로서)를 참조하는데 있어서 융통성이 부족한데, 이는 상기 데이타가 상기 전송 벡터(19)내의 특수한 엔트리내에 위치되어야만 하고 데이타의 사이즈도 엔트리의 사이즈로 제한되기 때문이며 이로써 상기 데이타들은 전송 벡터의 시작으로부터 어떤 위치에 존재해야 하기 때문에 고정된다. 사용되는 프로그램 언어에 이용할 수 없을 수도 있는 전송 벡터(19)를 지정하도록 특수 언어 의미론이 필요하다.
본 발명에 따르면, 제3도의 전송 벡터(19) 대신에 제4도에서는 심볼 벡터(20)가사용된다. 상술한 바와 같이, 목표 이미지(11)는 외부 참조(즉, 호출이미지(10))에 의해 이용되는 어떤 절차(13)를 포함한다 : 상기 절차(13)은 마찬가지로 Proc-A, Proc-B 및 Proc-C로 언급되고 상기 이미지(11)의 코드내에 있는 임의 위치에 위치된다. 연결 상태에서, 상기 절차(13)(그들의 심볼명칭으로 식별되는)는 식별되고 심볼테이블(21)에 차례로 부가되어 심볼 테이블 엔트리(22)를 작성한다. 상기 심볼 테이블은 코드 이미지와 함께 컴파일에 의해 작성된 일반적인 데이타 구조이고, 링커에 의해 사용되어 변수, 리터럴 값, 절차, 호출 가능 루틴 등, 모든 외부 참조를 위치시킨다. 심볼 테이블내의 각 엔트리는 인덱스를 참조하여 상응하는 아이템의 위치에 대한 모드 이미지로 전송하는 심볼 명칭을 포함한다. 전역 또는 범용이 되도록 프로그래머에 의해 선언되는 어떠한 아이템도 심볼 테이블내에 포함되어, 절차(13)는 선언된다. 또한, 링커는 심볼 벡터(20)를 내장하고 이를 디폴트 위치나 목적 화일에서 정의된 어떤 위치에서 상기 이미지(11)에 배치하는데, 즉 상기 심볼 벡터(20)의 포인터가 헤더(23)에 제공된다. 벡터(20)는 심볼(13)이 링크 목적 화일내에 나타나는 순서대로 내장되고 각 심볼(13)에 대한 엔트리(24)를 포함한다. 상기 순서는 차후 빌드(later build)상에도 동일하게 남아 있어야 한다. 엔트리(24)는 마지막에 부가될 수 있고 다른 엔트리는 쓸모없게 될 수 있지만(엔트리들이 널(null) 엔트리를 유지하는 경우), 진행 엔트리(24)는 동일 원래 포지션에 존재해야만 한다. 링커가 다른 이미지가 참조를 분석하는 경우, 링커는 목표 이미지가 심볼 테이블(21)에서 심볼 탐색을 행하고 엔트리(22)를 발견하며 인덱스를 획득하여 상기 목표 이미지(11)에 대한 심볼 벡터(20)로 보낸다 ; 상기 이미지 명칭(11)에 대한 인덱스(서열 수)는 호출 포지션(12)에서 호출 이미지(10)내에 바인딩된다. 프로그램 동작시에, 이미지 활성자 루틴은 호출 이미지(10)내에 바인딩된 인덱스를 사용하여 목표 이미지(11)내의 현재 심볼값을 획득하고, 헤더(23)을 참조하여 심볼 벡터(20)의 포인터를 획득하며, 심볼 벡터로 인덱싱하여 절차(13)가 발견될 수 있는 곳에서 이미지(11)의 실제 오프셋을 포함하고 있는 엔트리(24)에 보낸다. 상기 심볼 벡터(20)는 메모리내의 활성화된 코드의 일부가 되지 않고 또한 심볼 테이블(21)의 일부도 되지 않는다. 호출 위치(12)에서 참조는 제3도에 간접적으로 도시되는 것보다는 오히려 어드레스가 된다(또는, 어느 경우에서는, 심볼이 리터럴이면 리터럴 값이 된다).
제5도 내지 제7도를 참조하면, 심볼 벡터 특징의 사용에 관련된 동작을 논리 흐름도로 도시하고 있다. 제5도에 있어서, 링크 선택 화일에서 심볼 벡터 선언의 프로세싱 방법이 도시되어 있다. 프로그래머는 절차(13)의 명칭을 상기 링크 선택 화일에 부가하고, 즉, 외부적으로 가시적이거나 호출 가능한 모듈의 아이템의 명칭들을 부가하여, 믿을 수 있는 SYMBOL-VECTOR를 셋팅한다. 제5도의 스텝들은 링커에 의해 실행되는 통상 선택 화일 프로세싱 루틴에 부가되는데 : 제5도의 스텝들은 상기 SYMBOL-VECTOR선택이 보이기만 하면 링커에 의해서 불려진다. 처음에, 변수(N)는 제로로 초기화되고, 다음에, 선언리스트의 마지막에 도달했는지를 인지하도록 결정 포인트(30)를 사용하여 루프가 개시된다. 만일 상기 마지막에 도달되면, 심볼 벡터(20)는 아이템(31)에 의해 지시되어 이미지(11)에 기록되고, 제5도의 동작은 종료된다. 만일 마지막이 아니면, 다음 엔트리(N : 유저에 의해 식별되는 다음 심볼(13)를 얻기 위해 흐름도의 아이템(32)에서 명령 라인이 분석되고, 로컬 변수(SYMBOL)로서 정의되는 한편, 이의 타입(절차또는 데이타 셀)은 변수(TYPE)로서 정의된다. 아이템(33,34)에서 상기 엔트리들이 적절히 정의되었는지를 검사하고, 그렇지 않다면 아이템(35)에서 보고되고 루틴이 출구된다. 상기 검사 결과가 “예”이면, 아이템(36)에서 상기 심볼의 값은 포지션(N)에서 엔트리(24)로서 심볼 벡터(20)에 배치되고, 심볼 테이블(21)의 상응하는 엔트리(22)의 심볼의 값은 상기 심볼 벡터(20)에서 상기 심볼의 통상 포지션(N)으로 재배치된다. 상기 심볼 테이블(21)은 이미지(11)의 일부로서 기록된다. 다음, 아이템(37)에서 상기 엔트리가 절차(데이타 셀 대신)인지를 인지하기 위해 검사되어 만일 절차라면, 상기 심볼에 대하여, 절차 디스크립터(PDSC)로부터 코드 어드레스로 셋업되는 심볼 벡터의 코드 어드레스 필드(CA)를 나타낸다. 코드 어드레스 엔트리는 제7도에서 활성 상태에서 이용된다. 리턴은 아이템(39)에 의해 서열수(ordinal number : N)의 증가로 이루어진다. 상기 루프는 리스트상의 모든 엔트리들(13)이 처리될때 까지 반복되어 그 순간에 완료된 심볼 벡터는 아이템(31)에 기록된다. 제6도는 심볼 참조를 프로세싱하기 위해 링커의 코드에 부가된 스텝들을 도시하고 있다. 처음에, 상기 링커는 프로세싱하기 위해 심볼을 인출(fetch)하고 상기 심볼이 상기 심볼 테이블(21)에 있는 명칭의 엔트리(22)인지를 아이템(40)에서 조사한다 ; 만일 아니라면, 아이템(41)에서 에러가 보고된다. 상기 심볼이 심볼 테이블내에 있는 엔트리이면, 상기 링커는 프로세싱되는 상기 동일 이미지(11)에서 정의되는가를 아이템(42)에서 조사하고, 만일 그렇다면, 아이템(43)에 도시된 바와 같이 상기 심볼 테이블 그 자체로부터 값을 이용한다. 만일 그렇지 않다면, 엔트리(22 : 상기 서열수, 아이템(36)으로부터)의 심볼 테이블 값은 USV(Universal Symbol Value)로서 이용되고, 상기 이미지 명칭은 상기 심볼이 발견되는 상기 이미지(11)의 명칭으로 정의되는데 이와 같은 동작은 아이템(44)에서 수행된다. 다음은 참조 타입상의 경우(아이템 45)인데, 상기 참조 타입이 어드레스 타입이면, 상기 심볼값(USV)는 픽-업 USV로서 정의되고 상기 이미지 명칭은 픽-업 루틴(아이템 46)에 대해 정의된다. 만일 그것이 연결쌍이면, 아이템(47)에서 상기 USV는 현행위치로서 치환되고, 이미지 명칭이 제공된다. 상기 이미지는 활성화될 준비가 되어 있다. 픽-업된 각각의 이미지(각각의 IMNAM)에 대해 심볼값의 리스트가 있다.
제7도를 참조하면, 인터-이미지 참조는 픽업하도록 상기 이미지 활성화(activator)에 사용되는 코드가 흐름도에 도시되어 있다. 상기 이미지가 로딩되고, 상기 픽업 동작은 상기 리스트에 있는 외부 이미지를 프로세싱하기 시작하여 체크 포인트(50)를 갖는 루프를 이용하여 각 리스트가 완료되는지를 조사한다. 각각의 엔트리는 아이템(51)에서 제로로 셋팅되는 루프 변수(Ⅰ)를 갖고 아이템(52)에서 상기 목표 이미지에 대해 모든 픽업 동작이 행해지는지를 조사하도록 루프를 개시한다. 여기서 상기 동작은 상기 링크(제6도 참조)에 의해 발생된 리스트를 다음 단계로 보내는데, 상기 링크는 특정 이미지내에서 만들어질 필요가 있는 모든 픽업을 지시한다 ; 동일한 동작은 픽업을 필요로하는 다른 모든 이미지에 대해 수행될 수 있다. 요구되는 각각의 픽업에 대해, 흐름도의 아이템(53)의 동작에서 두가지 값이 셋팅되는데, 하나는 USV(Universal Value)이고 나머지 하나는 LOC(Location)이다. 상기 넘버 i(FIXUP, USVCi), 아이템(46 또는 47)로부터는 USV로 셋팅되어 요구되는 엔트리(24)에 대한 심볼 벡터(22)의 인덱스를 제공한다 : VAL=SYMVAC.VAL[USA]는 상기 목표 이미지(11)에 대한 심볼 벡터(20)로부터 값을 추출하는 것을 의미하고 USV에 의해 인덱싱되어 상기 심볼에 대한 값을 제공한다. 픽업되는 상기 이미지(10)의 위치는 아이템(53)에서 변수(LOC)이다. 다음에 아이템(54)은 픽업 타입상의 경우인데, 상기 픽업 타입이 어드레스이면 아이템(55)에서 상기 위치는 현재 위치에 VAL를 더한 합계로 셋팅된다. 상기 값(VAL)은 정의되었던 상기 이미지가 심볼이 실제 최종값이 되도록 하고, 즉 유저가 실제로 상기 심볼-명칭(Pfroc-A, 등) 대신에 통상적으로 어드레스(어드레스가 상수가 될지라도)-를 참조하여 직접적으로 얻기를 원하는 것이다. 그래서 @LOC=@LOC+VAL(아이템 55에서)은 아이템(53 : 상기 이미지에 대해)에서 픽업되었던 위치(LOC)에서 상기 값(VAL)이 소망하는 위치를 획득하도록 부가된다는 것을 의미한다. 만일 픽업 타입이 연결쌍이면, 상기 지지된 동작이 수행된다. 하나의 연결쌍은 두개의 독립된 4중 워드로 구성되고 상기 4중 워드는 특정 절차에 관한 어드레스들이며 하나의 4중 워드는 절차 디스크립터이고 나머지 하나는 상기 절차의 코드를 처음으로 명령하는 제 어드레스이다. 이는 인용된 상기 향상된 RISC아키텍쳐상에서 절차 호출을 수행하기 위한 설명이다. 제7도의 아이템(56)에서, 하나의 4중 워드는 @(LOC+8)=VAL에 의한 VAL을 사용하여 픽업된다. 나머지 4중 워드는 상기 심볼 벡터 엔트리(24 : 인덱스로서 서열수 USV 사용하여, 다시 상기 엔트리를 선택하는)로부터 픽업되는 코드어드레스(CA)로 픽업된다. 상기(CA)는 @LOC가 된다. 상기 루프는 모든 픽업이 완료될 때까지 아이템(57)에서 증분된 i로 계속된다.
이상 본 발명은 특정 실시예를 참조하여 서술해 왔는데 본 발명은 이에 한정되지 않으며, 이 분야 통상의 기술자에 의해 본 발명에서 서술된 실시예 뿐만 아니라 또다른 실시예에 있어서도 본 발명의 특허 청구 범위내에서 다양한 수정이 가능하다.

Claims (17)

  1. 컴퓨터상에서 실행되도록 호출 이미지내의 목표 이미지의 참조를 활성화된 이미지에서 제공하는 방법에 있어서, 상기 호출 이미지로부터 호출될 수 있도록 구성될 수는 있는 피식별 심볼의 순서 리스트를 제공하는 단계와 ; 상기 순서 리스트로부터 상기 목표 이미지와 관련되고 상기 각각의 피식별 심볼에 대한 엔트리를 내재하는 심볼 벡터를 구성하는 단계를 포함하는데, 상기 엔트리들중 하나 이상의 엔트리는 심볼에 대한 상기 목표 이미지의 오프셋을 포함하고 상기 각각의 심볼과 관련된 상기 각 엔트리로 구성된 상기 심볼 벡터의 위치를 표시하는 값의 테이블을 제공하며 ; 상기 각각의 피식별 심볼을 지정하는 호출자와 관련하여 상기 테이블로부터 상기 값중 하나를 상기 호출 이미지에 바인딩하는 단계와 ; 상기 목표 이미지와 상기 호출 이미지의 활성 상태에서, 상기 호출이미지로 바인딩된 상기 값을 사용하여 상기 심볼 벡터 상기 하나 이상의 엔트리에 대해 상기 목표 이미지내의 상응하는 심볼의 위치를 내포하는 상기 각각의 피식별 심볼의 상기 심볼 벡터 정보를 구하는 단계를 포함한 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 컴퓨터상에 실행되도록 상기 목표 이미지와 상기 호출 이미지가 활성화된 상태에서는, 상기 심볼 상기 목표 이미지의 일부가 아니고 활성화되지도 않는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 목표 이미지는 공유 가능 이미지인 것을 특징으로 하는 방법.
  4. 제3항에 있어서, 제2호출 이미지를 포함하고, 상기 심볼들을 지정하는 호출자와 관련하여 상기 제2호출 이미지내의 상기 각각의 피식별 심볼에 대한 상기 테이블로부터 상기 값을 바인딩하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서, 상기 엔트리중 하나 이상의 엔트리는 절대값인 것을 특징으로하는 방법.
  6. 컴퓨터상에서 실행될 코드 이미지를 준비하는 방법에 있어서, 목표 이미지의 외부에 있는 호출 이미지에 보여질 수 있도록 구성된 피식별 심볼의 순서 리스트를 제공하는 단계와 ; 상기 순서 리스트로부터 각각의 상기 피식별 심볼에 대해 엔트리를 내재하는 심볼 벡터를 구성하는 단계를 포함하는데, 상기 엔트리는 상기 심볼 벡터를 상기 목표 이미지와 관련하여 서열수에 의해서 상기 심볼 벡터내에 위치하고, 상기 피식별 심볼중 하나 이상의 심볼에 대해 상기 목표 이미지내에 인덱스를 포함하며 ; 상기 목표 이미지와 관련되고 자체내에 상기 심볼에 대한 심볼 벡터내의 상기 서열수를 내재하는 각각의 상기 피식별 심복을 포함하는 심볼 테이블을 구성하는 단계와 ; 연결 상태에서, 상기 각각의 심볼들을 지정하는 호출자와 관련하여 상기 호출 이미지내에 바인딩하는 단계를 포함하는데, 각각의 피식별 심볼에 대한 상기 서열수는 상기 목표 이미지에 대한 상기 심볼 테이블내의 심볼 탐색에 의해 획득되며 ; 활성화 상태에서, 하나 이상의 상기 엔트리에 대해 상기 목표 이미지내에 인덱스를 포함하는 상기 각각의 피식별 심볼의 정보를 획득하도록 상기 호출 이미지내에 바인딩된 상기 서열수를 이용하는 단계를 포함한 것을 특징으로 하는 코드 이미지 준비 방법.
  7. 제6항에 있어서, 상기 컴퓨터상에서 실행되도록 상기 목표 이미지와 상기 호출 이미지가 활성 상태에 있는 경우, 상기 심볼 벡터는 상기 목표 이미지의 일부가 아니며 활성화되지도 않는 것을 특징으로 하는 코드 이미지 준비 방법.
  8. 제6항에 있어서, 상기 목표 이미지는 공유 가능 이미지인 것을 특징으로 하는 코드 이미지 준비 방법.
  9. 제7항에 있어서, 제2호출 이미지를 포함하고, 상기 심볼들을 지정하는 호출자와 관련하여 상기 각각의 상기 피식별 심볼들의 상기 심볼 벡터내에 상기 인덱스를 상기 제2호출 이미지내에 바인딩하는 것을 특징으로 하는 코드 이미지 준비 방법.
  10. 제6항에 있어서, 상기 엔트리들중 하나 이상의 엔트리는 절대값인 것을 특징으로 하는 코드 이미지 준비 방법.
  11. 컴퓨터상에서 실행될 목표 이미지와 호출 이미지를 활성화시키는 장치에 있어서, 상기 호출 이미지로부터 호출할 수 있도록 만들어질 수 있는 피식별 심볼의 순서 리스트를 기록하는 수단과 ; 상기 순서 리스트로부터 상기 목표 이미지와 관련되고 정해진 위치에서 상기 각각의 피식별 심볼에 대한 엔트리를 내재하는 심볼 벡터를 구성하는 수단을 포함하는데, 상기 엔트리들중 하나 이상의 엔트리는 상기 정해진 위치에 상응하는 상기 피식별 심볼로 구성된 상기 목표 이미지내에 인덱스를 포함하며 ; 상기 심볼들을 지정하는 상기 호출자와 관련하여 상기 각각의 피식별 심볼로된 상기 심볼 벡터의 상기 정해진 위치의 서열수를 상기 호출 이미지내에 바인딩하기 위한 수단과 ; 상기 목표 이미지와 상기 호출 이미지가 활성 상태에 있는 경우, 상기 호출 이미지내에 바인딩된 상기 서열수를 이용하여 피식별 심볼에 대한 하나 이상의 엔트리에 대해 상기 심볼 벡터로부터 상기 목표 이미지내에 인덱스로 획득하기 위한 수단을 포함한 것을 특징으로 하는 코드 이미지 준비 방법.
  12. 제11항에 있어서, 상기 컴퓨터상에서 실행하기 위해 상기 목표 이미지와 상기 호출 이미지가 활성 상태에 있는 경우 상기 수단은 상기 심볼 벡터를 활성화하지 않는 것을 특징으로 하는 활성화 장치.
  13. 제11항에 있어서, 상기 목표 이미지는 공유 가능 이미지인 것을 특징으로 하는 활성화 장치.
  14. 제13항에 있어서, 제2호출 이미지를 포함하고, 상기 심볼을 지정하는 호출자와 관련하여 상기 각각의 피식별 심볼에 대한 상기 서열수를 상기 제2호출 이미지내에 바인딩하기 위한 수단을 특징으로 하는 활성화 장치.
  15. 제11항에 있어서, 상기 각각의 피식별 심볼에 대한 상기 서열수를 내재하는 심볼 테이블을 발생하기 위한 수단을 포함하는 것을 특징으로 하는 활성화 방법.
  16. 제15항에 있어서, 바인딩하기 위한 상기 수단은 상기 서열수를 구하기 위해 상기 심볼 테이블을 참조하는 것을 특징으로 하는 활성화 장치.
  17. 제11항에 있어서, 상기 엔트리중 하나 이상의 엔트리는 절대 값인 것을 특징으로 하는 활성화 장치.
KR1019920702759A 1991-03-07 1992-03-04 프로그램 동작시에 프로그램 유닛의 연결 방법 및 장치 KR950006617B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US666,023 1991-03-07
US07/666,023 US5297291A (en) 1991-03-07 1991-03-07 System for linking program units by binding symbol vector index in the symbol table into calling image to obtain current value of the target image
PCT/US1992/001839 WO1992015940A1 (en) 1991-03-07 1992-03-04 Linking of program units at program activation

Publications (1)

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

Family

ID=24672513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920702759A KR950006617B1 (ko) 1991-03-07 1992-03-04 프로그램 동작시에 프로그램 유닛의 연결 방법 및 장치

Country Status (12)

Country Link
US (1) US5297291A (ko)
EP (1) EP0528018B1 (ko)
JP (1) JPH087673B2 (ko)
KR (1) KR950006617B1 (ko)
AU (1) AU655464B2 (ko)
CA (1) CA2082069C (ko)
DE (1) DE69206919T2 (ko)
IE (1) IE72197B1 (ko)
IL (1) IL100993A (ko)
MX (1) MX9200939A (ko)
RU (1) RU2128362C1 (ko)
WO (1) WO1992015940A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408665A (en) * 1993-04-30 1995-04-18 Borland International, Inc. System and methods for linking compiled code with extended dictionary support
US5546586A (en) * 1993-05-06 1996-08-13 Apple Computer, Inc. Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
CA2143488C (en) * 1995-02-27 2000-01-11 Robert Paul Duncan Dynamic link libraries without linker or loader support
US5878263A (en) * 1997-03-05 1999-03-02 International Business Machines Corporation Internal chaining technique for fixup records
DE29807670U1 (de) * 1998-04-28 1998-06-18 Siemens Ag Programmiergerät
JP3837244B2 (ja) 1998-10-23 2006-10-25 松下電器産業株式会社 プログラムリンク装置及び方法
US20040205151A1 (en) 2002-12-19 2004-10-14 Sprigg Stephen A. Triggering event processing
US8402410B2 (en) * 2007-08-27 2013-03-19 Samsung Electronics Co., Ltd. Method and apparatus for managing configuration memory of reconfigurable hardware
US10061571B2 (en) * 2015-11-16 2018-08-28 Qualcomm Innovation Center, Inc. System and method for link time optimization
US10108407B2 (en) * 2016-10-24 2018-10-23 International Business Machines Corporation Loading optimized local entry points for local-use-only function pointers
US10649802B2 (en) 2018-03-21 2020-05-12 Red Hat, Inc. Component based dynamic guest instantiation

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4309756A (en) * 1971-02-17 1982-01-05 Beckler Robert I Method of automatically evaluating source language logic condition sets and of compiling machine executable instructions directly therefrom
US4553205A (en) * 1982-09-21 1985-11-12 Salvatore Porchia Flexible macro expansion process
US4636940A (en) * 1983-03-31 1987-01-13 Hewlett-Packard Company Logic analyzer using source program or other user defined symbols in the trace specification and the trace listing
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
US4961133A (en) * 1987-11-06 1990-10-02 Visystems, Inc. Method for providing a virtual execution environment on a target computer using a virtual software machine
US5067072A (en) * 1987-11-06 1991-11-19 Visystems, Inc. Virtual software machine which preprocesses application program to isolate execution dependencies and uses target computer processes to implement the execution dependencies
JPH01263734A (ja) * 1988-04-08 1989-10-20 Internatl Business Mach Corp <Ibm> マルチ・タスク環境における動的リンク識別子供給方法
US5093916A (en) * 1988-05-20 1992-03-03 International Business Machines Corporation System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks
US5062039A (en) * 1988-09-07 1991-10-29 International Business Machines Corp. Sharing of workspaces in interactive processing using workspace name tables for linking of workspaces
US5097533A (en) * 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
US5201048A (en) * 1988-12-01 1993-04-06 Axxess Technologies, Inc. High speed computer system for search and retrieval of data within text and record oriented files
US5212633A (en) * 1989-08-18 1993-05-18 Sharedata System for transferring resident programs to virtual area and recalling for instant excution in memory limited DOS system using program control tables
US5253361A (en) * 1989-09-15 1993-10-12 Emtek Health Care Systems, Inc. System for accessing a row of time-dependent data by referring to a composite index table indicating page locations of linked row labels

Also Published As

Publication number Publication date
AU655464B2 (en) 1994-12-22
EP0528018A1 (en) 1993-02-24
CA2082069C (en) 1996-10-29
JPH05505272A (ja) 1993-08-05
IL100993A (en) 1995-10-31
AU1541792A (en) 1992-10-06
JPH087673B2 (ja) 1996-01-29
EP0528018B1 (en) 1995-12-20
US5297291A (en) 1994-03-22
DE69206919D1 (de) 1996-02-01
MX9200939A (es) 1993-03-01
IE920744A1 (en) 1992-09-09
RU2128362C1 (ru) 1999-03-27
WO1992015940A1 (en) 1992-09-17
DE69206919T2 (de) 1996-08-14
IE72197B1 (en) 1997-03-26
CA2082069A1 (en) 1992-09-08

Similar Documents

Publication Publication Date Title
US6298434B1 (en) Data processing device for processing virtual machine instructions
US5475840A (en) High performance dynamic linking through caching
US5999732A (en) Techniques for reducing the cost of dynamic class initialization checks in compiled code
US6243668B1 (en) Instruction set interpreter which uses a register stack to efficiently map an application register state
EP1359501A2 (en) A processing device for executing virtual machine instructions
KR20010006995A (ko) 응용 프로그램의 관리방법
EP1347379A2 (en) On demand, network accessible runtime compile server
US7725879B2 (en) Method and apparatus for executing instructions of java virtual machine and transforming bytecode
US5764947A (en) System and method for automatically interfacing call conventions between two dissimilar program units
KR950006617B1 (ko) 프로그램 동작시에 프로그램 유닛의 연결 방법 및 장치
EP0938703A1 (en) Real time program language accelerator
KR20040048246A (ko) 자바 실행 장치 및 자바 실행 방법
US7210140B2 (en) Software support for virtual machine interpreter (VMI) acceleration hardware
US20030093775A1 (en) Processing of self-modifying code under emulation
US7032230B2 (en) Efficient virtual function calls for compiled/interpreted environments
JPH09212370A (ja) ゲスト命令をエミュレートするプロセッサの性能改善方法及びシステム
US7802080B2 (en) Null exception handling
Lyu et al. A procedure-based dynamic software update
JP2000020319A (ja) プログラム実行装置、その制御方法および記憶媒体
Durand et al. Bootstrapping Common Lisp using Common Lisp
JP2621898B2 (ja) 外部参照型アドレス定数の動的解決処理方式
Thomas Mite: a fast and flexible virtual machine
CA2355990A1 (en) Efficient virtual function call for compiled/interpreted environments

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