본문 바로가기

카테고리 없음

[C++] 레지스터(register) 변수

void main()
{
	register int i;

	cout << "실행 시작" << endl;
	for(i = 0; i < 10000000; i++);
	cout << "실행 종료" << endl;
}

프로그램 실행화면


레지스터 변수라는 놈이 있다. 보통 변수를 선언하면 메모리를 할당받아 그 값을 저장한다. 하지만 레지스터 변수는 cpu안에 있는 레지스터(register)에 저장된다.


어셈블러를 해봤다면 조금 쉽게 이해할 수 있을 것이다. 모르겠다면 그냥 cpu에 저장할 수 있는 공간이 조금 있다고 생각하면 될 것 같다.


레지스터 변수를 쓰는 이유는 cpu에 저장되어 있기 때문에 일반 변수들보다 훨씬 빠르다는 것이다. 이를 보여 주기 위해서 for문을 사용해 그 증가값으로 레지스터 변수를 사용했다.


하지만 요즘엔 PC의 성능이 워낙 좋아졌기 때문에 큰 차이는 느낄 수 없다. 위에 나오는 프로그램보다 훨씬 더 많은 반복을 해야 한다면 또는 더 많이 접근해야 한다면 속도 차이를 느낄 수 있을 것이다.


레지스터 변수는 지역변수만 선언할 수 있다. 한 프로그램에서 두 개의 레지스터 변수를 선언할 수 있으며 32bit cpu는 32bit짜리 변수를 선언할 수 있다.


이 말은 즉 double형 변수는 선언할 수 없다는 것이다. 아마 레지스터 변수를 쓰는 일은 없을 것이라 생각된다.