x86-64 아키텍처(레지스터)

noob3er·2022년 12월 8일
0

System Hacking

목록 보기
2/5
post-thumbnail

레지스터(Register)

  • 레지스터는 CPU(Central Processing Unit)가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치입니다.
  • 레지스터는 공간은 작지만 CPU와 직접 연결되어 있으므로 연산 속도가 메모리보다 실제 수십 배에서 수백 배까지 빠릅니다.
  • 연산을 위해서는 반드시 레지스터를 거쳐야 하며, 이를 위해서 레지스터는 특정 주소를 가리키거나 값을 읽어올 수 있습니다.

레지스터(Register) 종류

  • 범용 레지스터(General Register)
  • 세그먼트 레지스터(Segment Register)
  • 명령어 포인터 레지스터(Instruction Pointer Register, IP)
  • 플래그 레지스터(Flag Register)

범용레지스터(General Register)

  • 작은 데이터의 임시 저장 공간으로, 연산 처리 및 데이터의 주소를 지정하는 역할을 합니다.
  • 컴퓨터의 장치들을 제어하는 역할 또한 수행합니다.

세그먼트 레지스터(Segment Register)

  • 현재 세그먼트라고 하는 메모리의 한 영역에 대한 주소지정을 제공합니다.
  • PC 계열에서 사용되고 있는 인텔 프로세서들은 자신의 주소지정 능력을 제공합니다.
  • x64 아키텍처에는 cs, ss, ds, es, fs, gs 총 6가지 세그먼트 레지스터가 존재하며, 각 레지스터의 크기는 16비트입니다.

명령어 포인터 레지스터(Instruction Pointer Register)

  • 다음에 실행해야 할 명령어가 존재하는 메모리 주소가 저장된다.
  • x64 아키텍처의 명령어 레지스터는 rip이며, 크기는 8바이트입니다.

플래그 레지스터(Flag Register)

  • 마이크로프로세서에서 다양한 산술 연산 결과의 상태를 알려주는 플래그 비트들이 모인 레지스터이다.
  • x64 아키텍처에서는 RFLAGS라고 불리는 64비트 크기의 플래그 레지스터가 존재한다.
profile
"Hard work beats talent when talent doesn't work hard."

0개의 댓글