KR20000032612A - 칠 컴파일러의 실행시간 스택프레임 구성 방법 - Google Patents

칠 컴파일러의 실행시간 스택프레임 구성 방법 Download PDF

Info

Publication number
KR20000032612A
KR20000032612A KR1019980049117A KR19980049117A KR20000032612A KR 20000032612 A KR20000032612 A KR 20000032612A KR 1019980049117 A KR1019980049117 A KR 1019980049117A KR 19980049117 A KR19980049117 A KR 19980049117A KR 20000032612 A KR20000032612 A KR 20000032612A
Authority
KR
South Korea
Prior art keywords
pointer
area
function
stack
compiler
Prior art date
Application number
KR1019980049117A
Other languages
English (en)
Other versions
KR100319746B1 (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 KR1019980049117A priority Critical patent/KR100319746B1/ko
Publication of KR20000032612A publication Critical patent/KR20000032612A/ko
Application granted granted Critical
Publication of KR100319746B1 publication Critical patent/KR100319746B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

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

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 칠 컴파일러의 실행시간 스택프레임 구성 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은 스택포인터를 포함하고 프레임 포인터, 지역변수 포인터 및 임시영역 포인터 등을 포함하여 실행시간 스택을 처리하도록 스택프레임을 구성하는 스택프레임 구성 방법 및 기록매체를 제공하는데 그 목적이 있음.
3. 발명의 해결방법의 요지
본 발명은, 레지스터 저장영역에 기존의 지정된 레지스터의 내용을 저장한 후에 컴파일러 임시영역과 지역변수 영역을 구성하고 임시영역 포인터와 지역변수 포인터의 값을 갱신하는 제 1 단계; 파라메타 영역과 포인터 저장영역을 구성한 후에, 현재 스택포인터의 값을 프레임 포인터에 할당하여 호출하는 함수의 스택프레임을 지정하는 제 2 단계; 상기 각 영역의 크기를 합산하여 스택 포인터를 조정하는 제 3 단계; 및 이전의 스택포인터의 값을 호출자 프레임 포인터 저장영역에 저장하여 호출된 함수에 대한 스택프레임을 구성하는 제 4 단계를 포함한다.
4. 발명의 중요한 용도
본 발명은 컴파일러 등에 이용됨.

Description

칠 컴파일러의 실행시간 스택프레임 구성 방법
본 발명은 중간코드를 이용하여 파워피씨(PowerPC) 프로세서 등에 사용되는 기계어를 생성하는 칠(CHILL : CCITT High Level Language) 컴파일러의 후위처리기에서 함수 호출시 생성되는 실행시간 스택프레임을 구성하는 실행시간 스택프레임 구성 방법 및 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
일반적으로 컴파일러 제작 기술은, 목적코드를 직접 생성하는 방법, 목표 어셈블리 코드를 생성하고 어셈블러를 이용하여 목적코드로 번역하는 방법 및 목표기계와 관계없는 중간코드를 생성하고 이를 목표 어셈블리 코드로 변환한 후에 어셈블러를 이용하여 목적코드로 번역하는 방법 등 다양한 방법이 이용되고 있으며, 컴파일러의 종류에 따라서 스택프레임의 구조도 서로 다르게 구성되고 있다.
칠(CHILL) 컴파일러는 칠(CHILL) 원시 프로그램을 중간코드를 이용하여 파워피씨(PowerPC) 프로세서용 기계어로 번역하는 컴파일러로 전위처리기, 후위처리기, 어셈블러 및 링킹로더 등으로 구성되어 있다.
전위처리기는 칠(CHILL) 원시 프로그램을 중간코드로 번역하는 도구로, 이 과정에서 문법 및 문장의 의미를 점검하여 오류 여부를 판단 및 처리한다. 후위처리기는 전위처리기에서 생성한 중간코드를 목표 어셈블리 코드로 변환하는 도구로, 이 과정에서 실행시간에 처리되는 스택프레임을 구성한다.
어셈블러는 후위처리기에서 생성된 목표 어셈블리 코드를 목적코드로 번역하며, 링킹로더는 여러 개의 목적코드 파일들을 모아서 실행파일을 생성한다.
한편, 파워피씨(PowerPC) 프로세서를 위한 칠(CHILL) 컴파일러는 이식성과 확장성을 높이기 위해 중간코드를 이용하는 방법을 채택하고 있다. 이러한 구조의 컴파일러에서 생성되는 중간코드는 후위처리기에서 스택프레임을 구성하기 위한 충분한 정보를 제공하지 못하고 있는 상황이다.
이에 따라, 파워피씨(PowerPC) 프로세서를 위한 칠(CHILL) 컴파일러의 스택프레임은, 씨(C) 컴파일러와 같이 기존에 상업용으로 제공되고 있는 다른 컴파일러에서 생성되는 스택프레임의 구조를 그대로 이용하여 구성할 수 없는 문제점이 발생하게 되었다.
상기 문제점을 해결하기 위하여 안출된 본 발명은, 기존의 다른 컴파일러에서 스택포인터 하나만으로 실행시간 스택을 처리하도록 되어 있는 구조를 스택포인터를 포함하고 프레임 포인터, 지역변수 포인터 및 임시영역 포인터 등을 포함하여 실행시간 스택을 처리하도록 스택프레임을 구성하는 스택프레임 구성 방법 및 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는데 그 목적이 있다.
도 1 은 본 발명이 적용되는 파워피씨(PowerPC) 프로세서용 칠(CHILL) 컴파일러의 구성예시도.
도 2 는 본 발명에 따른 실행시간 스택프레임의 구조도.
도 3 은 본 발명에 따른 실행시간 스택프레임 구성 방법에 대한 일실시예 흐름도.
* 도면의 주요 부분에 대한 부호의 설명
101 : 전위처리기 102 : 후위처리기
103 : 어셈블러 104 : 링킹로더
상기 목적을 달성하기 위하여 본 발명은, 컴파일러의 후위처리기에 적용되는 실행시간 스택프레임 구성 방법에 있어서, 레지스터 저장영역에 기존의 지정된 레지스터의 내용을 저장한 후에 컴파일러 임시영역과 지역변수 영역을 구성하고 임시영역 포인터와 지역변수 포인터의 값을 갱신하는 제 1 단계; 파라메타 영역과 포인터 저장영역을 구성한 후에, 현재 스택포인터의 값을 프레임 포인터에 할당하여 호출하는 함수의 스택프레임을 지정하는 제 2 단계; 상기 각 영역의 크기를 합산하여 스택 포인터를 조정하는 제 3 단계; 및 이전의 스택포인터의 값을 호출자 프레임 포인터 저장영역에 저장하여 호출된 함수에 대한 스택프레임을 구성하는 제 4 단계를 포함하여 이루어진 것을 특징으로 한다.
또한, 본 발명은, 컴파일러의 후위처리기에, 레지스터 저장영역에 기존의 지정된 레지스터의 내용을 저장한 후에 컴파일러 임시영역과 지역변수 영역을 구성하고 임시영역 포인터와 지역변수 포인터의 값을 갱신하는 제 1 기능; 파라메타 영역과 포인터 저장영역을 구성한 후에, 현재 스택포인터의 값을 프레임 포인터에 할당하여 호출하는 함수의 스택프레임을 지정하는 제 2 기능; 상기 각 영역의 크기를 합산하여 스택 포인터를 조정하는 제 3 기능; 및 이전의 스택포인터의 값을 호출자 프레임 포인터 저장영역에 저장하여 호출된 함수에 대한 스택프레임을 구성하는 제 4 기능을 실현시키기 위한 프로그램을 기록한, 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
도 1 은 본 발명이 적용되는 파워피씨(PowerPC) 프로세서용 칠(CHILL) 컴파일러의 구성예시도이다.
도 1 를 참조하여 본 발명이 적용되는 파워피씨(PowerPC) 프로세서용 칠(CHILL) 컴파일러의 구성을 간단히 설명하면 다음과 같다.
칠(CHILL) 프로그램을 파워피씨(PowerPC) 프로세서용 기계어로 번역하는 컴파일러는 크게 전위처리기(101), 후위처리기(102), 어셈블러(103) 및 링킹로더(104) 등으로 구성되어 있다.
전위처리기(101)는 칠(CHILL) 원시 프로그램을 입력받아 중간코드로 번역하는 도구이고, 후위처리기(102)는 상기 전위처리기(101)로부터 중간코드를 입력받아 파워피씨(PowerPC) 프로세서용 어셈블리 코드로 변환하는 도구로, 본 발명이 적용되어 실행되는 도구이다.
어셈블러(103)는 후위처리기(102)에서 생성된 어셈블리 코드를 입력받아 목적코드로 번역하여 목적파일을 생성하는 도구이며, 링킹로더(104)는 어셈블러(103)로부터 목적코드를 입력받아 파워피씨(PowerPC) 프로세서에서 실행할 수 있는 실행파일을 생성하는 도구이다.
도 2 는 본 발명에 따른 실행시간 스택프레임의 구조도이고, 도 3 은 본 발명에 따른 실행시간 스택프레임 구성 방법에 대한 일실시예 흐름도이다.
먼저, 본 발명의 특징을 살펴보면, 본 발명은 파워피씨(PowerPC) 프로세서용 칠(CHILL) 프로그램의 번역 과정에서 생성되는 중간코드를 어셈블리 코드로 변환하면서 구성되는 실행시간 스택프레임을 스택포인터를 포함한 프레임 포인터, 지역변수 포인터 및 임시영역 포인터 등을 사용하여 처리하도록 구성한다.
도 2 및 도 3 을 참조하여 실행시간 스택프레임의 구조와 구성 방법에 관하여 상세히 설명하면 다음과 같다.
실행시간 스택프레임은 파워피씨(PowerPC) 프로세서용 칠(CHILL) 컴파일러의 후위처리기(102)에서 중간코드를 파워피씨(PowerPC)용 어셈블리 코드로 변환하는 과정에서 구성된다. 중간코드에서 함수의 시작에 해당하는 코드가 입력되면 피호출 함수의 스택프레임(202)을 구성하게 되는데, 이때 스택프레임은 높은 주소(208)에서 낮은 주소(209)로 증가하도록 구성된다.
먼저, 고정된 16 바이트 크기의 레지스터 저장 영역(203)에 기존의 지역변수 포인터, 임시영역 포인터, 조건 레지스터 및 실수 조건 레지스터의 내용을 저장하도록 구성한다(301). 다음에 가변 크기의 컴파일러 임시영역(204)을 구성하고, 이 영역의 처음을 지정하는 임시영역 포인터(211)의 값을 갱신한다(302).
다음에 컴파일러 임시영역(204)만큼 떨어진 위치에서 시작하는 피호출자의 지역변수 영역(205)을 구성하고, 시작위치를 지정하는 지역변수 포인터(212)의 값을 갱신한다(303). 다음으로는 가변 크기의 파라메타 영역(206)과 고정 크기인 2개의 포인터 저장영역(207)을 구성한 후에(304), 현재 스택포인터의 값을 프레임 포인터(210)에 할당하여 호출하는 함수의 스택프레임을 지정하도록 구성한다(305).
마지막으로 가변 크기인 컴파일러 임시영역(204), 피호출자의 지역변수 영역(205) 및 파라메타 영역(206) 등과 고정 크기인 레지스터 저장영역(203, 207) 등의 크기를 모두 합산하여 새로운 스택 포인터(213)를 조정하게 되며(306), 이때 이전의 스택포인터의 값(210)을 호출자 프레임 포인터 저장영역(207)에 저장하여 호출된(피호출자) 함수에 대한 새로운 스택프레임의 구성을 종료한다(307).
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
상기와 같은 본 발명은, 전위처리기에서 생성한 중간코드를 입력받아 후위처리기가 실행시간 스택프레임을 구성하는 과정에서 스택 포인터 이외에 프레임 포인터, 임시영역 포인터 및 지역변수 포인터 등을 따로 두어 처리하도록 구성하므로써, 중간코드를 이용한 컴파일러 개발 방식에서 실행시간 스택프레임을 구성할 수 있으며, 기존 컴파일러에서 스택 내용 참조를 스택포인터에 의한 간접주소 지정 방식으로 처리할 때의 비효율성을 제거할 수 있는 효과가 있다.

Claims (8)

  1. 컴파일러의 후위처리기에 적용되는 실행시간 스택프레임 구성 방법에 있어서,
    레지스터 저장영역에 기존의 지정된 레지스터의 내용을 저장한 후에 컴파일러 임시영역과 지역변수 영역을 구성하고 임시영역 포인터와 지역변수 포인터의 값을 갱신하는 제 1 단계;
    파라메타 영역과 포인터 저장영역을 구성한 후에, 현재 스택포인터의 값을 프레임 포인터에 할당하여 호출하는 함수의 스택프레임을 지정하는 제 2 단계;
    상기 각 영역의 크기를 합산하여 스택 포인터를 조정하는 제 3 단계; 및
    이전의 스택포인터의 값을 호출자 프레임 포인터 저장영역에 저장하여 호출된 함수에 대한 스택프레임을 구성하는 제 4 단계
    를 포함하는 실행시간 스택프레임 구성 방법.
  2. 제 1 항에 있어서,
    상기 제 1 단계는,
    중간코드에서 함수의 시작에 해당하는 코드가 입력되면, 고정된 소정 크기의 상기 레지스터 저장 영역에 기존의 지역변수 포인터, 임시영역 포인터, 조건 레지스터 및 실수 조건 레지스터의 내용을 저장하는 제 5 단계;
    가변 크기의 상기 컴파일러 임시영역을 구성하고, 상기 컴파일러 임시영역의 처음을 지정하는 임시영역 포인터의 값을 갱신하는 제 6 단계; 및
    상기 컴파일러 임시영역만큼 떨어진 위치에서 시작하는 피호출자의 상기 지역변수 영역을 구성하고, 상기 지역변수 영역의 시작위치를 지정하는 지역변수 포인터의 값을 갱신하는 제 7 단계
    를 포함하는 실행시간 스택프레임 구성 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 2 단계는,
    가변 크기의 상기 파라메타 영역과 고정 크기인 소정 개수의 상기 포인터 저장영역을 구성하는 제 8 단계; 및
    현재 스택포인터의 값을 프레임 포인터에 할당하여 호출하는 함수의 스택프레임을 지정하는 제 9 단계
    를 포함하는 실행시간 스택프레임 구성 방법.
  4. 제 3 항에 있어서,
    상기 제 3 단계는,
    가변 크기인 상기 컴파일러 임시영역, 피호출자의 상기 지역변수 영역 및 상기 파라메타 영역 등과 고정 크기인 상기 레지스터 저장영역 등의 크기를 모두 합산하여 새로운 스택 포인터를 조정하는 특징으로 하는 실행시간 스택프레임 구성 방법.
  5. 컴파일러의 후위처리기에,
    레지스터 저장영역에 기존의 지정된 레지스터의 내용을 저장한 후에 컴파일러 임시영역과 지역변수 영역을 구성하고 임시영역 포인터와 지역변수 포인터의 값을 갱신하는 제 1 기능;
    파라메타 영역과 포인터 저장영역을 구성한 후에, 현재 스택포인터의 값을 프레임 포인터에 할당하여 호출하는 함수의 스택프레임을 지정하는 제 2 기능;
    상기 각 영역의 크기를 합산하여 스택 포인터를 조정하는 제 3 기능; 및
    이전의 스택포인터의 값을 호출자 프레임 포인터 저장영역에 저장하여 호출된 함수에 대한 스택프레임을 구성하는 제 4 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  6. 제 5 항에 있어서,
    상기 제 1 기능은,
    중간코드에서 함수의 시작에 해당하는 코드가 입력되면, 고정된 소정 크기의 상기 레지스터 저장 영역에 기존의 지역변수 포인터, 임시영역 포인터, 조건 레지스터 및 실수 조건 레지스터의 내용을 저장하는 제 5 기능;
    가변 크기의 상기 컴파일러 임시영역을 구성하고, 상기 컴파일러 임시영역의 처음을 지정하는 임시영역 포인터의 값을 갱신하는 제 6 기능; 및
    상기 컴파일러 임시영역만큼 떨어진 위치에서 시작하는 피호출자의 상기 지역변수 영역을 구성하고, 상기 지역변수 영역의 시작위치를 지정하는 지역변수 포인터의 값을 갱신하는 제 7 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  7. 제 5 항 또는 제 6 항에 있어서,
    상기 제 2 기능은,
    가변 크기의 상기 파라메타 영역과 고정 크기인 소정 개수의 상기 포인터 저장영역을 구성하는 제 8 기능; 및
    현재 스택포인터의 값을 프레임 포인터에 할당하여 호출하는 함수의 스택프레임을 지정하는 제 9 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  8. 제 7 항에 있어서,
    상기 제 3 기능은,
    가변 크기인 상기 컴파일러 임시영역, 피호출자의 상기 지역변수 영역 및 상기 파라메타 영역 등과 고정 크기인 상기 레지스터 저장영역 등의 크기를 모두 합산하여 새로운 스택 포인터를 조정하는 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1019980049117A 1998-11-16 1998-11-16 칠컴파일러의실행시간스택프레임구성방법 KR100319746B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980049117A KR100319746B1 (ko) 1998-11-16 1998-11-16 칠컴파일러의실행시간스택프레임구성방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980049117A KR100319746B1 (ko) 1998-11-16 1998-11-16 칠컴파일러의실행시간스택프레임구성방법

Publications (2)

Publication Number Publication Date
KR20000032612A true KR20000032612A (ko) 2000-06-15
KR100319746B1 KR100319746B1 (ko) 2002-02-19

Family

ID=19558547

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980049117A KR100319746B1 (ko) 1998-11-16 1998-11-16 칠컴파일러의실행시간스택프레임구성방법

Country Status (1)

Country Link
KR (1) KR100319746B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882695A (zh) * 2021-03-02 2021-06-01 百果园技术(新加坡)有限公司 传参方法、装置、计算机设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3726192A1 (de) * 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882695A (zh) * 2021-03-02 2021-06-01 百果园技术(新加坡)有限公司 传参方法、装置、计算机设备及存储介质
CN112882695B (zh) * 2021-03-02 2023-11-28 百果园技术(新加坡)有限公司 传参方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
KR100319746B1 (ko) 2002-02-19

Similar Documents

Publication Publication Date Title
US7739696B2 (en) Message translation systems and methods
JP2002517817A5 (ko)
CN111176791A (zh) 一种基于多虚拟机区块链平台跨虚拟机调用方法
JPH11212837A (ja) 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体
JPH09231077A (ja) コンピュータプログラムのサイズを縮小する方法
Nelson A comparison of PASCAL intermediate languages
EP0875825A2 (en) High speed assemble processing system
KR20000032612A (ko) 칠 컴파일러의 실행시간 스택프레임 구성 방법
CN116521181A (zh) 基于游戏系统的脚本数据处理方法、装置、设备及介质
JP2988394B2 (ja) 可変長オブジェクトのデータベース処理装置、データベース処理方法、およびデータベース処理プログラムを記憶する記憶媒体
JPH04286029A (ja) ソースプログラム・コンバータ
JP3327674B2 (ja) プログラム翻訳装置及び方法
JP2002508866A (ja) データ処理装置の制御方法
JP2000122876A (ja) 情報処理装置
JP3260264B2 (ja) 高水準言語レベルでのパッチ作成・運用方法
JP2002041310A (ja) クラス動的バインドシステムおよび方法
JPH03240837A (ja) デバッグ情報生成装置
JP2001273150A (ja) プログラム変換装置
JPH01116829A (ja) プログラムの翻訳方式
KR20040057037A (ko) 에스디엘에서 c언어로의 변환 시스템 및 방법, 그프로그램이 구현된 기록매체
JP2004334848A (ja) 2レベル形態規則をコンパイルするための方法及びその装置
JP3327634B2 (ja) プログラム変換装置、およびプログラム変換方法
CN115586891A (zh) 利用ios系统的动态特性自动埋点方法及系统
CN113971027A (zh) 一种代码转换方法、装置、计算机设备和存储介质
JPH01270129A (ja) パッチ自動作成方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee