모의해킹/리버싱

레지스터 (Register)

철민1234 2023. 7. 8. 14:58
728x90

• 레지스터란? 

- CPU 내부에 존재하는 다목적 저장 공간이다.

- 소규모 데이터 기억장치이다.(산술/연산 가능)

- 일반 메모리보다 빠른 속도를 가진다.

 

- AX 레지스터

입출력과 대부분의 산술, 논리 연산에 사용되며, 함수의 반환값이 AX 레지스터에 저장된다.

 

- BX 레지스터

메모리 주소를 저장하기 위한 용도로 사용된다.

 

- CX 레지스터 

반복 명령어 사용 시 반복 횟수로 사용되는 레지스터이다.

 

- DX 레지스터

AX 레지스터와 같이 쓰이고 부호 확장 명령 등에 쓰이며 산술/논리 연산 보조 역할을 한다.

 

- 포인터 레지스터 (메모리 스택 영역과 관련된 주소 값을 나타낸다)

ESP(Stack Pointer) : 스택 영역의 최상단을 가리킨다.

EBP(Base Pointer) : 스택 영역의 기준이 되는 주소를 가리킨다.

 

- 인덱스 레지스터 (문자열을 복사/비교와 관련된다)

ESI(Source Index) : 복사/비교의 대상의 주소를 가리킨다.

EDI(Destination Index) : 복사/비교를 할 곳의 주소를 가리킨다.

 

- 명령어 레지스터 

EIP(Instruction Pointer) : 다음 실행할 명령이 들어 있는 메모리의 주소를 가리킨다.

 

- 세그먼트 레지스터 (다양한 크기로 구분을 하는 목적으로 사용되며 16bit로 구성된다)

CS : 함수와 제어문 같은 명령어들이 저장되는 코드 세그먼트이다.

DS : 전역, 정적 변수 데이터가 들어있는 데이터 세그먼트이다.

SS : 주소와 데이터를 일시적으로 저장할 목적으로 쓰이는 스택의 주소를 지정하는 데 사용된다.

ES : 추가 레지스터로 문자 데이터의 주소를 지정하는데 사용된다.

 

- 플래그 레지스터 (실행 순서를 제어하기 위한 목적으로 사용된다)

ZF : 산술이나 비교 연산의 결과를 나타낸다.

CF : 산술 연산 후 상위 비트의 캐리를 포함한다.(자리이동 또는 회전연산 후 마지막의 비트내용을 포함)