: CPU가 해석하는 명령어의 집합, ex. x86, x86-64, ARM, MIPS, AVR
↓ x86-64 아키텍처 기준
: 8byte 저장가능, 부호 없는 정수 기준으로 2
64-1까지의 수 나타낼 수 있음
| 이름 | 주용도 |
|---|---|
| rax (accumulator register) | 함수의 반환 값 |
| rcx (base register) | 반복문의 반복 횟수, 각종 연산의 시행 횟수 |
| rsi (source index) | 데이터를 옮길 때 원본을 가리키는 포인터 |
| rdi (destination index) | 데이터를 옮길 때 목적지를 가리키는 포인터 |
| rsp (stack pointer) | 사용 중인 스택의 위치를 가리키는 포인터 |
| rbp (stack base pointer) | 스택의 바닥을 가리키는 포인터 |
: 각 레지스터의 크기는 16bit, 총 6가지 seg register 존재 (cs, ss, ds, es, fs, gs)
: CPU의 상태를 저장함, RFLAGS라고 불리는 64bit 크기의 플래그 레지스터 존재

| 플래그 | 의미 |
|---|---|
| CF(Carry Flag) | 부호 없는 수의 연산 결과가 비트의 범위를 넘을 경우 설정 |
| ZF(Zero Flag) | 연산의 결과가 0일 경우 설정 |
| SF(Sign Flag) | 연산의 결과가 음수일 경우 설정 |
| OF(Overflow Flag) | 부호 있는 수의 연산 결과가 비트 범위를 넘을 경우 설정 |
: CPU가 어느 부분의 코드를 실행할 지 가리킴, x64에선 rip, 크기는 8byte
: 64bit -> 32bit(EAX) + 32bit
: 32bit(EAX) -> 16bit(AX) + 16bit
: 16bit(AX) -> 8bit(AH) + 8bit(AL)
