나는 당신이 당신이 읽고 있다고 말한 것이기 때문에 컴파일러의 문맥에서 당신의 질문에 대답 할 것입니다. 컴퓨터 아키텍처 컨텍스트에서 이러한 대답은 이 아니므로이 적용되므로주의해서 읽으십시오.
레지스터 - 투 - 레지스터 모델은 가상 레지스터를 사용할 수 있기 때문에 그렇습니까?이 모델은 레지스터에 저장할 수있는 모든 값을 유지하므로 완료 전에로드 및 저장 (메모리 관련)을 삽입해야합니다?
그럴 가능성이 있습니다. 기본 머신이 레지스터/레지스터 연산을 지원하지 않으면 "가상 레지스터"연산을로드 및 저장으로 변환해야합니다. 마찬가지로 IR 단계에서 컴파일러가 무한 레지스터 시스템을 사용하는 경우 레지스터 할당 단계에서 일부 레지스터를 메모리로 유출해야 할 수도 있습니다 (레지스터에서 무한한 가상 레지스터 집합을 실제 레지스터의 유한 집합으로 매핑하고 메모리가 부족할 때 메모리 액세스).
최적화를 위해 여분의 메모리 사용을 제거해야한다는 의미입니까?
예, 이것은 컴파일러가 최적화 단계로 수행 할 수있는 작업입니다. 이것은 단순히 대신 레지스터의 값을 떠날 최적화 할 수 있습니다
register1 <- LOAD 1234
// Operation using register 1 that leaves the result in register 1
STORE register1, 1234
register1 <- LOAD 1234
// Another operation that uses register 1
STORE register1, 1235
,이 같은 : 우리는 같은 것을 할 경우
register1 <- LOAD 1234
// Operation using register 1 that leaves the result in register 1
// Another operation that uses register 1
STORE register1, 1235
이 분명히 더 효율적이다 추가적인 DRAM 그 액세스 피할 수 있기 때문에 레지스터와 비교할 때 속도가 느립니다.