2024/12 4

CSE4120 서강대학교 기초컴파일러 Prj3

실제 c가 아니라 제한사항이 있는 mini-c 상에서 optimization생각들 모음마지막 프젝을 만점 받지는 못했지만, 할 때 생각한 아이디어들 모음따로 유명한 최적화 방법에 대한 공부는 하지 않았다. 교수님이 코드/tc는 공유하지 말라 하셔서 아이디어 정도만 적는다. 사실 오래 고민한게 아까워서 적어 놓는다. 기본적인 구현은 RD,LA,AE를 통한 CP,DCE,AE를 다 하고 나서의 이야기이다. 1. mem2reg 하는 방법포인터는 항상 mem2reg한다. 그리고 어떤 int,bool 단일원소가 포인터로 대입되는 operand가 아니라면 추가로 mem2reg가능하다. 이 정당성은 쉽게 보일 수 있다.배열에 대해서 생각해 보았는데 이건 쉽지 않았다.사실상 이게 젤 중요 2. Load ~ 도 AE Se..

CS/Compiler 2024.12.27

문자열 매칭 관련 까먹기 전에 끄적이기

최근에 KMP에 관해 이해도가 조금 올랐다.KMP나 아호코라식과 같은 문자열 매칭은 실패함수를 정의하고 dp같이 이해하면 조금 헷갈린다.DFA로 변환시켜서 경로 찾기로 문제를 환원하자. 실패함수를 정의하는게 헷갈릴 수 있는데, 아호코라식에서 결국 back edge는 suffix tree에서의 경로와 동일하다.따라서 일대다 문자열 매칭도 suffix tree로 가능구현 난이도는 둘이 비슷한거 같고 이해는 아호/kmp가 더 쉽긴 한 듯..?

알고리즘 공부 2024.12.27

Short-Circuit Evaluation

Short - Circuit Evaluation은 뭘까?즉 if(a && b)가 있다고 할 때, a가 0이라면 b를 검사하지 않아야 한다 라는 일종의 약속이다.즉 위의 예시 코드는 반드시 오류가 나지 않아야 한다.  그래서 IR generation을 짤 때 이러한 shortcut을 잘 고려해서 구현해야 올바른 코드이다.그런데 이번 프로젝트3 에서 IR optimization을 진행하면서 다음과 같은 상황을 고려하는 걸 생각하게 됐다.x-x는 x에 어떤 값이 들어있는지 살펴볼 필요 없이 항상 0이다.  즉 이런 상수뿐만이 아니라 register나 experssion에 대한 것들에 대해서도 short - curcuit이 진행되어야 하는가? 혹은 이런것들이 real world compiler는 어떻게 구현되어..

CS/Compiler 2024.12.13

학교 공부 잡썰

공부가 재밌을 때는 언제일까?사람마다 각자 기준이 있겠지만 나는 내가 절대 상상도 못할 insight를 발견할 때나, 내가 알고 있던 여러지식들이 합쳐질 때를 좋아하는데 최근에 후자의 경험을 자주 한 것 같다.당장 예를 들면 오늘만 해도 컴파일러 공부를 하다가 도미네이터트리라는 것이 컴파일러 CFG에서부터 파생되었음을 배웠다. 뭔가 뭔가 지식이 합쳐지는 느낌? 그런게 받으면 참 재밌다. ps판에서 듣던 용어를 밖에서 들으니 행복했다. 그리고 개념을 공부했는데 엄청 어렵지는 않아서 나중에 팀노트에 넣어둬야 겠다.오늘 딥러닝 개론 시간에 교수님이 인상적이었는데, 수업의 양이나 질이 인상적인게 아니라, 수업 끝나기 10분전에 다음 챕터로 넘어가게 되었는데 바로 수업을 이어 나가시려 하시는게 인상적이었다. 내가..