컴파일러
컴파일러의 레지스터 할당에서 간섭 그래프를 색칠하는(채색하는) 방법을 사용할 때, 그래프의 노드와 간선이 나타내는 것의 조합으로 올바른 것은?
- A노드는 명령, 간선은 명령의 실행 순서
- B노드는 레지스터, 간선은 레지스터끼리의 배선
- C노드는 값, 간선은 동시에 살아 있는 관계
정답과 해설 보기
정답: C. 노드는 값, 간선은 동시에 살아 있는 관계
간섭 그래프에서는 변수나 중간 값을 노드로 하고, 어느 시점에 둘 다 아직 사용되는(살아 있는) 두 값을 간선으로 연결합니다. 간선으로 이어진 값은 동시에 필요하므로 같은 레지스터에 넣을 수 없습니다. 레지스터 수를 k개로 하여 이웃끼리 같은 색이 되지 않도록 k색으로 칠할 수 있다면, 색을 그대로 레지스터에 대응시켜 할당할 수 있습니다. 칠할 수 없는 경우에는 일부 값을 메모리로 내보냅니다(스필). 명령의 순서나 레지스터의 배선을 나타내는 그래프가 아닙니다.
- A. 명령의 순서를 나타내는 그래프가 아닙니다.
- B. 레지스터의 배선을 나타내는 그래프가 아닙니다.
- C. 올바릅니다. 동시에 살아 있는 값끼리를 간선으로 연결합니다.