레지스터(Register)란 무엇인가?
데이터 고속처리를 위해 중앙처리장치(CPU)에 들어 있는 소규모 데이터 기억장치이다.
일반 메모리 보다 빠른 속도를 가지고 있다.
산술/연산이나 정보해석, 전송등 을 할수 있는 일정 길이의 정보를 저장한다.
어셈블리에서 레지스터란? 변수는 변수인데, CPU가 사용하는 변수이다.
컴퓨터의 bit가 클수록 처리속도가 빠르다.
레지스터(Register)의 종류 와 특징
범용레지스터 - 계산, 메모리 어드레스 지정, 임시 저장공간등의 목적으로 사용되며 32bit로 구성된다.
종류 |
특징 |
EAX(32bit)
AX(16bit)
AH / AL(8bit) |
누산기 레지스터로 대부분의 입출력과 산술, 논리연산을 수행한다. 함수의 리턴 값을 저장한다. |
EBX(32bit)
BX(16bit)
BH / BL(8bit) |
주소 지정을 확장하기 위해 인덱스로서 사용하는 레지스터이다. |
ECX(32bit)
CX(16bit)
CH / CL(8bit) |
반복문을 수행할 때 반복 횟수를 지정하는데 사용한다. |
EDX(32bit)
DX(16bit)
DH / DL(8bit) |
큰 수의 산술, 논리연산을 할 때 EAX의 보조적 역할로 사용된다. |
포인터 레지스터 – 메모리 스택 영역과 관련된 주소 값을 나타낸다.
종류 |
특징 |
ESP (Stack Pointer) |
스택 영역의 최상단을 가리킨다. |
EBP (Base Pointer) |
스택 영역의 기준이 되는 주소를 가리킨다. |
인덱스 레지스터 – 문자열을 복사/비교와 관련된다.
종류 |
특징 |
ESI (Source Index) |
복사/비교의 대상의 주소를 가리킨다. |
EDI (Destination Index) |
복사/비교를 할 곳의 주소를 가리킨다. |
명령어 레지스터
종류 |
특징 |
EIP (Instruction Pointer) |
다음 실행할 명령이 들어 있는 메모리의 주소를 가리킨다. |
세그먼트 레지스터 - 다양한 크기로 구분을 하는 목적으로 사용되며 16bit로 구성된다.
종류 |
특징 |
CS |
함수와 제어문 같은 명령어들이 저장되는 코드 세그먼트이다. |
DS |
전역, 정적 변수 데이터가 들어있는 데이터 세그먼트이다. |
SS |
주소와 데이터를 일시적으로 저장할 목적으로 쓰이는 스택의 주소를 지정하는데 사용된다. |
ES |
추가 레지스터로 문자 데이터의 주소를 지정하는데 사용된다. |
플래그 레지스터(EFLAGS) - 실행 순서를 제어하기 위한 목적으로 사용된다.
종류 |
특징 |
OF |
산술 연산 후 상위비트의 오버플로를 나타낸다. |
DF |
스트링 데이터를 이동시키거나 비교할 때 방향을 결정한다. |
IF |
키보드 입력과 같은 외부 인터럽트의 처리 여부를 나타낸다. |
TF |
단일 단계 모드의 프로세서 연산을 허용한다. |
SF |
산술 연산의 결과 값에 대한 부호를 포함한다. |
ZF |
산술이나 비교 연산의 결과를 나타낸다. |
AF |
특수화된 산술에서 사용되며,
비트 3에서 비트4로의 캐리를 포함한다. |
PF |
연산 결과 1비트들의 개수에 따라
짝수 패리티와 홀수 패리티로 나타낸다. |
CF |
산술 연산 후 상위 비트의 캐리를 포함한다.
자리이동 또는 회전연산 후 마지막의 비트내용을 포함한다. |
'Reversing' 카테고리의 다른 글
리버싱 기초 지식 : 함수호출규약(Calling Convention) (0) | 2015.01.27 |
---|---|
리버싱 기초 지식 : 어셈블리어(Assembly) (0) | 2015.01.27 |
리버싱(Reversing) 이란?? (0) | 2015.01.27 |