범용 레지스터
각자 역할은 주어져 있지만, 주어진 역할 외의 목적으로도 사용할 수 있는 레지스터
syscall의 인자
SYSTEM V ABI C언어에서 syscall을 이용하려면 syscall() 함수 안에 원하는 인자를 넣으면 된다.
하지만 어셈블리어에서는 C언어에서 처럼 쉽게 인자를 넣을 수 없다.
어셈블리어를 통해 syscall을 사용하려면 지정된 레지스터에 인자를 넣어야 한다.
rax : 어떤 syscall을 사용할지 나타내는 번호
ex) read = 0x01, write = 0x02, open = 0x03
RDI, RSI, RDX, RCX, R8, R9
위의 순서대로 C언어의 syscall에 해당하는 인자를 넣어주면 된다.
세그먼트 레지스터
프로세스의 segment를 가르키는 포인터를 저장하는 레지스터
명령어 포인터 레지스터
실행시킬 어셈블리어 명령어를 가르키는 포인터를 저장하는 레지스터
플래그 레지스터
CPU의 상태(flag)를 저장하는 레지스터
크기는 64비트이지만 20여개의 bit만 사용한다.