목록전체 글 (86)
수정입니다

intermediate representation을 machine level code로 변환하는 과정. => machine level로 표현하기 힘든 structure들은 어떻게 표현해야 할까? Runtime environmenthigh level structure를 지원하기위해 run time에 사용되는 set of data structures여러 이슈를 다룸- What do objects look like in memory?- What do functions look like in memory?- Where in memory should objects and functions be placed? Object representations Data alignment=> 컴파일러가 object가 memo..

Intermediate code는 optimization을 고려하지 않음=> 수많은 useless variable 생성 물론 machine code로 바꿀 때도 최적화를 해야하지만, 너무 딥하기 때문에intermediate를 최적화 하는 것을 중점적으로 본다. Basic block=> maximal sequnece of consecutive three address instruction 그냥 대충 뭐 scope 정도로 생각하면 될듯..? Control flow graphs Type of intermediate code optimizationslocal optimization 일 때 ( 하나의 block 내에서 optimize 할 때)=> CONSTANT는 합쳐준다t0 = 10 + 100y = t0==..

high level intermediate representation( parse tree, AST ..)를low-level intermediate representation ( three address cod, TAC) 로 변환 해야 한다. intermediate representation이 왜 필요할까?=> machine code는 optimization을 할 때 여러 제약이 존재함=> 중간 코드를 사용해서 더 쉽게 이해하고 최적화 할 수 있음=> 중간 코드를 사용하면 더 low cost로 최적화를 할 수 있음 이 클래스에서는 대표적으로 AST와 TAC를 이용해 intermediate representation을 쓰고자 한다. AST=> parsing tree 에서 디테일을 제거한 버전 TAC (T..

Semantic Analyzer문법적으로 옳은 문장이라고 하더라도, 의미론적인 것까지 옳다는 이야기는 아니다.semantic analyzer는 그런 의미론적인 부분을 체크해준다. 각 프로그래밍 언어마다 문맥은 다 다르지만, 우리 클래스에서는 아래의 의미론을 사용한다. (아마도 C언어의 단순한 문법)1. 모든 변수는 사용되기 전에 선언되어야 한다.2. 모든 지역변수는 해당 범위 내에서 딱 한번만 선언될 수 있다.3. 모든 함수는 전체 코드에서 딱 한번만 선언될 수 있다. 4. 모든 변수는 해당 상수나, 변수에 대해 옳은 타입으로 사용되어야 한다.5. 모든 함수는 옳은 타입의 인자나, 옳은 인자 개수와 함께 사용되어야 한다. ==> 그렇다면, 이 규칙들을 어떻게 체크할 수 있을까?1 ~ 3 ==> Scop..

SLR parsinginput token을 어떻게 자동으로 검증할까?1) top-down parsing2) bottom-up parsing Bottom-up parsinginput string의 parse tree를 만들 때, leaf node에서부터 시작하는 방식=> right most derivation의 reverse 방향으로 "reduction"을 한다 Shift-Reduce parsing #1. string ω 을 구분자를 이용하여 두개의 substrings으로 나눈다 => ω = α | β #21) shift : 구분자 | 를 오른쪽으로 옮긴다.2) reduce : left substring의 suffix(right end substring)을 production과 매치되는 RHS로 변경한..