티스토리 뷰

 64비트 x86-64 아키텍처에서는 레지스터들이 여러 크기의 값을 처리할 수 있도록 설계되어 있으며, 이는 크게 64비트, 32비트, 16비트, 그리고 8비트 레지스터로 구분된다. 여기서 큰 레지스터는 작은 레지스터들을 포함하고 있어, 작은 레지스터들은 큰 레지스터의 하위 부분을 차지한다.

 

다음은 일반적인 64비트 레지스터와 그에 연결된 하위 레지스터들의 호환표입니다:

  1. 64비트 레지스터 (General Purpose)
    • rax : 64비트 전체 레지스터
      • eax : 하위 32비트
        • ax : 하위 16비트
          • ah : 상위 8비트 (상위 바이트 of ax)
          • al : 하위 8비트 (하위 바이트 of ax)
    • rbx
      • ebx
        • bx
          • bh
          • bl
    • rcx
      • ecx
        • cx
          • ch
          • cl
    • rdx
      • edx
        • dx
          • dh
          • dl
  2. 추가 64비트 레지스터 (General Purpose)
    • rsi
      • esi
        • si
          • sih (암묵적)
          • sil
    • rdi
      • edi
        • di
          • dih (암묵적)
          • dil
    • rbp
      • ebp
        • bp
          • bph (암묵적)
          • bpl
    • rsp
      • esp
        • sp
          • sph (암묵적)
          • spl
    • r8 - r15 (64비트 확장 레지스터)
      • r8d - r15d (32비트)
        • r8w - r15w (16비트)
          • r8b - r15b (하위 8비트)

이 표에서 "암묵적"은 해당 아키텍처에서 실제로 존재하지 않는 레지스터 부분을 나타내며, 이런 레지스터들은 프로그래밍에서 일반적으로 사용되지 않지만, 정리해두면 언젠간 쓸 거 같아서...

 

Comments