Notice
Recent Posts
Tags
- structure
- atmega 128
- Linked List
- Algorithm
- interrupt
- Recursion
- ATMEGA128A
- java
- siso shift register
- Pspice
- dataflow modeling
- fast pwm mode
- Method
- D Flip Flop
- atmega 128a
- structural modeling
- ring counter
- LED
- verilog
- behavioral modeling
- gpio
- ctc mode
- MUX
- full adder
- Set
- Comparator
- half adder
- interface
- normal mode
- Shift Register
거북이처럼 천천히
Register variable 본문
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 |