제 컴파일러 코스에서는 MIPS 아키텍처의 그래프 채색을 기반으로 레지스터 할당자를 작성합니다. 나는 Muchnick의 처치를 다음과 같이 내 구현에 적용하고있다.그래프 채색 레지스터 할당 자
Muchnick은 이러한 할당 자의 함수 인수를 처리하는 방법에 대해 다소 퍼지기가되었습니다.
나는 몇 가지 가정을하고 같은 것을 명확히 할 것이라고 생각했습니다.
- 중간 단계 IR에서 낮은 수준의 IR로 변환하려면이 단계가 필요합니다. 중첩 된 함수 호출이 처리되지 않았습니다. 내 생각은 함수 호출을 오른쪽에서 왼쪽으로 스캔하고 가장 안쪽의 호출에 대한 IR을 바깥쪽으로 배치하는 것입니다. 이 방법을 사용하면 인수 레지스터에 처음 몇 개의 인수를 할당하는 MIPS 호출 규칙을 사용할 수 있고 나머지는 최소한의 유출 (단지 1)으로 스택 할 수 있습니다.
- 고정 인수 레지스터로 함수 인수를 이동하는 LIR 코드가 처리되는 방식을 다루지 않기 때문에 책에서 병합 처리를 등록하는 것은 나에게 직관적이지 않습니다. 많은 심의를 거친 끝에 필자는 인자 전달 동작에 대해 등록 병합을해서는 안된다는 결론에 도달했습니다.
이러한 가정에 대한 의견/생각은 대단히 감사하겠습니다.