목차
728x90
반응형
SMALL
우리가 사용하는 storage는 크게 두가지가 있다.
1. Register
2. Memory
register는 접근이 빠르고 프로그래머에는 보이지 않는다.
간접접근이 불가능하다. 그 말은 즉 주소를 딸 수 없다.
메모리는 상대적으로 느리지만 간접접근이 가능하다.
이런 특성을 고려하여 HIR에서 LIR로 변환하는 과정에 변수를 레지스터로 할 것인지 메모리로 할 것인지를 많이 결정한다.
결정하는 방법은 두가지가 있다.
1. Standard approach
글로벌 변수나 static은 메모리에 둔다.
로컬 변수 중 struct나 array 등 주소를 사용하여 메모리 연산이 가능한 경우 메모리에 둔다.
int x처럼 scalar들 중 '&' 오퍼레이터로 접근하는 경우는 메모리, 다른 경우는 virtual register로 둔다.
이때 virtual register는,
2. All memory approach
모든 변수를 메모리로 두고, 그 변수들 중 가능한 것들만 레지스터로 조정한다.
728x90
반응형
LIST