카테고리 없음

레지스터의 종류와 기능

StudyOwl 2022. 7. 16. 01:24

레지스터

- 기본적으로 CPU가 요청을 처리할때 사용하는 데이터의 임시저장 공간이다

- RAM과 레지스터를 같은걸로 생각할 수 있는데 다른것이다

- 레지스터 마다 각각의 역할이 있는데 무조건 그렇게 해야한다는 강제성은 없지만 일반적으로 맞춰서 사용하는 것이 좋다

 

범용 레지스터

범용 레지스터

주 용도는 있으나 그외에 다른 용도로 사용가능한 중요하고 자주쓰는 레지스터

 

- 산술 연산 레지스터

  • RAX : 사칙연산 등 산술 연산에 자동으로 사용되며, 함수의 반환 값을 처리할 때도 사용
  • RBX : 간접 번지 지정에 사용됩니다. 산수, 변수를 저장
  • RCX : 반복(Loop)에서 반복 Count 역할을 수행
  • RDX : RAX를 보조하는 역할을 합니다. 예를 들어 나누기를 진행할 경우 몫은 RAX에 나머지는 RDX에 저장

- 인덱스 레지스터

  • RSI : 복사나 비교를 할 경우 출발지 주소를 저장하는 레지스터
  • RDI : 복사나 비교를 할 경우 목적지 주소를 저장하는 레지스터

- 포인터 레지스터

  • RIP : 다음에 실행할 명령어의 주소를 가지고 있는 레지스터입니다. 현재 실행하고 있는 명령어가 종료되면 이 레지스터에 있는 명령어를 실행하게 됩니다.
  • RSP : Stack Pointer의 가장 최근에 저장된 공간의 주소를 저장하는 레지스터
  • RBP : Stack Pointer의 기준점(바닥 부분)을 저장하는 레지스터

- R8 ~ R15

  • 특별히 정해진 용도 없이 다양하게 쓰이며 일반적으로 함수의 매개변수로 사용된다고 함

 

세그먼트 레지스터

세그먼트 레지스터

일단 현재 메모리 주소 표현 각 영역의 기본 위치를 가르킴 즉 주소 공간 구분 역할

*TMI : 범용레지스터가 32비트 64비트로 점점 늘어가는동안 이놈은 아직 16비트

 

  • CS : 코드 영역을 가르키는 레지스터
  • SS : 스택 영역을 가르키는 레지스터
  • DS : 데이터 영역을 가르키는 레지스터
  • 이외의 레지스터들은 운영체제 별로 용도를 결정할 수 있는 범용적 세그먼트 레지스터

 

플래그 레지스터

플래그 레지스터

프로세서의 현재 상태를 저장하고있는 레지스터이다

 

위 그림처럼 엄청나게 많은 플래그 레지스터가 있지만 연산결과에 자주 쓰는 4가지만 알아보면

  • CF : 부호 없는 수의 연산 결과가 비트의 범위를 넘은 경우
  • ZF : 연산 결과가 0 일때
  • SF : 연산 결과가 음수 일때
  • OF : 부호 있는 수의 연산 결과가 비트 범위를 넘었을 경우

이렇게 4가지가 있다

 

나머지는 알아서 찾아보길.. 크흠