본문 바로가기

컴퓨터과학[3-2]/컴파일러16

컴파일러 구성 - 2016 출석시험 요약 컴파일러 구성 2016 출석시험 요약 2016. 10. 5.
컴파일러구성 - [제15강] 코드의 최적화와 코드의 생성 컴파일러구성 - [제15강] 코드의 최적화와 코드의 생성 실행시간 최적화 ·기억용량 최적화 ·산술식의 코드생성 ·논리식의 코드생성 컴파일러 용어정리 상수전파 컴파일 시에 상수를 포함하는 연산이 계산될 수 있으면 계산을 함으로써 코드를 줄이는 방법프로시저 호출의 전개 프로시저 호출의 실행에는 실인자가 전달이 필요하고, 호출된 프로시저에서는 레지스터의 교체라든가 자료영역의 확보, 복귀 때의 레지스터의 회복 등 많은 처리를 필요로 함. 어떤 경우에는 이런 처리보다 프로시저를 호출하는 곳에서 호출되는 프로시저의 본체를 전개하면 그들 처리를 생략할 수 있음 복사전파 치환문을 삭제하고 삭제된 치환문의 1-value 대신에 r-value를 사용하는 방법제어흐름의 최적화 불필요한 jump문을 제거하는 것레지스터 레지스.. 2016. 7. 18.
컴파일러구성 - [제14강] 의미분석과 중간언어 컴파일러구성 - [제14강] 의미분석과 중간언어 기호표 ·의미분석, 중간언어 ·중간코드 종류 ·구문지시적 변환 컴파일러 용어정리 의미분석 구문분석 단계로부터 얻어진 파스트리를 중심으로 의미를 부여하여 코드 생성이 가능하게 하는 일기호표 식별자에 대한 자료구조 선형리스트, 트리, 해쉬표의 3가지 방법을 이용하여 구성할 수 있다. 중간코드 중간코드를 이용하여 기계와 독립적인 최적화가 가능하고 기계코드로 바뀐 상태에서 행하는 것보다 훨씬 효율적인 최적화 수행이 가능. 후위표현, 3-주소 코드, 트리구조, 가상적인 기계코드 등 여러 종류가 있음구문지시적 변환 구문분석을 하면서 중간코드를 생성하는 방법 context-free문법의 각 생성규칙들과 그와 결합하여 쓰여지는 부프로그램이나 의미수행 코드들로 구성 요점정.. 2016. 7. 18.
컴파일러구성 - [제13강] YACC와 LALRGen (실습과정 소개) 컴파일러구성 - [제13강] YACC와 LALRGen (실습과정 소개) YACC 소개 ·YACC의 실행 예 ·LALRGen 컴파일러 용어정리 YACC 문법규칙에 대한 수행코드를 일반적인 프로그래밍 언어로 기술할 수 있도록 만든 LALR(1) 구문분석기 생성기 YACC 선언 부분 선언 부분은 생략될 수 있으며, 만약 사용자 프로그램 부분이 생략될 경우, 두 번째 %% 기호도 생략 가능. 선언 부분은 문법규칙의 토큰에 대한 선언과 변환규칙 부분과 프로그램 부분에서 사용될 임시변수들에 대한 선언을 함.YACC 변환규칙 부분 변환규칙 부분은 일련의 문법규칙으로 구성되고 각 규칙은 LHS(Left Hand Side)와 body의 형태를 취함. 여기서 LHS는 논터미널의 이름이고 body는 문법규칙의 오른쪽 부분에.. 2016. 7. 18.
컴파일러구성 - [제12강] Top-down 구문분석 컴파일러구성 - [제12강] Top-down 구문분석 LL조건 ·Recursive descent 구문분석 ·Predictive 구문분석 컴파일러 용어정리 top-down 구문분석 주어진 문자열과 같은 문장을 생성하기 위하여 시작기호로부터 생성규칙을 적용하여 유도해 나가는 방법 top-down 구문분석의 종류에는 recursive-descent 구문분석과 predictive 구문분석이 있다.backtracking 생성규칙이 잘못되어 주어진 문자열을 생성할 수 없으면 그 생성규칙에서 보았던 문자열을 다시 검조하여 다른 생성규칙을 갖고 유도를 시도하는 방법으로 구문분석의 효율을 저하시킨다. LL 구문분석 backtracking 하지 않고 구문분석 할 수 있는 방법으로 입력기호를 보고 적용될 생성규칙을 결정적으.. 2016. 7. 18.
컴파일러구성 - [제11강] LALR 구문분석 컴파일러구성 - [제11강] LALR 구문분석 ·CLR 파싱표의 효율화 ·LR(0)에서 LALR파싱표 구성 컴파일러 용어정리 LALR LookAhead LR 방법으로 lookahead 정보를 이용하기 때문에 SLR 방법보다 훨씬 강력하고 파싱표의 크기는 CLR에서 core가 같은 항목들을 한데 묶음으로써 SLR과 같은 크기로 구성할 수 있다. 그러나 LR(0) 항목의 집합을 구한 후 파싱표를 만들기 위해 reduce 항목이 있는 각 상태에서 lookahead 기호를 구하는 데 상당한 시간과 노력이 소요된다.LR(0) 항목 LR(0) 항목은 다음과 같이 3종류로 나누어진다. 1) [A → α․β]에서 α≠ε 인 kernel 항목 2) [A → ․α]와 같은 closure 항목 3) [A → α․]와 같은 .. 2016. 7. 18.