#!if top = 문서명1 != null ? 문서명1 : calleeTitle != null ? (i = calleeTitle.lastIndexOf("/")) != -1 ? calleeTitle.substr(0, i) : '상위 문서' : '상위 문서'
[[파일:상위 문서 아이콘.svg|align=left&width=21.6px]] {{{#!html }}} 상위 문서: [[]]1. 개요
System V ABI - AMD64 Architecture Processor SupplementELF x86-64 psABI
AMD64 환경을 위한 System V ABI 사양. Linux와 여러 유닉스 계열 환경에서 사용한다. x86-64 psABI 공식 저장소
2. 역사
2000년 AMD가 x86-64 아키텍처 사양을 공개하면서 ABI 작업이 시작되었다.현재는 i386 ABI 문서와 함께 GitLab의 x86-psABIs 프로젝트에서 관리된다.
3. 특징
4. 사양
어셈블리 표기법은 사양 문서와 동일하게 AT&T 표기법을 사용하여 작성한다.4.1. 자료형
4.2. 호출 규약
4.3. 스택
스택은 높은 주소에서 낮은 주소 방향으로 확장되며, 함수 호출 시CALL 명령을 실행하기 직전의 %rsp는 16바이트 경계에 정렬되어야 한다.4.4. 레지스터
| 범용 레지스터 | 구분 | 비고 |
%rax | caller-saved | 반환값. AL은 가변 인자 호출에 사용 |
%rcx | caller-saved | 인자 4 |
%rdx | caller-saved | 인자 3/반환값 |
%rbx | callee-saved | 보존 레지스터 |
%rsp | [1] | 스택 포인터 |
%rbp | callee-saved | (프레임 포인터) |
%rsi | caller-saved | 인자 2 |
%rdi | caller-saved | 인자 1 |
%r8 | caller-saved | 인자 5 |
%r9 | caller-saved | 인자 6 |
%r10 | caller-saved | 임시 레지스터/시스템콜 인자 4 |
%r11 | caller-saved | 임시 레지스터 |
%r12-%r14 | callee-saved | 보존 레지스터 |
%r15 | callee-saved | 보존 레지스터/GOT(선택) |
[1] 반환 시 호출자가 기대하는 상태로 복구