KR100309632B1 - 최적화이미지에대응한디버그용소스파일을생성하는언어처리시스템및방법 - Google Patents

최적화이미지에대응한디버그용소스파일을생성하는언어처리시스템및방법 Download PDF

Info

Publication number
KR100309632B1
KR100309632B1 KR1019970074890A KR19970074890A KR100309632B1 KR 100309632 B1 KR100309632 B1 KR 100309632B1 KR 1019970074890 A KR1019970074890 A KR 1019970074890A KR 19970074890 A KR19970074890 A KR 19970074890A KR 100309632 B1 KR100309632 B1 KR 100309632B1
Authority
KR
South Korea
Prior art keywords
intermediate data
debug
optimization
generating
file
Prior art date
Application number
KR1019970074890A
Other languages
English (en)
Other versions
KR19980064734A (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 가네꼬 히사시
Publication of KR19980064734A publication Critical patent/KR19980064734A/ko
Application granted granted Critical
Publication of KR100309632B1 publication Critical patent/KR100309632B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

처리 대상인 소스 파일을 입력해서 구문 해석 처리를 행하는 구문 해석부(101)와, 구문 해석부(101)에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 최적화부(102)와, 최적화된 중간 데이터에 의거해서, 최적화의 내용을 반영하고 또한 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고, 또한 최적화된 중간 데이터에 대해서 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 디버그용 소스 프로그램 정보 생성부(103)와, 디버그 정보가 추가된 중간 데이터를 입력하고, 코드화해서 오브젝트 파일을 생성하는 코드 생성부(104)를 구비하는 언어 처리 시스템.

Description

최적화 이미지에 대응한 디버그용 소스 파일을 생성하는 언어 처리 시스템 및 방법{Language processing system which generates debugging source file corresponding to optimization image and method therefor}
본 발명은, 소스 파일을 해석하여 오브젝트 파일을 생성하는 언어 처리 시스템에 관하여, 특히, 소스 파일의 디버그를 용이하게 행하기 위한 디버그용 소스 파일을 생성하는 언어 처리 시스템에 관한다.
종래, 소스 파일을 해석해서 오브젝트 파일을 생성하는 언어 처리 시스템은, 도 8에 도시하듯이 구문 해석부(801)와 최적화부(802)와 코드 생성부(803)를 구비한다. 구문 해석부(801)는, 소스 파일(810)을 입력해서 구문해석 처리하고, 중간 언어로 표현된 중간 데이터(820)를 생성한다. 최적화부(802)는, 구문 해석부(801)에 의해 생성된 중간 데이터(820)를 입력해서, 최적화 처리하고 최적화된 중간 데이터(830)를 생성한다. 코드 생성부(803)는, 최적화부(802)에 의해 최적화된 중간 데이터(830)를 입력해서 코드화하고, 오브젝트 파일(840)을 생성한다. 생성된 복수의 오브젝트 파일(840)은, 라이브럴리와 링크되어서 실행형식 파일로 되며, 소스 파일(810)과 더불어 디버거에 입력된다.
또한, 최적화부(802)에 의한 중간 데이터(820)의 최적화의 수법으로서는, 예컨대 일본국 공개 특허 공보, 헤이세이 5 년 158706 호 「중간 언어의 최적화 처리 방식」에 개시된 기술을 쓸 수 있다. 동 공보에는 고급 언어 프로그램을 해석해서 중간 언어 데이터를 생성하는 해석 수단과, 그 중간 언어 데이터에서 저급 언어 프로그램은 생성하는 코드 생성 수단을 구비하며 코드 생성 수단이 중간 언어를 입력하고 중간 언어 최적화 기술 구문에 따라서 기술된 중간 언어 최적화 프로그램에 의거해서 중간 언어를 최적화하는 중간 언어 최적화 수단을 구비하므로서, 중간 언어 레벨에서의 최적화 처리를 코드 생성 처리와 독립해서 실행하는 컴파일러가 기술되어 있다.
오브젝트 파일(840) 및 소스 파일(810)을 받아든 디버거는 최적화된 코드의 디버그를 행한다. 여기에서 오브젝트 파일(840) 중의 디버그 정보의 1 개에 행번호가 있으며, 1 개의 행번호에 대해서 1 개소의 어드레스가 대응하고 있다. 이것에 의해서 오브젝트 파일(840)중의 디버그 정보를 써서 소스 프로그램(810)의 1 행 단위로 프로그램을 실행하고, 디버그를 행할 수 있다.
여기에서, 도 9 내지 도 11을 참조해서, 디버거에 의한 최적화된 코드의 디버그에 대해서 설명한다. 도 9는 소스 프로그램이다. 동 도면에는 설명의 형편에의해 행번호를 붙이고 있다. 도 10은, 도 9의 소스 프로그램의 최적화 이미지이다. 최적화에는 여러 가지 종류가 있는데 여기에선 루프의 전개에 착안해서 설명을 행한다. 실행 성능을 향상시키기 위해서 조건 판단 및 분기를 1/4로 줄인다는 최적화에 의해서, 연속된 대입문에 치환한다. 도 11은, 도 9의 소스 프로그램에 관한 최적화된 중간 데이터와 디버그 정보이다. 도 11에 있어서, 소스 프로그램의 일부를 중간 언어의 우측에 도시하고 있다.
각 중간 언어의 의미는 이하와 같다.
XXX : 레이블
FILE : 파일명
LINE : 행번호(디버그 정보)
LDC : 정수의 로드
STR : 변수로의 스토어
LOD : 변수의 로드
LDA : 변수의 어드레스의 로드
ADD : 가산
ILD : 어드레스가 지시하는 위치의 데이터의 로드
IST : 어드레스가 지시하는 위치로의 데이터의 스토어
CMP : 비교
LEQ : 조건 분기
이상의 조건으로, 소스 디버그시에 도 9의 8 행째에 브레이크 포인트를 설정하고 실행한 경우, 디버그 정보의 행번호 "8"에 대응한 위치에서 정지해야 되는데, 도시의 예에선 도 10에 도시한 바와 같이 대입문이 전계되며, 도 11에 도시하듯이 행번호는 복수행으로 전개된 대입문의 최후에 밖에는 존재하지 않는다. 이 때문에 1 회의 실행으로 4 회의 대입문이 종료된다.
상술같이, 종래의 언어 처리 시스템에 의해 생성된 오브젝트를 쓴 소스 레벨의 디버그에선 고도의 최적화 처리를 행한 경우, 코드의 삭제나 이동이 발생해서 디버그에 쓰이는 브레이크 포인트를 설정할 수 없거나 디버그시의 동작이 소스 프로그램에 바르게 대응하지 않기 때문에 이해가 곤란해지거나 하는 경우가 있었다. 이 같은 경우, 어셈블러 소스 프로그램을 참조해야 되기 때문에, 작업이 번잡해진다는 결점이 있었다.
또, 소스 프로그램에 거의 정확하게 대응한 디버그 정보를 생성하려면, 최적화 처리를 행할 수 없는 경우가 있기 때문에 현실적이 아니었다.
또한, 소스 레벨의 디버그에 지장이 생기지 않게 오브젝트 작성시에 최적화 레벨을 내리거나 최적화 처리를 취소하는 것에 의해서 소스 프로그램과 대응한 오브젝트 및 디버그 정보를 생성한다는 수단을 취할 수 있다. 그러나, 이 경우 충분한 최적화 처리를 행하고 있지 않기 때문에, 디버그가 정상으로 완료되어도 오브젝트 파일의 실행 스피드가 만족할 수 없는 것이거나 코드 사이즈가 커진다는 경우가 있었다.
또한, 만족할 수 있는 최적화 처리를 행하기 위해서, 디버그 후, 소망의 최적화 레벨을 지정하고 재차 오브젝트를 작성하면, 이 실행형식이 정상으로 동작한다는 보장을 할 수 없다는 결점이 있었다. 이것은 오브젝트의 실행 스피드의 다름에 의한 동작이나 타이밍의 다름이나 언어 처리 프로그램의 문제점이 남겨져 있을 가능성을 부정할 수 없기 때문이다.
발명의 목적은, 최적화 이미지에 대응한 디버그용 소스 파일 및 디버그 정보를 생성하는 것에 의해서 디버그에 있어서, 프로그램의 실행과 소스 프로그램이 대응하지 않는 경우에 이해가 곤란한 어셈블러 소스 프로그램을 참조하지 않고 용이하게 소스 디버그를 행할 수 있는 언어 처리 시스템 및 그 방법을 제공하는데 있다.
이 발명의 다른 목적은, 최적화 처리에 있어서 불필요하게 최적화 레벨을 내리지 않고, 소망의 최적화 레벨을 확보하므로서 오브젝트 파일의 실행 스피드가 만족할 수 없는 것으로 되거나 코드 사이즈가 커지는 것을 회피할 수 있는 언어 처리 시스템 및 그 방법을 제공하는데 있다.
상기 목적을 달성하는 이 발명은, 소스 파일을 해석하고 중간 데이터를 생성하고 최적화해서 코드화함으로서 오브젝트 파일을 생성하는 언어 처리 시스템이며 하기 요건을 구비한다.
물리 대상인 소스 파일을 입력하고 구문 해석 처리를 행하고 중간 데이터를 생성하는 구문 해석 수단(101),
상기 구문 해석 수단(101)에 의해 생성된 중간 데이터를 입력하고 최적화 처리를 행하는 최적화 수단(102),
상기 최적화 수단(102)에 의해 최적화된 상기 중간 데이터를 입력화하고 그 중간 데이터에 의거해서 최적화의 내용을 반영하고 또한 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고 또한 상기 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 디버그용 소스 프로그램 정보 생성 수단(103),
상기 디버그용 소스 프로그램 정보 생성 수단(103)에 의해 디버그 정보가 추가된 상개 중간 데이터를 입력하고 코드화해서 오브젝트 파일을 생성하는 코드 생성 수단(104),
바람직한 형태에 의하면, 상기 디버그용 소스 프로그램 정보 생성 수단(103)이 상기 최적화 수단(102)에 의해서 최적화된 상기 중간 데이터 중 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독하고, 판독한 1 블록분의 상기 중간 데이터에서 디버그용 소스 파일을 구성하는 소스 프로그램 정보를 추출하고, 상기 1 블록분의 상기 중간 데이터에 대해서 디버그 정보를 추가하는 각 처리를 상기 중간 데이터의 모든 대상 블록에 대해서 반복 실행한다.
다른 바람직한 형태에 의하면, 상기 최적화 수단(102) 및 상기 디버그용 소스 프로그램 정보 생성 수단(103) 대신에, 상기 구문 해석 수단(108)에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 동시에, 그 최적화된 중간 데이터에 의거해서 최적화의 내용을 반영하고 또한, 상기 소스 파일에 가까운 형태의 디버그용 소스 파일은 생성하고 다시 그 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성과정에서 얻어진 디버그 정보를 추가하는 디버그용 소스 프로그램 정보 생성 기능 최적화 수단(601)을 구비한다.
다른 바람직한 형태에 의하면, 상기 최적화 수단(102) 및 상기 디버그용 소스 프로그램 정보 생성 수단(103) 대신에, 상기 구문 해석 수단(101)에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 동시에, 그 최적화된 중간 데이터에 의거해서 최적화의 내용을 반영하고 또한 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고, 또한 그 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성과정에서 얻어진 디버그 정보를 추가하는 디버그용 소스 프로그램 정보 생성 기능 최적화 수단(601)을 구비하고,
상기 디버그용 소스 프로그램 정보 생성 기능 최적화 수단(601)이, 상기 구문 해석 수단(101)에 의해 생성된 상기 중간 데이터 중 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독하고, 상기 판독한 1 블록분의 상기 중간 데이터를 최적화하는 동시에 그 최적화된 중간 데이터로서 디버그용 소스 파일을 구성하는 소스 프로그램 정보를 추출하고, 상기 1 블록문의 상기 중간 데이터에 대해서 디버그 정보를 추가하는 각 처리를 상기 중간 데이터의 모든 대상 블록에 대해서 반복 실행한다.
이 발명의 소스 파일을 해석해서 중간 데이터를 생성하고 최적화해서 코드화 하는 것에 의해서, 오브젝트 파일을 생성하는 언어 처리 방법은 하기 단계를 구비한다.
처리 대상인 소스 파일을 입력해서 구문 해석 처리를 행하고, 중간 데이터를 생성하는 단계,
상기 구분 단계에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 단계,
상기 최적화 단계에 의해 최적화된 상기 중간 데이터를 입력하고, 그 중간 데이터에 의거해서 최적화의 내용을 반영하고, 또한 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고, 또한 상기 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 단계,
상기 디버그용 소스 프로그램 정보 생성 단계에 의해 디버그 정보가 추가된 상기 중간 데이터를 입력하고 코드화해서, 오브젝트 파일을 생성하는 코드 생성 단계.
바람직한 형태에 의하면, 상기 디버그용 소스 프로그램 정보 생성 단계이,
상기 최적화 단계에 의해 최적화된 상기 중간 데이터 중 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독하는 단계과,
상기 판독한 1 블록분의 상기 중간 데이터에서 디버그용 소스 파일을 구성하는 소스 프로그램 정보를 추출하는 단계과,
상기 1 블록분의 상기 중간 데이터에 대해서 디버그 정보를 추가하는 단계를 포함하며,
또한, 각 단계의 처리를 상기 중간 데이터의 모든 대상 블록에 대해서 반복 실행한다.
다른 바람직한 형태에 의하면, 상기 최적화 단계 및 상기 디버그용 소스 프로그램 정보 생성 단계 대신에, 상기 구문 해석 단계에 의해 생성된 중간 데이터를입력해서 최적화 처리를 행하는 동시에 그 최적화된 중간 데이터에 의거해서 최적화의 대응을 반영하고 또한 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고 다시 그 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 단계를 포함한다.
다른 바람직한 형태에 의하면, 상기 최적화 단계 및 상기 디버그용 소스 프로그램 정보 생성 단계 대신에 상기 구문 해석 단계에 의해서 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 동시에 그 최적화된 중간 데이터에 의거해서 최적화의 내용을 반영하고 또한 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 형성하고, 또한, 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 단계를 포함하여,
상기 디버그용 소스 프로그램 정보 생성 기능 최적화 단계이,
상기 구문 해석 단계에 의해 생성된 상기 중간 데이터를 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독하는 단계과,
상기 판독한 1 블록분의 상기 중간 데이터를 최적화하는 동시에 그 최적화된 중간 데이터에서 디버그용 소스 파일을 구성하는 소스 프로그램 정보를 추출하는 단계과,
상기 1 블록분의 상기 중간 데이터에 대해서 디버그 정보를 추가하는 단계를 포함하며,
또한 각 단계의 처리를 상기 중간 데이터의 모든 대상 블록에 대해서 반복 실행한다.
이 발명의 또한 다른 목적, 특징 및 효과는 이하의 상세한 설명으로 분명해질 것이다.
도 1은 이 발명의 제 1 실시예에 의한 언어 처리 시스템의 구성을 도시하는 블록도.
도 2는 제 1 실시예에 있어서의 디버그용 소스 프로그램 정보 생성부의 동작을 도시하는 플로우 챠트.
도 3은 제 1 실시예에 있어서의 디버그용 소스 프로그램 정보 생성부에 의해서 생성된 디버그용 소스 파일의 예를 도시하는 도면.
도 4는 제 1 실시예에 있어서의 디버그용 소스 프로그램 정보 생성부에 의해 생성된 중간 데이터와 디버그 구성의 예를 도시하는 도면.
도 5는 디버그 처리시에 쓰이는 디버그 화면의 예를 도시하는 도면.
도 6은 이 발명의 제 2 실시예에 의한 언어 처리 시스템의 구성을 도시하는 블록도.
도 7은 제 2 실시예에 있어서의 디버그용 소스 프로그램 정보 생성 기능 최적화부의 동작을 도시하는 플로챠트.
도 8은 종래의 언어 처리 시스템의 구성을 도시하는 블록도.
도 9는 소스 프로그램의 1 예를 도시하는 도면.
도 10은 도 9의 소스 프로그램에 대한 최적화 이미지를 도시하는 도면.
도 11은 도 9의 소스 프로그램에 대한 최적화된 중간 데이터와 디버그 정보를 도시하는 도면.
* 도면의 주요부분에 대한 부호의 설명
100 : 언어 처리 시스템 101 : 구문 해석 장치
102 : 최적화 장치
103 : 디버깅 소스 프로그램 정보 생성 장치
104 ; 코드 생성 장치
본 발명의 양호한 실시예를 첨부 도면을 참조하면서 상세하게 설명한다.
도 1은, 이 발명의 제 1 실시예에 의한 언어 처리 시스템의 구성을 도시하는 블록도이다. 도 1을 참조하면, 본 실시예의 언어 처리 시스템(100)은 소스 파일(110)을 입력해서 구문 해석 처리하는 구문 해석부(101)와, 구문 해석부(101)에 의해 구문 해석 처리된 파일을 최적화 처리하는 최적화부(102)와, 최적화부(102)에 의해 최적화 처리된 파일에 의거해서 디버그용 소스 프로그램 정보를 생성하는 디버그용 소스 프로그램 정보 생성부(103)와, 디버그용 소스 프로그램 정보 생성부(103)에 의한 처리가 실시된 파일을 코드화 처리하고, 오브젝트 파일을 생성하는 코드 생성부(104)를 구비한다. 또한, 도 1에는 이 실시예의 특징적인 구성만을 기재하고 다른 일반적인 구성에 대해선 기재를 생략하고 있다.
언어 처리 시스템(100)을 구성하는 각 구성 요소는, 컴퓨터 프로그램으로 제어된 CPU와 RAM 기타의 내부 메모리로 실현된다. 컴퓨터 프로그램은 도시와 같이 자기디스크 또는 반도체 메모리 그밖에 기억 매체(170)에 격납해서 제공되며 퍼스널 컴퓨터나 워크스테이션 기타의 컴퓨터 시스템에 로드되므로서 상기 각 구서 요소의 기능을 실현한다.
구문 해석부(101)는, 소스 파일(110)을 입력하고, 구문 해석 처리를 행하고 중간 데이터(120)를 생성한다. 구문 해석 처리의 수법은 종래부터 제안되고 있는여러 가지 방법을 쓸 수 있다.
최적화부(102)는, 구문 해석부(101)에 의해 생성된 중간 데이터(120)를 입력하고, 최적화 처리를 실행한다. 최적화 처리의 수법은, 예컨대 상술한 헤이세이 5 년 158706 호 공보에 기재된 수법같은 종래부터 제안되고 있는 여러 가지의 방법을 쓸 수 있다.
디버그용 소스 프로그램 정보 생성부(103)는, 최적화부(102)에 의해 최적화된 중간 데이터(130)를 입력하고, 해당 중간 데이터(130)에 의거해서 디버그용 소스 파일(150)을 생성한다. 또, 생성한 디버그용 소스 파일에 관한 정보를 중간 데이터(130)에 삽입한다. 도 2는, 디버그용 소스 프로그램 정보 생성부(103)의 동작을 도시하는 플로챠트이다. 도 2를 참조하면, 디버그용 소스 프로그램 정보 생성부(103)는 우선 중간 데이터(130)를 1 블록분 판독한다(단계 201). 미처리의 중간 데이터(130)의 블록이 존재하면 판독한 중간 데이터를 해석하고 소스 프로그램 정보를 디버그용 소스 파일(150)에 출력한다(단계 203, 203). 그리고 중간 데이터(130)에 디버그 정보를 추가하고 중간 데이터(140)로의 출력한다(단계 204). 이상의 동작을 모든 중간 데이터(130)에 대해서 블록마다 반복한다(단계 202). 이것에 의해서 오리지널의 소스 파일에 가까운 형태이면서 최적화 처리의 내용을 반영한 디버그용 소스 파일(150)과, 디버그 정보를 추가한 중간 데이터(140)가 생성된다.
코드 생성부(104)는, 디버그용 소스 프로그램 정보 생성부(103)에 의해 디버그 정보가 부가된 중간 데이터(140)를 입력하고 코드화 처리를 행하고, 오브젝트파일(160)을 생성한다. 코드화 처리의 수법은 종래부터 제안되고 있는 여러 가지의 방법을 쓸 수 있다.
다음에, 구체적인 소스 파일(110)에 대한 처리의 예를 들어서, 이 실시예의 동작을 설명한다. 언어 처리 장치(100)에 있어서, 최적화부(102)에 의한 처리까지는 종래의 언어 처리 시스템에 의한 처리와 마찬가지이므로, 이 동작 예에선 구문 해석부(101)에 의해서 구문 해석되며 최적화부(102)에 의해서 최적화된 중간 데이터(130)의 파일로서, 도 11에 도시한 중간 데이터 및 디버그 정보를 쓴다. 또, 설명의 형편에 따라, 도 11 의 중간 데이터에 있어서의 4 행째의 레이블(L1) 이후의 입력부터 설명한다.
우선, 중간 데이터(130)중 레이블(L1) 이후, ("";") 까지의 1 블록분을 판독한다(단계 201). 그리고, 판독한 중단 데이터(130)를 해석하고 대응하는 소스 프로그램 정보를 디버그용 소스 파일(150)에 출력한다(단계 203), 출력된 소스 프로그램 정보는 도 3에 도시하는 디버그용 소스 프로그램(sample-O.C)의 8 행째에 상당한다. 다음에 디버그 정보로서 파일명 및 행번호를 중간 데이터에 추가하고 중간 데이터(140)로서 출력한다(단계 204). 추가된 디버그 정보는 도 4에 도시하는 중간 데이터(140)와 디버그 정보중의 FILE Sample-O.C 141와 그 바로 밑의 LINE(8)이다.
다음에, 단계(201)으로 되돌아가고, 중간 데이터(130)의 다음의 ";"까지의 1 블록분을 판독한다(단계 201). 그리고, 판독한 중단 데이터(130)를 해석하고 대응하는 소스 프로그램 정보를 디버그용 소스 파일(150)에 출력한다(단계 203). 출력된 소스 프로그램 정보는, 도 3에 도시하는 디버그용 소스 프로그램(SAMPLE-O.C)의9 행째에 상당한다. 다음에 디버그 정보로서 파일명 및 행 번호를 중간 데이터에 추가하고 중간 데이터(140)로서 출력한다(단계 204). 추가된 디버그 정보는 도 4에 도시하는 중간 데이터(140)와 디버그 정보중의 FILE Sample-O.C( 142)와 그 바로 밑의 LIVE9 이다.
다음에, 단계(201)으로 되돌아가고, 마찬가지로 해서 중간 데이터(130)의 1 블록씩 디버그용 소스 파일(150)과 중간 데이터(140)를 생성한다. 그리고, 중간 데이터(130)에서 판독하는 중간 데이터가 없어진 시점에서 처리를 종료한다(단계 202).
다음에 상기 처리에서 생성된 디버그용 소스 파일(150)을 쓴 디버그 방법에 대해서 설명한다. 도 5는 디버그 화면이며 도 9에 도시하는 소스 프로그램(Sample.c)과 도 3에 도시한 디버그용 소스 프로그램(Sample-O.C)을 나란히 표시하고 있다. 예컨대 오리지널 소스 프로그램(Sample.C)을 쓴 디버그에 있어서, 프로그램의 동작이 최적화에 의해서 소스 프로그램과 대응하지 않게 된 경우, 디버그에 의한 소스 프로그램의 판독이나 소스 패스의 설정 기능을 써서 소스 프로그램(Sample.C)에 덧붙여서 디버그용 소스 프로그램(Sample_O.C)을 표시시킨다.
도 5의 예에 있어서, 디버그용 소스 프로그램(Sample-O.C)을 참조하면, 소스 프로그램(Sample.C)의 for 루프가 최적화에 의해서 어떻게 전개되었는가를 알 수 있다. 즉, for 루프의 형상은 변하고 있으나, 소스 프로그램(Sample.C)의 8 행째가 디버그용 소스 프로그램(Sample-O.C)의 8 행째에서 11 행째에 대응하고 있다. 따라서, 최적화된 오브젝트 파일과 소스 프로그램(Sample.C)을 쓴 경우에는 전개된 for루프중의 동작을 확인할 수 없으나 디버그용 소스 프로그램(Sample-O.C)을 쓴 경우에는 예컨대 디버그용 소스 프로그램(Sample-O.C)의 10 행째에 브레이크 포인트를 설정하므로서 10 행째의 실행 전에 프로그램을 정지시킬 수 있다. 그리고, 1 행 시행을 행하므로서, 10 행째의 실행 내용을 확인할 수 있다. 또, 말할 것도 없이, 11 행째에 브레이크 포인트를 설정해도 마찬가지로 10 행째의 실행결과의 확인이 가능하다.
도 6은, 이 발명의 제 2의 실시예에 의한 언어 처리의 시스템의 구성을 도시하는 블록도이다. 도 2를 참조하면, 이 실시예의 언어 처리 시스템(600)은 소스 파일(110)을 입력해서 구문 해석 처리하는 구문 해석부(101)와, 구문 해석부(101)에 의해 구문 해석 처리된 파일을 최적화 처리하는 동시에 디버그용 소스 프로그램 정보를 생성하는 디버그용 소스 프로그램 정보 생성 기능 최적화부(601)와, 디버그용 소스 프로그램 정보 생성기능 최적화부(601)에 의한 처리가 실시된 파일을 코드화 처리해서 오브젝트 파일을 생성하는 코드 생성부(104)를 구비한다. 또한, 도 2에는 이 실시예의 특징적인 구성만을 기재하고, 다른 일반적인 구성에 대해서는 기재를 생략하고 있다.
언어 처리 시스템(100)을 구성하는 각 구성 요소는, 컴퓨터 프로그램으로 제어된 CPU와 RAM 기타의 내부 메모리로 실현된다. 컴퓨터 프로그램은 도시와 같이 자기디스크 또는 반도체 메모리 기타의 기억 매체(170)에 격납해서 제공되며 퍼스널 컴퓨터나 워크스테이션 기타의 컴퓨터 시스템에 로드되므로서, 상기 각 구성요소의 기능을 실현한다.
상기 구성에 있어서, 구문 해석부(101)와 코드 생성부(104)는 도 1에 도시한 제 1 실시예의 각 구성요소와 마찬가지이므로, 동일 부호를 붙이고 설명을 생략한다.
디버그용 소스 프로그램 정보 생성 기능 최적화부(601)는, 구문 해석부(101)에 의해 생성된 중간 데이터(120)를 입력하고, 최적화 처리를 실행한다. 이때, 생성하려고 하는 중간 데이터의 1 블록 단위에 대응해서 소스 프로그램 정보를 디버그용 소스 파일(150)로 출력하고 또한 최적화된 중간 데이터에 디버그 정보를 추가해서 중간 데이터(140)를 생성한다.
상술한 제 1 실시예에선, 최적화부(102)와 디버그용 소스 프로그램 정보 생산부(103)를 독립으로 설치하고, 최적화 처리와 디버그용 소스 파일(150) 및 중간 데이터(140)의 생성 처리를 독립해서 행하고 있었는데, 이 실시예에선 디버그용 소스 프로그램 정보 생성 기능 최적화부(601)를 설치하므로서 최적화 처리를 행하면서 순차 디버그용 소스 파일(150)을 생성하고 또한 최적화된 중간 데이터에 디버그 정보를 추가해간다. 제 1 실시예와 같이 디버그용 소스 프로그램 정보 생성부(103)를 다른 모듈에서 독립시킨 경우, 개발이나 메인트넌스는 용이하지만 처리 때마다 파일 판독을 행하기 때문에 실행시간이 길어질 우려가 있다. 그래서, 이 실시예는 최적화 처리와 디버그용 소스 파일(150) 및 중간 데이터(140)의 생성 처리를 동시에 행하므로서 실행 시간의 단축을 도모하고 있다.
도 7은, 디버그용 소스 프로그램 정보 생성기능 최적화부(601)의 동작을 도시하는 플로챠트이다. 도 7을 참조하면, 디버그용 소스 프로그램 정보 생성 기능최적화부(601)는 우선 중간 데이터(120)중 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독한다(단계 701). 미처리의 중간 데이터(120)의 블록이 존재한다면 판독할 중간 데이터를 해석해서 최적화 처리를 행하는 동시에 소스 프로그램 정보를 디버그용 소스 파일(150)로서 출력한다(단계 702, 703). 그리고, 최적화된 중간 데이터에 디버그 정보를 추가하고 중간 데이터(140)로서 출력한다(단계 704). 이상의 동작을 모든 중간 데이터(120)에 대해서 블록마다 반복한다(단계 702).
다음에, 구체적인 소스 파일(110)에 대한 처리의 예를 들어서, 이 실시예의 동작을 설명한다. 이 동작예에선, 소스 파일(110)로서 도 9에 도시한 소스 프로그램을 쓴다. 또, 설명에 의해서 도 9의 소스 프로그램에 있어서의 6 행째의 후의 입력부터 설명한다. 실제로는 소스 프로그램에 대해서 구문 해석부(101)에 의한 구문 해석 처리가 실행되는데 여기에선 설명을 생략하고 최적화 처리 이후의 처리에 착안해서 설명한다.
우선, 도 9의 소스 프로그램 중, 6 행째의 이후의 소스 프로그램에 대응하는 중간 데이터(120)는 판독한다(단계 701). 여기에선, 최적화 처리로 규정하고 있는 대상블록인 9 행째까지의 소스 프로그램에 대응하는 중간 데이터(120)를 판독한다. 그리고, 판독한 중간 데이터(120)를 해석하고 루프를 전개해서 최적화 한다. 이경우의 최적화 이미지는 도 10에 도시한 최적화 이미지와 같다. 또, 처리중의 중간 데이터(120)의 1 행에 대응하는 소스 프로그램 정보를 순차 디버그용 소스 파일(150)에 출력한다(단계 703). 출력된 소스 프로그램 정보는, 도 3에 도시하는 디버그용 소스 프로그램(Sample-O.C)의 7 행째에서 13 행째에 상당한다. 다음에 디버그 정보로서 전개한 1 행에 대응하는 파일명 및 행 번호를 중간 데이터에 추가하고 중간 데이터(140)로서 출력한다(단계 704). 추가된 디버그 정보는 도 4에 도시하는 중간 데이터(140)와 디버그 정보중의 FILE Sample-O.C(141)과 그 바로 밑의 LINE(8)이다.
다음에 단계(701)으로 되돌아가고, 마찬가지로 해서 중간 데이터(120)의 대상블록의 1 블록씩 최적화 처리를 행하고 디버그용 소스 파일(150)과 중간 데이터(140)를 생성한다. 그리고, 중간 데이터(120)에서 판독하는 중간 데이터가 없어진 시점에서 처리를 종료한다(단계 702).
이상, 설명한 바와 같이 이 발명의 언어 처리 시스템 및 그 방법에 의하면 최적화 처리의 실시된 중간 언어에서 디버그용 소스 프로그램 정보를 생성하므로서, 최적화한 오브젝트 파일을 써서 소스 디버그를 행하는 것이 가능으로 된다. 즉, 디버그에 있어서, 프로그램의 실행과 소스 프로그램이 대응하지 않는 경우에는 오리지널의 소스 프로그램에 가해서 이해 곤란한 어셈블러 소스 프로그램뿐 아니라, 오리지널의 소스 프로그램에 가까운 형태의 디버그용 소스 프로그램을 합쳐서 참조하는 것에 의해서 최적화 처리가 어떻게 행해지고 있는가를 알 수 있기 때문에 프로그램의 동작을 이해하기 쉽고 용이하게 소스 디버그를 행할 수 있다.
또, 최적화된 오브젝트 파일을 써서 소스 디버그를 행할 수 있기 때문에 최적화 처리에 있어서, 불필요하게 최적화 레벨을 내리지 않고 소망의 최적화 레벨로 최적화 처리를 행할 수 있다. 이것에 의해서, 오브젝트 파일의 실행 스피드가 만족할 수 없는 것을 되거나 코드 치수가 커지는 것을 회피할 수 있다.

Claims (8)

  1. 소스 파일을 해석해서 중간 데이터를 생성하고, 최적화해서 코드화함으로서 오브젝트 파일을 생성하는 언어 처리 시스템에 있어서,
    처리 대상인 소스 파일을 입력해서 구문 해석 처리를 행하고, 중간 데이터를 생성하는 구문 해석 수단(101)과,
    상기 구문 해석 수단(101)에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 최적화 수단(102)과,
    상기 최적화 수단(102)에 의해서 최적화된 상기 중간 데이터를 입력하고, 이 중간 데이터에 의거해서 최적화의 내용을 반영하고 또한 상기 소스 파일에 가까운 형태의 디버그용의 파일을 생성하고, 다시 상기 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 디버그용 소스 프로그램 정보 생성 수단(103)과,
    상기 디버그용 소스 프로그램 정보 생성 수단(103)에 의해 디버그 정보가 추가된 상기 중간 데이터를 입력하고, 코드화해서 오브젝트 파일을 생성하는 코드 생성 수단(104)을 구비하는 언어 처리 시스템.
  2. 제 1 항에 있어서,
    상기 디버그용 소스 프로그램 정보 생성 수단(103)이, 상기 최적화 수단(102)에 의해서 최적화된 상기 중간 데이터중 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독하고, 상기 판독한 1 블록분의 상기 중간 데이터에서 디버그용 소스 파일을 구성하는 소스 프로그램 정보를 추출하고, 상기 1 블록분의 상기 중간 데이터에 대해서 디버그 정보를 추가하는 각각의 처리를, 상기 중간 데이터의 모든 대상 블록에 대해서 반복 실행하는 언어 처리 시스템.
  3. 제 1 항에 있어서,
    상기 최적화 수단(102) 및 상기 디버그용 소스 프로그램 정보 생성 수단(103) 대신에, 상기 구문 해석 수단(101)에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행함과 동시에, 최적화된 중간 데이터에 의거해서, 최적화의 내용을 반영하고 또한 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고, 또한, 상기 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 디버그용 소스 프로그램 정보 생성 기능 최적화 수단(601)을 구비하는 언어 처리 시스템.
  4. 제 1 항에 있어서,
    상기 최적화 수단(102) 및 상기 디버그용 소스 프로그램 정보 생성 수단(103) 대신에, 상기 구문 해석 수단(101)에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 동시에, 최적화된 중간 데이터에 의거해서, 최적화의 내용을 반영하고 또한, 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고 또한, 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 디버그용 소스 프로그램 정보 생성 기능 최적화 수단(601)을 구비하고,
    상기 디버그용 소스 프로그램 정보 생성 기능 최적화 수단(601)이 상기 구문 해석 수단(101)에 의해 생성된 상기 중간 데이터 중 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독하고, 상기 판독한 1 블록분의 상기 중간 데이터를 최적화함과 동시에, 최적화된 중간 데이터에서 디버그용 소스 파일을 구성하는 소스 프로그램 정보를 추출하고, 상기 1 블록분의 상기 중간 데이터에 대해서 디버그 정보를 추가하는 각각의 처리를, 상기 중간 데이터의 모든 대상 블록에 대해서 반복 실행하는 언어 처리 시스템.
  5. 소스 파일을 해석해서 중간 데이터를 생성하고, 최적화해서 코드화함으로서 오브젝트 파일을 생성하는 언어 처리 방법에 있어서,
    처리 대상인 소스 파일을 입력해서 구문 해석 처리를 행하고, 중간 데이터를 생성하는 단계과,
    상기 구문 해석 단계에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 단계과,
    상기 최적화 단계에 의해서 최적화된 상기 중간 데이터를 입력하고, 중간 데이터에 의거해서, 최적화의 내용을 반영하고 또한 상기 소스 파일에 가까운 형태의 디버그용의 파일을 생성하고, 다시 상기 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성과정에서 얻어진 디버그 정보를 추가하는 단계과,
    상기 디버그용 소스 프로그램 정보 생성 단계에 의해 디버그 정보를 추가된 상기 중간 데이터를 입력하고, 코드화해서 오브젝트 파일을 형성하는 코드 생성 단계를 포함하는 언어 처리 방법.
  6. 제 5 항에 있어서,
    상기 디버그용 소스 프로그램 정보 생성 단계이,
    상기 최적화 단계에 의해서 최적화된 상기 중간 데이터중 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독하는 단계과,
    상기 판독한 1 블록분의 상기 중간 데이터에서 디버그용 소스 파일을 구성하는 소스 프로그램 정보를 추출하는 단계과,
    상기 1 블록분의 상기 중간 데이터에 대해서 디버그 정보를 추가하는 단계를 포함하며,
    또한, 각 단계의 처리를, 상기 중간 데이터의 모든 대상 블록에 대해서 반복 실행하는 언어 처리 방법.
  7. 제 5 항에 있어서,
    상기 최적화 단계 및 상기 디버그용 소스 프로그램 정보 생성 단계 대신에, 상기 구문 해석 단계에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행함과 동시에, 최적화된 중간 데이터에 의거해서, 최적화의 내용을 반영하고 또한, 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고, 또한, 최적화된 중간데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 단계을 포함하는 언어 처리 방법.
  8. 제 5 항에 있어서,
    상기 최적화 단계 및 상기 디버그용 소스 프로그램 정보 생성 단계 대신에, 상기 구문 해석 단계에 의해 생성된 중간 데이터를 입력해서 최적화 처리를 행하는 동시에, 최적화된 중간 데이터에 의거해서, 최적화의 내용을 반영하고 또한, 상기 소스 파일에 가까운 형태의 디버그용 소스 파일을 생성하고, 또한, 최적화된 중간 데이터에 대해서 상기 디버그용 소스 파일의 생성 과정에서 얻어진 디버그 정보를 추가하는 단계를 포함하며,
    상기 디버그용 소스 프로그램 정보 생성 기능 최적화 단계이.
    상기 구문해석 단계에 의해 생성된 상기 중간 데이터 중 최적화 처리로 규정하고 있는 대상 블록의 1 블록분을 판독하는 단계과,
    상기 판독한 1 블록분의 상기 중간 데이터를 최적화하는 동시에,
    최적화된 중간 데이터에서 디버그용 소스 파일을 구성하는 소스 프로그램 정보를 추출하는 단계과,
    상기 1 블록분의 상기 중간 데이터에 대해서 디버그 정보를 추가하는 단계를 포함하며,
    또한, 각 단계의 처리를, 상기 중간 데이터의 모든 대상 블록에 대해서 반복 실행하는 언어 처리 방법.
KR1019970074890A 1996-12-27 1997-12-27 최적화이미지에대응한디버그용소스파일을생성하는언어처리시스템및방법 KR100309632B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP96-349247 1996-12-27
JP34924796A JP3196675B2 (ja) 1996-12-27 1996-12-27 言語処理方式

Publications (2)

Publication Number Publication Date
KR19980064734A KR19980064734A (ko) 1998-10-07
KR100309632B1 true KR100309632B1 (ko) 2002-02-28

Family

ID=18402482

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970074890A KR100309632B1 (ko) 1996-12-27 1997-12-27 최적화이미지에대응한디버그용소스파일을생성하는언어처리시스템및방법

Country Status (4)

Country Link
US (1) US6014516A (ko)
JP (1) JP3196675B2 (ko)
KR (1) KR100309632B1 (ko)
CN (1) CN1195811A (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151701A (en) * 1997-09-30 2000-11-21 Ahpah Software, Inc. Method for reconstructing debugging information for a decompiled executable file
KR100532467B1 (ko) * 2003-09-18 2005-12-01 삼성전자주식회사 서로 다른 버전에서 생성된 디버깅 정보 파일들을 이용한소스 코드 레벨 디버깅을 제공하는 엠시유 응용프로그램검증 시스템 및 그 방법
JP4822817B2 (ja) * 2005-11-22 2011-11-24 パナソニック株式会社 コンパイルシステム
US8904340B2 (en) 2007-02-13 2014-12-02 International Business Machines Corporation Use of temporary optimized settings to reduce cycle time of automatically created spreadsheets
CN101872301A (zh) * 2009-04-24 2010-10-27 深圳富泰宏精密工业有限公司 测量程序优化系统及方法
US9207921B2 (en) * 2009-06-22 2015-12-08 Oracle America, Inc. Fault tolerant compilation with automatic optimization adjustment
FR2953612A1 (fr) * 2009-12-03 2011-06-10 Flexycore Procede de mise au point d'application logicielle, systeme et produit programme d'ordinateur correspondant.

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0685148B2 (ja) * 1986-03-07 1994-10-26 株式会社日立製作所 配列デ−タフロ−解析装置
JPH0814817B2 (ja) * 1986-10-09 1996-02-14 株式会社日立製作所 自動ベクトル化方法
JP2921190B2 (ja) * 1991-07-25 1999-07-19 日本電気株式会社 並列実行方式
JPH05158706A (ja) * 1991-12-09 1993-06-25 Nippon Denki Micom Technol Kk 中間言語の最適化処理方式
JPH06274369A (ja) * 1993-03-19 1994-09-30 Hitachi Ltd 最適化プログラムのデバッグ方式
JPH0721033A (ja) * 1993-07-07 1995-01-24 Nec Corp 言語処理装置及びその方法
JPH0756745A (ja) * 1993-08-13 1995-03-03 Nec Corp 言語処理プログラムのコンパイラ処理方式
JP3190773B2 (ja) * 1993-09-30 2001-07-23 日本電気株式会社 言語処理プログラムのコンパイル処理方法
JP3327674B2 (ja) * 1994-04-01 2002-09-24 松下電器産業株式会社 プログラム翻訳装置及び方法
JPH0863369A (ja) * 1994-08-24 1996-03-08 Toshiba Corp 最適化情報出力方式
JPH08255097A (ja) * 1995-01-20 1996-10-01 Toshiba Corp デバッグ情報出力方式

Also Published As

Publication number Publication date
JPH10187461A (ja) 1998-07-21
KR19980064734A (ko) 1998-10-07
CN1195811A (zh) 1998-10-14
US6014516A (en) 2000-01-11
JP3196675B2 (ja) 2001-08-06

Similar Documents

Publication Publication Date Title
US5590331A (en) Method and apparatus for generating platform-standard object files containing machine-independent code
JP4822817B2 (ja) コンパイルシステム
US5606697A (en) Compiler system for language processing program
US8225299B2 (en) Program converting apparatus, method, and program
US7873948B2 (en) Method and system for split-compiling a hybrid language program
US5905894A (en) Meta-programming methods and apparatus
US6292940B1 (en) Program complete system and its compile method for efficiently compiling a source program including an indirect call for a procedure
WO1990001738A1 (en) Machine process for translating programs in binary machine language into another binary machine language
US7016807B2 (en) Device and method for monitoring a program execution
JP2002099312A (ja) プログラマブルコントローラおよび制御プログラム開発支援装置
KR100309632B1 (ko) 최적화이미지에대응한디버그용소스파일을생성하는언어처리시스템및방법
US6625807B1 (en) Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation
US6314557B1 (en) Hybrid computer programming environment
KR20030015200A (ko) 소프트웨어 컴파일러들을 위해 내장된 시스템들 용의튼튼한 로깅 시스템
US20060107258A1 (en) Program, program code optimization method, program code compile method, program code, and information processing system
US5134705A (en) System and method for concurrency simulation
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
US6178547B1 (en) Method and apparatus for generating non-redundant symbolic debug information in computer programs
KR100916301B1 (ko) 커널 api 대화식 실행 장치 및 방법
JP2005174045A (ja) ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体
JP2000242504A (ja) コンパイラ装置
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
KR0121767B1 (ko) 병행 칠(chill) 프로그램 디버깅 방법
JPH10275087A (ja) コンパイル装置
Hari et al. CHILL toolset for C-DOT DSS

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee