Total
Search
1. 컴파일러의 개념과 번역기의 종류
1.1. 컴파일러의 개념
•
컴파일러
◦
언어를 번역한다 → 번역기
◦
0과 1로 된 기계어로 번역해주는 프로그램
•
번역기의 종류
1.2. 컴파일러와 인터프리터
•
컴파일러 기법 - 번역 후 실행
◦
효율적
◦
반복문 처리에 효과
◦
큰 기억장소 요구
•
인터프리터 기법 - 번역과 실행
◦
실행시간 김
◦
사용자와 대화식
◦
융통성
1.3. 컴파일러의 논리적 구조
•
영어번역과 컴파일러
•
컴파일러의 논리적 구조
2. 컴파일러의 논리적 구조
•
논리적 구조 6단계
◦
어휘분석
◦
구문분석
◦
의미분석
◦
중간코드
◦
최적화
◦
코드생성
2.1. 어휘분석
•
기본어휘가 문법에 맞는지 분석
•
어휘를 토큰으로 변환
•
연산자, 식별자, 예약어, 구분자, 상수
•
어휘분석
◦
Lexical Analysis, Scan
•
어휘분석기
◦
Lexical Analyzer, Scanner
•
어휘분석 예시
2.2. 구문분석
•
구문이 문법에 맞는지 분석한다.
•
분석결과를 파스트리로 출력
•
구문분석
◦
Syntax Analysis, Parse
•
구문분석기
◦
Syntax Analyzer, Parser
•
구문분석 예시
•
파스트리 (Parse Tree)
•
구문트리 (Abstract Syntax Tree) - AST
2.3. 의미분석
•
파스트리에 의미부여
•
실행 전 사전작업
•
자료구조정의, 혼합형연산, 기호표
•
ABC := E✽3.14 + ABC/E;
2.4. 중간코드
•
최적화를 위한 중간단계
•
후위표현
•
3 주소코드
◦
예) Quadruple
◦
(✽, E, 3.14, T0)
◦
( /, ABC, E, T1)
◦
( +, T0, T1, T2)
◦
( :=, T2, Φ, ABC)
•
U 코드
•
문법지시적변환
2.5. 최적화
•
효율화
•
수행시간 최소화
•
기억공간 최소화
2.6. 목적코드 생성
•
사용할 레지스터의 수
•
계산과정
•
명령어 종류
3. 컴파일러의 물리적 구조
3.1. 컴파일러의 논리적 구조와 물리적 구조
•
참고자료
◦
패스 - 컴파일러의 논리적 구조를 구현한 것
3.2. 1-패스 컴파일러
•
효율성(기계코드 변환)
•
실행속도가 빠름
•
backpatching
◦
IF (A OR B) AND C THEN
3.3. 2-패스 컴파일러
•
이식성 (Portability)
•
기계 독립적, 최적화
•
기억장소 절약
•
기계코드 표현 제약
•
실행속도가 느림
4. 간단한 컴파일러 실행 예
•
가정
◦
연산자우선순위 이용
◦
과정만 설명
◦
ABC := E*3.14 + ABC / E;
•
과정
5. 최적화
•
기억장소 사용의 최적화