KR100277479B1 - 칠 분리 컴파일 방법 - Google Patents

칠 분리 컴파일 방법 Download PDF

Info

Publication number
KR100277479B1
KR100277479B1 KR1019980036136A KR19980036136A KR100277479B1 KR 100277479 B1 KR100277479 B1 KR 100277479B1 KR 1019980036136 A KR1019980036136 A KR 1019980036136A KR 19980036136 A KR19980036136 A KR 19980036136A KR 100277479 B1 KR100277479 B1 KR 100277479B1
Authority
KR
South Korea
Prior art keywords
file
source file
context
compiling
information
Prior art date
Application number
KR1019980036136A
Other languages
English (en)
Other versions
KR20000018520A (ko
Inventor
김병철
Original Assignee
서평원
엘지정보통신주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서평원, 엘지정보통신주식회사 filed Critical 서평원
Priority to KR1019980036136A priority Critical patent/KR100277479B1/ko
Publication of KR20000018520A publication Critical patent/KR20000018520A/ko
Application granted granted Critical
Publication of KR100277479B1 publication Critical patent/KR100277479B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 전자 교환기에서 칠(CHILL) 분리 컴파일(Compile)에 관한 것으로, 특히 분리 컴파일 시스템을 개선하여 칠 소스 파일(Source File)을 수정해 컴파일하는 경우에 최소 한 번 내지 최대 두 번의 파싱 작업으로 가능하도록 한 칠 분리 컴파일 방법에 관한 것이다.
본 발명에 따른 칠 분리 컴파일 방법인 컴파일러의 파싱 작업 중에 이전의 컨텍스트를 이용해 이전의 소스 파일을 컴파일할 경우에 다음의 소스 파일에 필요로 한 컨텍스트를 생성하는 과정과; 상기 생성된 각 컨텍스트에 각 소스 파일이 필요로 하는 정보가 있는지를 확인하는 과정과; 상기 소스 파일이 필요로 하는 정보가 상기 컨텍스트에 있으면 해당 정보를 이용하여 상기 소스 파일을 컴파일하여 목적 파일을 생성하는 과정과; 상기 소스 파일이 필요로 하는 정보가 상기 컨텍스트에 없으면 다른 소스 파일을 컴파일하여 상기 컨텍스트에 정보를 보충하는 과정과; 상기 컨텍스트에 보충된 정보를 이용하여 상기 소스 파일을 다시 컴파일하여 목적 파일을 생성하는 과정을 통해서 코딩 시에 발생할 수 있는 오류를 방지하며 교환기 응용 프로그램의 개발 비용 절감 및 안정성을 제공할 수 있다.

Description

칠 분리 컴파일 방법
본 발명은 전자 교환기에서 칠(CHILL) 분리 컴파일(Compile)에 관한 것으로, 특히 분리 컴파일 시스템을 개선하여 칠 소스 파일(Source File)을 수정해 컴파일하는 경우에 최소 한 번 내지 최대 두 번의 파싱 작업으로 가능하도록 한 칠 분리 컴파일 방법에 관한 것이다.
전자 교환기 상에서 TTU-T 권고의 프로그래밍 언어인 칠로 코딩(Coding)한 여러 개의 소스 파일을 컴파일하여 하나의 실행 파일로 만드는 것을 분리 컴파일이라고 한다.
일반적인 칠 분리 컴파일을 위한 하드웨어의 구성은 도 1에 도시된 바와 같이, 메인 메모리 보드(10)와, 중앙 처리 장치 보드(20)와, 보조 기억 장치부(30)와, 입출력 장치부(40)와, 유닉스(UNIX) 운영 체제부(50)를 포함하여 이루어져 있다.
그러면, 공개 특허 제95-15127호에 언급된 칠 분리 컴파일 방법에 대해 살펴 보면, 처음으로 수행하는 칠 분리 컴파일 수행 과정인지를 확인하는데, 이때 확인된 컴파일 수행 과정이 처음으로 수행되는 컴파일인 경우에 소스 파일을 컴파일하여 목적 파일로 생성한다.
즉, 해당 소스 파일을 컴파일하여 스펙 파일(Spec File)을 만든 후에 해당 스펙 파일을 분석하여 시즈 파일(Seize File) 및 인터페이스 파일(Interface File)을 생성하며, 컴파일러(Compiler)에서는 해당 시즈 파일을 포함한 소스 파일을 컴파일하여 목적 파일로 생성시켜 준다.
이에, 상기 소스 파일을 수정한 후에 재컴파일 시에는 해당 수정된 소스 파일을 컴파일하여 목적 파일을 생성하는데, 상기 인터페이스 파일보다 나중에 생성되거나 수정된 소스 파일을 컴파일하여 스펙 파일을 생성한 다음에 상기 인터페이스 파일과 해당 수정된 스펙 파일을 분석하여 재컴파일되어야 할 파일의 시스 파일과 인터페이스 파일을 생성하고 상기 소스 파일이나 시즈 파일이 수정된 파일에 대해서 시즈 파일을 포함한 소스 파일을 컴파일하여 목적 파일로 생성하게 된다.
다음으로, 공개 특허 제95-15068호에 언급된 칠 분리 컴파일 시스템에서 재컴파일 시에 프로그램 수정으로 인한 일치성을 보장하는 범위 내에서 재컴파일 횟수를 최소화 방법에 대해 살펴 보면, 소스 파일을 컴파일할 때에 해당 컴파일이 처음인지 아니면 재컴파일인지를 확인한다.
이에, 상기에서 처음 컴파일이면 아규먼트(Argument)로 주어진 스펙 파일들에서 그랜트(Grant) 및 시즈된 이름들에 대한 바인딩(Binding)을 하여 시즈 파일 및 인터페이스 파일을 생성한다.
즉 다시 말해서, 상기 스펙 파일을 판독하여 파싱(Parsing)한 후에 가시성 분석 및 어의 분석을 수행하여 인터페이스의 파일 형상을 구성한 후에 각 소스 파일에 대해서 시즈 파일과 인터페이스 파일을 생성하게 된다.
만약, 상기에서 재컴파일이면 주어진 인터페이스 파일의 내용이 유효한가를 확인하는데, 상기 인터페이스 파일을 판독하여 파싱해 파일 형상의 각 파일이 아규먼트로 주어졌는가를 확인하고 파일 형상에 있는 파일이 아규먼트로 주어지지 않았다면 상기 인터페이스 파일을 삭제하여 처음으로 복귀하며 해당 파일이 아규먼트로 주어졌다면 아규먼트 파일을 파싱하고 상기 인터페이스 파일의 내용과 수정된 파일의 내용을 비교한다.
이 때, 상기 인터페이스 파일의 내용이 유효하지 않으면 상기 인터페이스 파일을 삭제하여 처음으로 복귀하며, 상기 인터페이스 파일의 내용이 유효하면 상기 인터페이스 파일과 수정된 스펙 파일들을 분석해 재컴파일되어야 할 시즈 파일들과 인터페이스 파일을 생성한다.
즉, 상기 인터페이스 파일의 정보가 무효이면 상기 인터페이스 파일을 삭제하고 처음으로 복귀하여 리턴(Return)하며, 상기 인터페이스 파일의 정보가 유효하면 상기 가시성 분석 및 어의 분석을 수행한다. 그런 후에, 각 모듈의 시즈된 이름들에 대해 해당 이름을 그랜트한 이름에 시즈하는 파일의 이름을 디팬드 파일(Depend File)에 넣어 이름과 파일 간의 의존 관계를 구성하여 재생성되어야 할 시즈 파일을 리스트(List)에 넣어 주며, 해당 재생성되어야 할 시즈 퐈일들 및 인터페이스 파일을 생성하고 모든 동작 수행을 종료한다.
그런데, 교환기의 개발자가 칠 소스 파일을 수정하여 컴파일하려는 경우에 상술한 바와 같이, 소스 파일을 컴파일하여 스펙 파일을 생성하고 해당 스펙 파일을 네임 바인딩(Name Binding)하여 시즈 파일을 생성하고 해당 시즈 파일을 컴파일하여 목적 파일로 생성시켜 주는 동작을 위해서는 최소 세 번의 파싱 작업이 필요하다.
이와 같이, 종래에는 칠 소스 파일을 수정해 컴파일하는 경우에 최소 세 번의 파싱 작업이 필요하여 컴파일하는데 걸리는 시간이 많다는 문제점이 있었다.
상술한 바와 같은 문제점을 해결하기 위해, 본 발명은 분리 컴파일 시스템을 개선하여 한 소스 파일에 대해서 최소 한 번 내지 최대 두 번의 파싱 작업으로 컴파일할 수 있도록 함으로써, 교환기 응용 프로그램의 개발 비용 절감 및 안정성에 기여하고자 하는데 그 목적이 있다.
도 1은 일반적인 칠 분리 컴파일을 위한 하드웨어의 구성을 나타낸 블록도.
도 2는 본 발명을 설명하기 위한 칠 분리 컴파일 방법에 대한 절차를 나타낸 도면.
도 3은 본 발명에 적용되는 칠 분리 컴파일 방법에 대한 플로우챠트.
* 도면의 주요부분에 대한 부호의 설명 *
10 : 메인 메모리 보드(Main Memory Board)
20 : 중앙 처리 장치 보드 30 : 보조 기억 장치부
40 : 입출력 장치부 50 : 유닉스 운영 체제부
60 : 컴파일러 70 : 링키지 에디터(Linkage Editor)
상기와 같은 목적을 달성하기 위한 본 발명의 실시예에 따른 칠 분리 컴파일 방법은 컴파일러의 파싱 작업 중에 이전의 컨텍스트를 이용해 이전의 소스 파일을 컴파일할 경우에 다음의 소스 파일에 필요로 한 컨텍스트를 생성하는 과정과; 상기 생성된 각 컨텍스트에 각 소스 파일이 필요로 하는 정보가 있는지를 확인하는 과정과; 상기 소스 파일이 필요로 하는 정보가 상기 컨텍스트에 있으면 해당 정보를 이용하여 상기 소스 파일을 컴파일하여 목적 파일을 생성하는 과정과; 상기 소스 파일이 필요로 하는 정보가 상기 컨텍스트에 없으면 다른 소스 파일을 컴파일하여 상기 컨텍스트에 정보를 보충하는 과정과; 상기 컨텍스트에 보충된 정보를 이용하여 상기 소스 파일을 다시 컴파일하여 목적 파일을 생성하는 과정을 포함하여 이루어진 것을 특징으로 한다.
이하 첨부된 도면을 참고하여 다음과 같이 설명한다.
도 2는 본 발명을 설명하기 위한 칠 분리 컴파일 방법에 대한 절차를 나타낸 도면이고, 도 3은 본 발명에 적용되는 칠 분리 컴파일 방법에 대한 플로우챠트이다.
본 발명의 하드웨어적인 구성은 도 1에 도시된 바와 같으며, 본 발명의 칠 분리 컴파일을 수행하여 실행 파일을 생성하기 위한 구성으로는 도 2에 도시된 바와 같이, 컴파일러(60)와 링키지 에디터(Linkage Editor; 70)를 구비하여 이루어진다.
그리고, 본 발명은 칠 분리 컴파일을 성공적으로 처리하기 위해 필요로 하는 각 소스 파일이 자체에 정의되지 않고 사용되는 변수, 상수, 함수 등을 나타낸 이름들에 대한 정보인 컨텍스트(Context)를 상기 칠 컴파일러(60)가 이전 소수 파일 컴파일 작업 중에 자동으로 생성시키도록 한다. 또한, 본 발명은 해당 컨텍스트의 생성, 분석 및 이용이 단계별로 분리되어 있던 종래의 기술을 개선하여 모든 작업을 한 번의 파싱 작업에서 수행하여 최소한의 파싱 작업 회수로 분리 컴파일을 수행할 수 있는 소프트웨어로 이루어진다.
본 발명의 실시예에 따른 칠 분리 컴파일 방법을 도 3의 플로우챠트를 참고하여 다음과 같이 살펴본다.
각 소스 파일을 칠 분리 컴파일하여 목적 파일을 생성시킬 경우, 칠 컴파일러(60)가 파싱 작업 중에 해당 각 소스 파일의 자체에 정의되지 않고 사용되는 변수, 상수, 함수 등을 나타낸 이름들에 대한 정보인 컨텍스트를 생성시켜 분석하도록 하는데, 각 소스 파일에 대한 컨텍스트를 이전의 소스 파일을 컴파일하는 동안에 생성시켜 다음의 소스 파일 측으로 인가해 컴파일 수행에 이용하도록 한다.
먼저, 해당 소스 파일의 컴파일 과정이 맨처음으로 수행되는 첫 번째 컴파일인 경우에는 제1컨텍스트의 내용이 없으므로 해당 제1컨텍스트를 이용하지 않고 해당 제1소스 파일만을 컴파일하는데, 이때 제2소스 파일에 필요로 하는 제2컨텍스트를 생성한다. 그리고, 두 번째 컴파일인 경우에는 상기 제2컨텍스트를 이용하여 상기 제2소스 파일을 컴파일할 때에 제3소스 파일에 필요로 하는 제3컨텍스트를 생성시켜 준다. 이와 같은 방식으로 이전의 소스 파일을 컴파일할 경우에 다음의 소스 파일에 필요로 하는 각 컨텍스트를 생성시켜 주게 된다(단계 S1).
이에, 상기 제1단계(S1)에 의해 상기 각 소스 파일에 대해 생성된 각 컨텍스트가 존재하므로 해당 각 컨텍스트를 분석하여 정보가 충분한지 아니면 불충분한지를 확인하는데, 즉 해당 각 소스 파일에 대해 해당 각 컨텍스트 내에 필요한 정보가 있는지 아니면 없는지를 확인한다(단계 S2).
만약, 상기 제2단계(S2)에서 상기 각 소스 파일에 대해 상기 각 컨텍스트 내에 필요한 정보가 있다면, 해당 정보를 이용하여 상기 각 소스 파일을 컴파일하여 목적 파일로 생성하게 된다(단계 S3).
그런데, 상기 제2단계(S2)에서 상기 각 소스 파일에 대해 상기 각 컨텍스트 내에 필요한 정보가 없다면, 바로 목적 파일로 생성시키지 않고 해당 정보가 없는 소스 파일의 다음 번째, 다른 소스 파일을 컴파일하며, 이에 따라 각 컨텍스트를 다시 생성시켜 해당 컨텍스트에 충분한 정보를 보충시켜 준다(단계 S4).
이에, 상기 제4단계(S4)에서 보충된 정보를 이용하여 상기 각 소스 파일을 다시 컴파일하여 목적 파일로 생성하게 된다(단계 S5).
그러면, 상술한 바와 같이 생성되는 각 소스 파일에 대한 목적 파일을 링키지 에디터(70)에서 연계 및 편집하여 실행 파일로 형성시켜 준다.
이와 같이, 종래의 기술에 의해서는 하나의 소스 파일에 대해 반드시 세 번의 파싱 작업이 필요하지만, 본 발명에 의해서 최소 한 번 내지 최대 두 번의 파싱 작업만 있으면 된다.
이상과 같이, 본 발명에 의해 컴파일러의 파싱 작업 중에 자동으로 각 소스 파일에 대한 컨텍스트를 생성시켜 해당 컨텍스트에 필요한 정보의 유무를 확인해 없는 경우에 다른 소스 파일을 컴파일해 해당 컨텍스트에 정보를 보충하고 해당 보충된 정보를 이용하여 해당 소스 파일을 다시 컴파일하여 목적 파일을 생성시켜 줌으로써, 한 소스 파일에 대해서 최소 한 번 내지 최대 두 번의 파싱 작업으로 컴파일하여 코딩 시에 발생할 수 있는 오류를 방지하며 교환기 응용 프로그램의 개발 비용 절감 및 안정성을 제공할 수 있다.

Claims (1)

  1. 컴파일러의 파싱 작업 중에 이전의 컨텍스트를 이용해 이전의 소스 파일을 컴파일할 경우에 다음의 소스 파일에 필요로 한 컨텍스트를 생성하는 과정과;
    상기 생성된 각 컨텍스트에 각 소스 파일이 필요로 하는 정보가 있는지를 확인하는 과정과;
    상기 소스 파일이 필요로 하는 정보가 상기 컨텍스트에 있으면 해당 정보를 이용하여 상기 소스 파일을 컴파일하여 목적 파일을 생성하는 과정과;
    상기 소스 파일이 필요로 하는 정보가 상기 컨텍스트에 없으면 다른 소스 파일을 컴파일하여 상기 컨텍스트에 정보를 보충하는 과정과;
    상기 컨텍스트에 보충된 정보를 이용하여 상기 소스 파일을 다시 컴파일하여 목적 파일을 생성하는 과정을 포함하여 이루어진 것을 특징으로 하는 칠 분리 컴파일 방법.
KR1019980036136A 1998-09-02 1998-09-02 칠 분리 컴파일 방법 KR100277479B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980036136A KR100277479B1 (ko) 1998-09-02 1998-09-02 칠 분리 컴파일 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980036136A KR100277479B1 (ko) 1998-09-02 1998-09-02 칠 분리 컴파일 방법

Publications (2)

Publication Number Publication Date
KR20000018520A KR20000018520A (ko) 2000-04-06
KR100277479B1 true KR100277479B1 (ko) 2001-01-15

Family

ID=19549366

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980036136A KR100277479B1 (ko) 1998-09-02 1998-09-02 칠 분리 컴파일 방법

Country Status (1)

Country Link
KR (1) KR100277479B1 (ko)

Also Published As

Publication number Publication date
KR20000018520A (ko) 2000-04-06

Similar Documents

Publication Publication Date Title
US5586328A (en) Module dependency based incremental compiler and method
US6738967B1 (en) Compiling for multiple virtual machines targeting different processor architectures
US6353925B1 (en) System and method for lexing and parsing program annotations
Kahn et al. Metal: A formalism to specify formalisms
US20070226720A1 (en) System and Method for Efficiently Passing Information Between Compiler and Post-Compile-Time Software
US20030088860A1 (en) Compiler annotation for binary translation tools
US20070094646A1 (en) Static single assignment form pattern matcher
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
CA2204118A1 (en) Method and apparatus for tree data structure manipulation and translating source code from one high-level computer language to another
US8869126B2 (en) Method and apparatus enabling multi threaded program execution for a Cobol program including OpenMP directives by utilizing a two-stage compilation process
US20070074185A1 (en) Identifier expressions
US6625807B1 (en) Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation
Waddington et al. High-fidelity C/C++ code transformation
de Rauglaudre Camlp4 reference manual
Pearse et al. Experiences developing and maintaining software in a multi-platform environment
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
KR100277479B1 (ko) 칠 분리 컴파일 방법
Chang et al. Analysis of low-level code using cooperating decompilers
MacLaren Inline routines in VAXELN Pascal
Schützenhöfer Cycle-Accurate simulator generator for the VADL processor description language
Graf Compiler backend generation using the VADL processor description language
KR970001611B1 (ko) 칠 분리 컴파일 방법
KR950010827B1 (ko) 칠(chill) 분리 컴파일 시스템에서 재컴파일 최소화 방법
Gustedt Modular C
Lenkefi et al. Connections between Language Semantics and the Query-based Compiler Architecture.

Legal Events

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

Payment date: 20050929

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee