다음을 통해 공유


레지스터 사용

x64 아키텍처에서는 16개의 범용 레지스터(이하 '정수 레지스터')뿐 아니라 부동 소수점에 사용할 수 있는 16개의 XMM 레지스터도 제공합니다.volatile 레지스터는 호출자가 호출 간에 소멸시켜야 하는 것으로 간주되는 스크래치 레지스터입니다.비volatile 레지스터는 함수 호출 간에 값을 유지해야 하고 필요한 경우 호출 수신자가 이를 저장해야 합니다.

다음 표에는 함수 호출 간에 각 레지스터가 사용되는 방식에 대한 설명이 나와 있습니다.

등록

상태

기능

RAX

volatile

반환 값 레지스터

RCX

volatile

첫 번째 정수 인수

RDX

volatile

두 번째 정수 인수

R8

volatile

세 번째 정수 인수

R9

volatile

네 번째 정수 인수

R10:R11

volatile

필요한 경우 호출자가 유지해야 하며, syscall/sysret 명령에 사용됩니다.

R12:R15

비volatile

호출 수신자가 유지해야 합니다.

RDI

비volatile

호출 수신자가 유지해야 합니다.

RSI

비volatile

호출 수신자가 유지해야 합니다.

RBX

비volatile

호출 수신자가 유지해야 합니다.

RBP

비volatile

프레임 포인터로 사용할 수 있으며, 호출 수신자가 유지해야 합니다.

RSP

비volatile

스택 포인터

XMM0

volatile

첫 번째 FP 인수

XMM1

volatile

두 번째 FP 인수

XMM2

volatile

세 번째 FP 인수

XMM3

volatile

네 번째 FP 인수

XMM4:XMM5

volatile

필요한 경우 호출자가 유지해야 합니다.

XMM6:XMM15

비volatile

필요한 경우 호출 수신자가 유지해야 합니다.

참고 항목

참조

x64 소프트웨어 규칙