▶ 64bit 운영체제

 

64bit 운영체제는 2^64만큼의 비트를 사용한다.

→ 메모리를 0부터 18,446,744,073,709,551,616까지 저장할 수 있다.

 

64bit 컴퓨터에서는 최대 1tb(2^10gb)만큼의 RAM이 들어간다.

 

 

▶ 64bit 레지스터

 

※ 레지스터란?

→ CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 젖아하는 기억장치

→ 레지스터의 용량이 클수록 메모리에서 더 많은 데이터를 가져와 저장할 수 있으므로 처리속도가 빨라진다.

 

 

▷ 범용 레지스터

 

RAX 산술/논리 연산 수행 후 함수의 return 값 저장
RBX 메모리 주소 저장
RCX 반복문에서 카운터로 사용되는 레지스터
RDX I/O 주소 지정 시 사용, 다른 레지스터를 서포트하는 보조 레지스터
R8~R15 64bit 프로세서에서 추가된 범용 레지스터, 다양한 용도로 사용

 

▷ 인덱스 레지스터

 

RSI 복사할 데이터의 주소 저장
RDI 복사된 데이터의 주소 저장

 

▷ 포인터 레지스터

 

RSP 스택의 끝 지점 주소 (현재 스택 주소) 저장
스택의 가장 높은 곳을 가리킴
push, pop 명령을 통해 RSP 값이 위아래로 8바이트씩 이동
RBP 함수 호출 시 형성되는 스택프레임의 시작 지점 주소 (스택 복귀 주소) 저장

 

▷ 플래그 레지스터

 

RFLAGS register 시스템 제어 용도, 비교/조건문 처리 용도
CF(Carry Flag) 부호 없는 수끼리 연산 결과에서 자리올림/자리내림이 발생할 때 1,
unsigned int 값을 벗어날 때 1
OF(Overflow Flag) 부호 있는 수끼리 연산 결과에서 용량을 초과했을 때 1
SF(Sign Flag) 연산 결과 최상위 비트가 1인 경우 1
ZF(Zero Flag) 연산 결과가 0이면 1
AF(Auximiliary-carry Flag) 16bit 연산 시 자리올림/자리내림이 발생할 때 1
PF(Parity Flag) 연산 결과가 짝수면 1, 홀수면 0
DF(Direction Flag) 방향 플래그
0으로 설정 시 해당되는 어셈블리 명령에 제공되는 주소 증가
IF(Interrupt Flag) 1은 인터럽트 활성화, 0은 인터럽트 비활성화
TF(Trap Flag) single step mode에서 프로세스의 동작 허용

 

 

※ 하나의 레지스터는 크기에 따라 적절히 쪼개 사용할 수 있다.

 

 

RAX(64 bits) - EAX(32 bits, Extended AX) - AX(16 bits) - AL(8 bits) - AH(8 bits)

 

'2021-2 STUDY > Reversing Study' 카테고리의 다른 글

Week02_Dreamhack rev-basic-2, rev-basic-3  (0) 2021.09.25
Week02_PE 파일 구조  (0) 2021.09.25
Week01_abex' crackme #1  (0) 2021.09.11
Week01_Dreamhack rev-basic-0, rev-basic-1  (0) 2021.09.11
Week01_32bit/64bit 호출 규약  (0) 2021.09.11

+ Recent posts