Semantic Analysis 까지가 front end이고 이제 code generation 하기 전의 최적화 과정이다. [용어정리]Intermediate Representation (IR)말그대로 중간 표현 으로, 어떤 frontend, backend를 쓰는 동일한 optimizer를 쓸 수 있다.High-Level Assembly 아래 설명에서는 high level assembly를 사용한다고 가정한다.register가 무한개가 있고,control 구조는 assembly와 비슷하며operation code를 쓰나 일부는 higher level이다.IgenIR를 위한 Code generation으로 igen(e, t)이면 e를 레지스터 t로 넣는 데 필요한 코드를 뜻한다.이때 register를 무한개..
Storage Class Selection Problem레지스터 파일에 저장할지, 메모리에 저장할지 결정하는 문제보통 Global, Static들은 memory에, Local 중에 composite type(Struct, array 같은 것들)은 메모리에, 다른 것들은 레지스터에 넣는다고 한다.Optimize 할 때는 할 때는 unlimited register로 가정했고, code generation 할 때는 all memory approach로 생각했었다.근데 이제는 unlimited register가 아니라 실제 배정을 해보는 단계Recall : Liveness Analysis 이거를 다시 생각해 보는 이유는 서로 같은 시점에 live 하지 않으면 레지스터를 공유할 수 있기 때문이다.Liveness ..