거북이처럼 천천히

Register variable 본문

C

Register variable

유로 청년 2024. 6. 18. 13:51

1. 레지스터 변수란 무엇인가?

  • Local variable와 Global variable은 주기억장치인 메모리 공간에 저장한다.
  • Register variable은 CPU내에 있는 임시기억장치인 Register에 저장한다.
  • 따라서 이미 연산을 수행하는 ALU (Arithmatic Logic Unit)가 있는 CPU내에 있기 때문에 상대적으로 지역 변수와 전역 변수와 비교했을 때, 데이터를 옮겨지는 과정이 없기 때문에 연산 속도가 빠르다.
  • 따라서 자주 사용하는 데이터 및 변수에 대해서 레지스터 변수로 사용하는 것이 일반적이다.

 

2. 레지스터 변수 주의사항

  • 전역 변수를 레지스터 변수로 사용할 수 없다.
    ▶ 전역 변수의 lifetime은 프로그램의 시작과 끝이기 때문에 한정적인 레지스터에 계속해서 데이터를 저장하기 어렵기 때문에 liftetime이 상대적으로 짧은 지역변수를 주로 레지스터 변수로 사용한다.
  • 레지스터 변수의 주소를 주소 연산자를 통해 구할 수 없다.
     
    주소 연산자 (&)는 주기억장치인 메모리의 주소값을 구하는 연산자이기 때문에 CPU내에 존재하며, 그 수가 한정적이고, 고유한 이름을 갖는 임시기억장치인 레지스터의 주소를 주소 연산자를 통해 구할 수 없다.
  • 레지스터 변수로 선언했다고 해서 무조건 레지스터에 저장되지 않는다.
    레지스터는 그 수가 한정적이며, CPU내에서 굉장히 중요한 역활을 수행하기 때문에 본인이 원하는 때마다 레지스터를 사용할 수 없고, 운영체제가 상황에 맞게 레지스터 변수를 사용할 수 있는지 여부를 판단한다.

'C' 카테고리의 다른 글

배열 포인터  (1) 2024.06.19
이중 포인터  (1) 2024.06.19
Pointer arry (포인터 배열)  (0) 2024.06.18
C 언어의 컴파일 과정  (0) 2024.06.06
Deque  (0) 2024.05.31