rat 컴파일러, 레지스터 할당기 1392줄에서 584줄로 줄이고 더 나은 코드 생성
Rat's Register Allocator
rat은 C99 프론트엔드를 갖춘 소형 컴파일러 백엔드다. 기존 선형 스캔 할당기는 1392줄로 비대해졌지만, 중요도 기반 우선순위 빈 패킹 할당기로 재작성해 584줄로 줄이면서도 더 나은 코드를 생성한다. 이 할당기는 라이브 레인지, 고정 레지스터, 코얼레싱, 레지스터 선택, 스필링의 다섯 단계로 동작하며, 호출을 넘는 값을 캘리 세이브 레지스터에 자동으로 배치하는 특징이 있다.
할당기 어디에도 '호출을 넘는 값을 캘리 세이브 레지스터에 넣어라'라고 쓰여 있지 않다. 그냥 설계에서 나오는 결과다. 그게 내가 가장 좋아하는 부분이다.