본문 바로가기

23년 2학기 학교공부/컴파일러개론

[CP] Storage Management

목차

    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