9. 중간언어 9-1. Polish표기법 9-2. N-투플 표기법 9-3. 트리 구조 코드 9-4. 추상 기계 코드

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 프로그래밍 언어론 2nd edition Tucker and Noonan 1 장 소 개 A good programming language is a.
Advertisements

과제제안서 ( 영상처리를 이용한 골프 도우미 ) 이종원 박준도 박현욱 황성수 조성건.
음란물에 대하여. 인터넷 음란물의 의미 돈벌이를 위해 단지 성적 욕망을 불러 일으키기 위한 음란한 인터넷 상의 사 진, 동영상, 만화 등을 말한다.
아이핑 소개 (탁구대회) 아이핑 담당 신동일 네이버(다음)에서 아이핑검색 아이핑 소개 (탁구대회) 담당 신동일 아이핑.
9. 중간언어 9-1. 소개 9-2. Polish표기법 주소 코드 9-4. 트리 구조 코드
아름다운 이들의 행복한 길음안나의 집.
朝鲜语视听(一) 辽宁省教育软件大赛参赛作品.
일 시 : (목) 장 소 : 1층 도서관 대 상 : 3학년 4반 (36명) 지도교사 : 박 병 진
오늘의 관심주 오늘의 관심종목 외인/기관 순매수 특징주 코스피 상해종합 다우존스 S&P500 15/11/27 외국인 기관 코스피(억) 코스닥(억) 코 섹터 종목 외인(연속) 기관(연속) 수급 특징 거 외인/기관 순매수 특징주 주) 선택기준.
오늘의 관심주 오늘의 관심종목 외인/기관 순매수 특징주 코스피 상해종합 다우존스 S&P500 16/01/13(화) 외국인 기관 코스피(억) 외국계 : 건설,화학,음식료,건자재,서비스업종중심으로만 제한적 +순매수 기록 운수장비,유통,금융,전자업종으로는.
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
영상광고 사업제안서.
001 이찬진 사장 "아이폰 부가사업으로 승부수"` 연합뉴스 구분 내용 비고 기사 요약
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Basic of Buffer Over Flow
1. PC 에서 회원가입 1. 회원가입 버튼 클릭 클릭.
프로그램 제어 분기(branch)와 점프(jump) 명령어 PC의 값의 변경 순차적인 프로그램의 진행순서가
제 3장 프로그래밍 언어 설계 3.1 설계 기준의 역사적 변천 3.2 효율성 3.3 일반성, 직교성, 획일성
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
컴퓨터 소프트웨어.
제 1 장 마이크로프로세서의 기본동작.
Power Java 제4장 자바 프로그래밍 기초.
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
2주차 – 수학적 배경 주교재 2장.
Chapter 06 명령어와 번지지정 방식.
MS-6800 SERVER-TTS 라이선스 등록및 사용방법
제3장 8086 프로세서의 내부구조.
제 1장 시스템 소프트웨어의 개요.
임베디드 소프트웨어 설계.
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
제1장 시스템 소프트웨어의 개요 컴퓨터시스템 및 하드웨어 구성 컴퓨터의 구성과 기능 시스템프로그램의 개요
초등학생이 pc방을 가도 되는가? 등마 초등학교 5학년 4반 김근아.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Lecture 01: Compiler Overview
Buffer Overflow
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
제 10장 부 프로그램 10.1 개요 10.2 매개 변수 평가와 전달 기법 10.3 형식 매개 변수 명세
2015. 인문소양교육.
Computer System Architecture
자국어인터넷주소의 어제, 오늘 그리고 미래 자국어인터넷주소의 어제, 오늘 그리고 미래 넷피아 사장, 이판정.
컴 파 일 러 Compilers.
Chapter 08 구조적 분석과 설계 8.1 구조적 분석(Structured Analysis)
■ 화성공장 산학인턴 버스 노선 확인 안내 문의 전화 : 안내페이지 접속 1
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
Chapter 4 변수 및 바인딩.
2018 추석맞이 선물전 마일리지로 구매하면 더 큰 혜택! 기획전 구매금액별 최대 20,000마일리지 적립
소방시설 자동산정 프로그램.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
PROTIATM Allergy-Q Allergy Analyzer Setting Manual.
9. 중간언어 9-1. 소개 9-2. Polish표기법 주소 코드 9-4. 트리 구조 코드
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
속담이나 관용표현 사용하여 글쓰기 다섯째 마당 국어(말듣쓰) 6학년 1학기 마음을 나누며-되돌아보기 9/9 수업 수업 계획
6월 1주 주간메뉴표 NEW 엄마손 조식 쉐프 삼촌 중식 참새 방앗간 석식 ◎원산지 안내 : 쌀(국내산)
부분 2부 합창하기 음악 5학년 1학기 8. 숲 속을 걸어요 (2 /3) 제작의도
판촉왕 메인배너 – 접이식 전기포트 여행용 접이식 전기포트 KOSELIG (코슬리)
포이에마장애인보호작업장 시설소개서.
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
100세 시대, 스마트 헬스케어와 미래직업 (3) 고령화 사회에 필요한 웨어러블.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
코딩교육, 어떻게 해야 할까 이천양정여자고등학교 김가연 안선영.
학교규칙 제 개정 절차 및 사례 일시 : 강사 : 삼계중 김세홍.
걱정 고민 가득 할 때 - 어떻게 해결 하나요 - C Em Dm G 1. 걱정 고민 가득 2. 슬픈 마음 심술 3. 괜찮아요
Presentation transcript:

9. 중간언어 9-1. Polish표기법 9-2. N-투플 표기법 9-3. 트리 구조 코드 9-4. 추상 기계 코드 9-5. 중간 언어의 선택

9-1. Polish표기법 중간 언어의 등장 배경 프로그래밍 언어의 다양화와 컴퓨터 하드웨어의 급격한 발전은 많은 컴파일러의 작성을 요구하게 되었으며 이에 따른 컴파일러 의 생산 기술도 빠르게 발전하였다. 초창기의 컴파일러는 이론 정립이 없는 상태에서 설계되어진 단일 패스 컴파일러로서 원시 프로그램을 중간 코드 생산 없이 직접 목적 코드로 번역 하였다.

중간언어를 사용 함으로써의 장점 컴파일러를 기능적으로 독립적인 여러 모듈들로 구성하는 것이 가능해졌다. 원시 프로그램의 이식성을 증가 시킬 수 있다. 고급 원시 언어의 저급 목적 코드간의 의미적인 차이를 이어주는 교량 역할을 중간 코드가 담당해줌으로써 번역과정이 좀더 쉽게 표현되고 효율적으로 처리될 수 있다. 중간 코드를 이용하여 최적화를 수행함으로써 기계와 독립적인 최적화가 가능해졌다. 인터프리티브 컴파일링 시스템에서 인터프리터를 이용하여 실행 할 수 있다.

9-2. N-튜플 표기법 정의 중간 토드를 한 개의 연산자와 그에 해당하는 피연산자들의 튜플 형태로 정의 한 것 부분은 피연산자를 나타낸다. 가장 널리 알려진 형태로 triple과 quadruple이 있는데, 차이점은 결과값을 갖는 피연산자의 유무인데 quadruple은 마지막 피연산자에 결과값을 저장하고 triple은 그 자체에 값을 저장하여 triple 번호로 참조된다.

Triple표현의 형태 (연산자, 피연산자1, 피연산자2) 일련의 triple들은 순서에 따라 차례로 번호가 부여되면 각 triple 의 연산 결과는 그 triple번호로 저장된다. triple의 결과를 triple번호로 할당함으로써 코드 최적화에서 흔히 발생하는 코드 이동 시에 이동되는 triple를 지칭하는 triple 코드 들의 피연산자 또한 바꾸어 주어야 하므로 triple 형태는 최적화를 위해서는 부적합한 중간 언어이다.

Quadruple 표현의 형태 (연산자, 피연산자1, 피연산자2, 결과) <결과>는 연산의 결과를 지칭하는데 보통 임시 변수가 되면 후에 목적 기계의 레지스터 또는 주기억 장치에 배정된다. Quadruple 코드는 triple과는 달리 결과 주소 부분(result address field)을 포함하고 있어 코드 이동이 용이하므로 최적화에 알맞은 중간 코드 형태이다. 단점으로는 임시 변수를 다루어야 한다.

9-3. 트리 구조 코드 정의 구문 트리 원시 프로그램의 트리 구조 표현은 프로그램의 의미를 보다 효율적으로 표현할 수 있는 방법이 되며 코드의 특성상 손쉽게 재구성이 가능하므로 최적화 컴파일러의 중간 언어로 가장 적합한 표현 구문 트리 파스 트리에서 불필요한 중복된 정보를 제거한 것 구성은 단말 노드와 비단말 노드로 이루어지는데 단말 노드는 상수 또는 변수를 나타내게 되고 비단말 노드는 구문 트리 연산자를 나타낸다.

TCOL(Tree structured Common Language) 트리 형태를 갖는 중간 언어로 컴파일러의 후단부를 자동화 하기 위한 여러 가지 명세에 이용 AST가 고급에 가까운 반면 TCOL은 비교적 중간 레벨이다. TCOL은 목적 기계 명령어의 어떤 가정도 배제된 파스트리와 유사한 표현인 점에서는 고급이고, 언어 구조에 대한 어떤 가정도 배제하고 모든 자료에 대한 주소를 인덱스 계산, 페치, 저장 등으로 분해하고 자료형의 표현을 분리하는 점에서 저급이다. 언어 종속 부분과 기계종속 부분을 분리하는데 유용하게 사용 Semantic Analyzer AST TCOL  AST와 TCOL의 관계

Diana(Descriptive Intermediate Attributed Notation for Ada) TCOL를 생성과정 Diana(Descriptive Intermediate Attributed Notation for Ada) 컴파일러의 전반부와 후반부 사이의 정보 교환에 적당하게 설계 된 Ada 프로그램의 중간 형태이다. 네 가지 속성 구조적 속성 어휘적 속성 의미적 속성 코드 속성 스캐너 파서 중간 코드 생성기 원시프로그램 AST TCOL

9-4. 추상 기계 코드 포터블 컴파일러 컴파일러를 원시 언어에만 관계되고 목적 기계에 무관한 전단부 부분과 목적 기계에만 관계되는 후단부 부분으로 분리하고 잘 정의된 인터페이스를 사용하여 이 두 부분을 연결해 줌으로써 보다 이식 가능하고 적용 가능한 컴파일러 연결방법은 추상 기계를 설정하여 이 기계의 명령어 집합을 중간 언어로 사용하여 전단부 분과 후단부 부분을 연결하는 방법

포터블 컴파일러의 모델 P 코드 Pascal 컴파일러를 제작하는 데 사용된 중간언어로 Pascal-P 컴파일러는 Pascal 프로그램을 입력 받아 P-코드 를 생성한다. P-기계는 스택 컴퓨터로 네 개의 특수 레지스터와 기억 공간 으로 구성 PC-Program Counter SP-Stack Pointer MP-Mark Pointer NP-New Pointer 중간언어 목적 코드 원시프로그램 전단부 후단부 목적 기계 추상 기계 인터프리터

MP current activation record EM-코드 의사 명령어와 EM명령어로 구분되면 각 명령어는 상수, 명칭 등과 같은 피연산자를 갖을 수 있다. 의사 명령어는 기억 장소 를 확보하거나 상수 정의를 위한 기능을 갖으며, 또한 어셈블 리 컴파일이나 링킹에 관련 된 기능을 수행한다. CODE PC STORE stack MP current activation record SP NP heap constant area

U-코드 P-코드에서 코드 최적화의 기능을 높이기 위해 확장된 중간 언어로서 가상적인 스택 기계에 근거를 두고 있다. 스택 기계는 모든 연산을 스택에서 수행하기 때문에 변수들의 주소는 모든 스택에 대한 주소 부여 방법을 이용 변수에 대한 주소는 두개의 튜플(B, O)로 구성되는데 여기서 B 는 블록의 번호를 의미하며 O는 블록의 시작으로부터의 오프셋 을 나타낸다.

9-5. 중간 언어의 선택 중간언어의 요건 중간 레벨성 원시언어에 대해 저급으로 목적 기계에 대해 고급의 성격을 유지 해야 하는 것 효율적인 처리의 적합성 원시언어에서 중간언어로의 번역 고급에 치우친 중간 코드는 원시 언어에서 중간언어로 번역이 쉬운 반면 중간 언어에서 목적 언어로 번역이 어려우며, 저급에 가까운 것은 반대 현상이 발생

인터프리테이션 가상적이 기계 코드가 가장 우수성을 나타내는데, 그 이유는 가상적인 기계의 설계 시 효율적인 인터프리 테이션이 고려 되었기 때문이다. 최적화 쉽게 코드를 이동할 수 있는 quadruple이 효과적이며 트리 구조도 고급 언어의 제어구조를 내포할 수 있으며 트리의 재구성이 쉽기 때문에 최적화의 적합한 형태 외부 표현성 트리 구조 만이 선형구조가 아닌 관계로 단점을 나타내며 확장성 문제에 있어서는 비교적 모든 중간 언어들이 좋은 편이나 가상적인 기계 코드만이 약간의 결함을 보인다.

Source ILS ILT Target A: 좋다 B: 보통이다 C: 나쁘다 전단부 ILS ILS to ILT ILT 후단부 Target  두개의 중간 언어를 갖는 컴파일러 ILS의 특징은 상당히 소스 언어에 의존적이고 고급에 가까우며 ILT는 목적 기계에 의존적이며 그 자체에 변수의 주소 계산, 자료형 변화, 형에 따른 연사자 등이 모두 반영된 형태를 갖는다.