PowerPoint Presentation

Similar documents
형식 언어

Microsoft PowerPoint - PL_03-04.pptx

PowerPoint 프레젠테이션

구문 분석

1

3장 어휘분석

3차시.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap01-C언어개요.pptx

1

1 처리능력 (Throughput) : 일정시간내에시스템이처리하는일의양 2 반환시간 (Turnaround time) : 시스템에작업을의뢰한시간부터처리가완료될때까지걸리는시간 3 사용가능도 (Availability) : 시스템을사용할필요가있을때즉시사용가능한정도 4 신뢰도


untitled

컴파일러

중간코드생성

초보자를 위한 자바 2 21일 완성 - 최신개정판

EA0015: 컴파일러

프로그래밍 Company 서울대학교통계학과 2010년 2학기컴퓨터의개념및실습 ( 1

EA0015: 컴파일러

final_thesis

PowerPoint 프레젠테이션

Speculative Register Promotion Using Advanced Load Address Table (ALAT)

Chap7.PDF

<B8AEC6F7C6AEBAE4BEEE20C0CEBCE2>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

금오공대 컴퓨터공학전공 강의자료

ISP and CodeVisionAVR C Compiler.hwp

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Microsoft PowerPoint - C프로그래밍-chap00.ppt [호환 모드]

프입2-강의노트-C++배경

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

USER GUIDE

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems

2002년 2학기 자료구조

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C7C1B7CEB1D7B7A1B9D6BEF0BEEEB7D05FC3E2BCAEBCF6BEF7>

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

Microsoft PowerPoint - CSharp-10-예외처리

강의10

C# Programming Guide - Types

C 언어와 프로그래밍 개요

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

초보자를 위한 C++

Semantic Consistency in Information Exchange

Microsoft PowerPoint - semantics

chap10.PDF

강의개요

<C7C1B7CEB1D7B7A1B9D6BEF0BEEE2E687770>

02 C h a p t e r Java

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

PCServerMgmt7

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

쉽게

마이크로프로세서 설계 무작정 따라하기

Microsoft PowerPoint - 08_(C_Programming)_(Korean)_Preprocessing

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

PowerPoint 프레젠테이션

초보자를 위한 C# 21일 완성

제4장 기본 의미구조 (Basic Semantics)

2,. 1 1, ,....?. 1920, (International Fixed Calendar) (World Calender). 1 13, , ( ).., (

OCW_C언어 기초

lex-yacc-tutorial.hwp

APOGEE Insight_KR_Base_3P11

자연언어처리

Portal_9iAS.ppt [읽기 전용]

슬라이드 1

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

프로그래밍언어 컴퓨터정보과권용광 CONTENT 1. 컴퓨터언어와프로그래밍의개념 2. 프로그래밍과정과컴퓨터언어의계층 3. 프로그래밍언어의발달과정과분류 4. 프로그래밍코딩의실제예 컴퓨터언어와프로그래밍의개념 프로그래밍과정과컴퓨터언어의계층구조 프로그래밍언어

Week1

Microsoft PowerPoint - Chapter_04.pptx

SFCMVCLHFEXZ.hwp

PowerPoint 프레젠테이션

SMB_ICMP_UDP(huichang).PDF

(Microsoft PowerPoint - \273\365 Microsoft Office PowerPoint \307\301\267\271\301\250\305\327\300\314\274\307.pptx)

<31325FB1E8B0E6BCBA2E687770>

Interstage5 SOAP서비스 설정 가이드

Chap 6: Graphs

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

초보자를 위한 ASP.NET 21일 완성

기술 이력서 2.0

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

Microsoft PowerPoint - chap-02.pptx

PowerPoint 프레젠테이션

UML

2 장. 컴퓨터와경영정보시스템

슬라이드 1

학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.

슬라이드 1

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

untitled

No Slide Title

PowerPoint 프레젠테이션

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

J2EE & Web Services iSeminar

Microsoft PowerPoint - ch01.ppt

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

Microsoft PowerPoint - chap-02.pptx

Transcription:

Lecture 01: Compiler Overview Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2019

강의정보 교과목명 : 컴파일러 개설학과 : 컴퓨터공학과 4학년 학점및시수 : 3학점 3시간 강의시간 : 화 2,3,4교시 이수구분 : 전공선택 ( 이론 ) 교재 : 컴파일러입문 ( 정익사 ), 오세만 연락처 : 연구실위치 : 민주관 1층 109호. 연락처 : 033-730-0486, 033-730-0480 E-mail : kkman@sangji.ac.kr Homepage : http://compiler.sangji.ac.kr Lecture01: Compiler Overview, kkman@sangji.ac.kr 2

프로그래밍언어번역기 프로그래밍언어번역기 (translator) 원시프로그램을입력으로받아의미적으로동등하면서직접기계에서실행될수있는형태로번역. Source program Target program Lecture01: Compiler Overview, kkman@sangji.ac.kr 3

좋은 (Good) 프로그래밍언어의요건 명확한언어개념 문법적인구조 (syntax, grammar) 의미 (semantics) 프로그래머의생각을자연스럽게표현 호환성 ( 이식성 ), 신뢰성, 모듈화, 효율성 언어의확장성이우수 좋은프로그래밍환경 Lecture01: Compiler Overview, kkman@sangji.ac.kr 4

COBOL COmmon Business Oriented Language 1960년대초, 코다실 (CODASYL) 에서발표 주로업무용으로사용 1968 ~ 1974년에 ANSI COBOL을제정 FORTRAN FORmula TRANslation 1960년대초, J. Backus를중심으로개발 과학계산용언어 1977년 FORTRAN77이발표 Lecture01: Compiler Overview, kkman@sangji.ac.kr 5

ALGOL ALGOrithmic Language ALGOL68-1968년 IFIP WG2.1에서발표 구문구조를형식문법으로표현 언어의구조와의미가명료 제어구문구조가우수 많은프로그래밍언어에큰영향 Pascal 1970년대초, N.Wirth가고안 프로그래밍언어론적인관점에서설계 전산학적인응용에적합 - 자료구조, 알고리즘 Lecture01: Compiler Overview, kkman@sangji.ac.kr 6

Ada 1980년미국방성 (DoD) 에서발표 reliability, simplicity, modularity, efficiency package, generic features, multi-tasking real-time application에적합 C++ 1983 년 B.Stroustrup OOPL : class, inheritance, polymorphism Lecture01: Compiler Overview, kkman@sangji.ac.kr 7

Java James Gosling, Sun MicroSystems OOPL, Exception, Multithread Internet & Distributed Environment 플랫폼독립성 Applet, Application Lecture01: Compiler Overview, kkman@sangji.ac.kr 8

C# John Gough, Microsoft.NET Framework, OOPL(Object-Oriented Programming Language) JIT (Just In-Time Compilation) MSIL (Microsoft Intermediate Language) CLR (Common Language Runtime) Expressiveness and Simplicity Lecture01: Compiler Overview, kkman@sangji.ac.kr 9

번역기와컴파일러 프로그래밍언어번역기종류 컴파일러 (compiler) 인터프리터 (interpreter) 어셈블러 (assembler) 전처리기 (preprocessor)... Lecture01: Compiler Overview, kkman@sangji.ac.kr 10

컴파일러 컴파일러 (Compiler) 정의 고급언어로쓰여진프로그램을어떤특정한컴퓨터에서직접수행가능한형태의프로그램으로번역해주는시스템프로그램. High-level Source Program Compiler Object Program (Assembly Language, Machine Language) C compiler test.c => C-complier => test.obj Lecture01: Compiler Overview, kkman@sangji.ac.kr 11

크로스컴파일러 (cross compiler) 크로스컴파일러정의 원시프로그램을컴파일러가수행되고있는기계에대한기계어로번역하는것이아니라다른기종에대한기계어로번역하는컴파일러. SPARC 컴퓨터에서 Intel 8086/80386 코드생성 C 프로그램 C 컴파일러 C 크로스컴파일러 (intel) SPARC 컴퓨터 목적프로그램 (SPARC) 목적프로그램 (Intel) Lecture01: Compiler Overview, kkman@sangji.ac.kr 12

인터프리터 (interpreter) 인터프리터정의 원시프로그램을입력으로받아목적언어또는프로그램으로변환하지않고직접실행해서결과를출력해주는시스템프로그램. HTML 인터프리터, Bytecode 인터프리터 (Java) 입력데이터 원시프로그램 Interpreter 실행결과 Lecture01: Compiler Overview, kkman@sangji.ac.kr 13

전처리기 (preprocessor) 기능 프로그래밍언어에유용한기능들을추가 언어확장 (language extension) 확장된프로그램은기본언어에대한언어번역기에의해번역 원시프로그램 전처리기 확장된원시프로그램 번역기 목적프로그램 Lecture01: Compiler Overview, kkman@sangji.ac.kr 14

마크로 (macro) 유사한원시코드를마크로로정의하고필요할때마다확장 프로그래머의생산성을증가 #define Max 1000 조건부컴파일 (conditional compile) Language to Language translator C to Pascal C++ to C Lecture01: Compiler Overview, kkman@sangji.ac.kr 15

컴파일러의개략적인구조 원시프로그램 전단부 중간코드 후단부 목적프로그램 * 원시프로그램 : Source program * 목적프로그램 : Target program * 전단부 : Front-end * 후단부 : Back-end * 중간코드 : Intermediate Code Lecture01: Compiler Overview, kkman@sangji.ac.kr 16

전단부 (Front-end) 원시프로그래밍언어종류에의존적 원시프로그램을분석, 중간코드생성 원시프로그램마다전단부가각각존재 어휘분석, 구문분석, 의미분석, 중간코드생성 후단부 (Back-end) 목적기계 (target machine) 에의존적 중간코드를특정기계에대한목적코드로번역 목적기계마다각각의후단부가존재 목적코드생성, 코드최적화단계 Lecture01: Compiler Overview, kkman@sangji.ac.kr 17

컴파일러의일반적구조 원시프로그램 컴파일러 전단부 후단부 목적프로그램 어휘분석 구문분석 의미분석 중간코드생성 코드최적화 목적코드생성 토큰구문트리중간코드 의미분석트리 최적화된중간코드 Lecture01: Compiler Overview, kkman@sangji.ac.kr 18

어휘분석 (lexical analysis) 어휘분석기, 스캐너 (scanner) 원시프로그램에대해일련의토큰 (token) 생성 컴파일러내부에서효율적이며다루기쉬운정수로바꾸어줌. Source Programs Scanner A sequence of tokens Lecture01: Compiler Overview, kkman@sangji.ac.kr 19

토큰 (Token) 정의 문법적으로의미를갖는최소의단위 종류 일반형태 프로그래머에의해지정 명칭, 상수 특수형태 언어설계자에의해지정 keywords, operators, delimiter,... Lecture01: Compiler Overview, kkman@sangji.ac.kr 20

토큰의예 A := B + 3; A, :=, B, +, 3, ; // 6 개토큰으로분리 IF A > 10 THEN... Token : IF A > 10 THEN Token number : 29 1 20 2 35 Lecture01: Compiler Overview, kkman@sangji.ac.kr 21

구문분석 (syntax analyze) 구문분석기 (syntax analyzer), 파서 (parser) 토큰을받아원시프로그램에대한문법검사 올바른구문구조또는문장 파스트리 (Parse Tree) 추상화구문트리 (Abstract Syntax Tree; AST) 에러를가진구문구조 에러메시지 (Syntax Error) 출력 토큰 Parser 트리 에러메시지 Lecture01: Compiler Overview, kkman@sangji.ac.kr 22

중간코드 (intermediate code) 생성 중간코드생성기 구문트리를입력으로받아의미검사를수행한후중간코드생성 의미검사 (semantic checking) 중간코드생성 (intermediate code generation) 장점 컴파일러를기능적으로독립적인모듈로작성 원시프로그램의이식성증가 번역과정을쉽게표현, 효율적처리 중간코드에대한최적화가능 Interpretive Compiling Lecture01: Compiler Overview, kkman@sangji.ac.kr 23

Ex) A := B + 1; Tree : := Ucode: LOD 1 2 LDC 1 ADD STR 1 1 A + B 1 Lecture01: Compiler Overview, kkman@sangji.ac.kr 24

의미분석 (semantic analyze) 정의 구문분석결과에추가적인정보를출력하는단계 속성문법 (attribute grammar) Inherited attribute Synthesized attribute 형검사 (type checking) 연산자정의에맞는피연산자를가지는가를검사 실수가배열의첨자로사용 => Error 실수와정수의혼합연산 => 형변환 (type conversion) Lecture01: Compiler Overview, kkman@sangji.ac.kr 25

코드최적화 (code optimization) 기능 동등한의미를유지하면서효율적코드생성 코드실행시기억공간, 실행시간절약 중간코드, 목적코드에대한최적화 ( 선택적 ) 단계 최적화기의위치 Pre-code Optimizer Post-code Optimizer 핍홀최적화 (Peephole Optimization) Lecture01: Compiler Overview, kkman@sangji.ac.kr 26

코드최적화 (optimization) 종류 코드최적화관점 ( 범위 ) 지역최적화 (local optimization) 기본블록단위에서일련의비효율적인코드들을구분해내고좀더효율적인코드로개선하는방법 1. Constant folding 2. Eliminating redundant load, store instructions 3. Algebraic simplification 4. Strength reduction 전역최적화 (global optimization) 프로그램전체흐름분석기술을이용하여기본블록들사이에최적화수행. 1. Common subexpression 2. Moving loop invariants 3. Removing unreachable codes Lecture01: Compiler Overview, kkman@sangji.ac.kr 27

목적코드생성 목적기계코드생성 중간코드를입력으로받아의미적으로동등한목적기계에대한코드를생성 목적기계코드생성기 (target code generator) 목적코드생성기기능 목적코드선택및생성 레지스터의운영 기억장소할당 기계의존적인코드최적화 Lecture01: Compiler Overview, kkman@sangji.ac.kr 28

에러복구 (error recovery) 에러복구 (recovery) 정의 에러가다른문장에영향을미치지않도록수정하는것 error repair : 에러가발생하면복구해주는것 에러처리 (error handling) Error detection Error recovery Error reporting Error repair 에러종류 문법에러 (syntax error) 의미에러 (sematic error) 실행시간에러 (run-time error) Lecture01: Compiler Overview, kkman@sangji.ac.kr 29

컴파일러자동화도구 컴파일러자동화도구 컴파일러의전과정또는각단계들을자동적으로생성하는도구 컴파일러생성기 (compiler generator) 컴파일러-컴파일러 (compiler-compiler) Program written in L Language Description : L Machine Description : M Compiler -Compiler Compiler Executable form on M Lecture01: Compiler Overview, kkman@sangji.ac.kr 30

컴파일러자동화도구, 컴파일러생성기 (compiler generator) 입력을주면출력으로컴파일러를자동으로생성해주는컴파일러 - 컴파일러 : PQCC(Production-Quality Compiler Compiler) ACK(Amsterdam Compiler Kit) 어휘분석, 구문분석, 코드생성등컴파일러의단계 (phase) 를자동생성 번역기제작시스템 (translator writing system) 렉스 (Lex) 와야크 (YACC, Yet Another Compiler Compiler) Lecture01: Compiler Overview, kkman@sangji.ac.kr 31

렉스 (LEX) 1975 년에 M. E. Lesk 가고안 사용자가정의한토큰에대한표현인정규표현과수행코드를입력받아 C 로작성된어휘분석기 (= 스캐너 ) 출력 어휘분석기는입력프로그램에서정규표현에해당하는토큰을찾았을때, 결합된수행코드를수행하여토큰정보생성 Lecture01: Compiler Overview, kkman@sangji.ac.kr 32

YACC 야크 구문분석기 (= 파서, parser) 를자동생성해주는구문분석기생성기 (parser generator) 1975 년벨연구소의존슨 (Steve Johnson) 이주축이되어개발한 LALR(1) 구문분석기생성기로문법규칙에대한수행코드를 C 언어로기술 Lecture01: Compiler Overview, kkman@sangji.ac.kr 33

Lex 와 YACC Lecture01: Compiler Overview, kkman@sangji.ac.kr 34

QnA