1. 범용 레지스터 (General Purpose Register)
작은 데이터의 임시 저장 공간으로, 연산 처리 및 데이터의 주소를 지정하는 역할을 한다. 컴퓨터의 장치들을 제어하는 역할 또한 수행한다.
EAX |
산술 연산 및 논리 연산 수행 |
EBX |
메모리 주소 저장 |
ECX |
반복문 사용 시 반복 카운터로 사용 반복할 횟수 지정하고 반복 작업 수행 |
EDX |
EAX 레지스터와 같이 쓰임 부호 확장 명령 등에 사용 큰 수의 곱셈 또는 나눗셈 연산 |
EDI |
복사할 때 목적지 주소 저장 |
ESI |
데이터를 조작하거나 복사할 때 데이터의 주소 저장 |
ESP |
메모리 스택의 끝 지점 주소 포인터 |
EBP |
메모리 스택의 첫 시작 주소 포인터 |
EIP |
다음에 실행해야 할 명령어의 주소 포인터 |
2. 세그먼트 레지스터 (Segment Register)
세그먼트에 대한 주소 지정을 제공한다. PC 계열에서 사용되고 있는 인텔 프로세서들은 자신의 주소 지정 능력을 제공한다. 1
CS |
기계 명령을 포함한 코드 세그먼트의 시작 주소를 가리킴 |
DS |
프로그램에 정의된 데이터 세그먼트의 시작 주소를 가리킴 데이터의 오프셋을 DS 레지스터에 저장된 주소 값에 더해 데이터 세그먼트 내에 위치해 있는 데이터의 주소를 참조 |
SS |
실행 과정에서 필요한 데이터나 연산 결과 등을 임시로 저장하거나 삭제할 때 사용하는 스택 세그먼트의 시작 주소를 가리킴 |
ES |
추가로 사용된 데이터 세그먼트의 주소를 가리킴 |
FS |
사용처 미정, 여분 레지스터 |
GS |
3. 플래그 레지스터 (Flag Register)
마이크로프로세서에서 다양한 산술 연산 결과의 상태를 알려주는 플래그 비트들을 저장한다. 조건문과 같은 실행 순서의 분기를 정할 때 주로 사용된다.
Z |
제로 플래그. 연산 결과가 0일 경우 참. |
C |
캐리 플래그. 부호 없는 숫자의 연산 결과가 비트 범위를 넘어섰을 경우 참. |
A |
보조 캐리 플래그. 연산 결과 하위 4bit에서 비트 범위를 넘어섰을 경우 참. |
O |
오버플로우 플래그. 부호 있는 숫자의 연산 결과가 비트 범위를 넘어섰을 경우 참. |
S |
사인 플래그. 연산 결과가 음수일 경우 참. |
P |
패리티 플래그. 연산 결과에서 1로 된 비트의 수가 짝수일 경우 참. |
D |
디렉션 플래그. 문자열 조작에서 참일 경우 주소 주소 레지스터 값이 감소, 거짓일 경우 증가. |
T |
트랩 플래그. 참일 경우 한 명령이 실행될 때마다 인터럽트 발생. 디버깅에 사용. |
- 세그먼트(Segment) : 프로그램에 정의된 특정 영역으로, 코드, 데이터, 그리고 스택을 포함한다. [본문으로]
'System > Cybersecurity' 카테고리의 다른 글
애플리케이션 해킹 개요 - Windows 애플리케이션의 기본 개념 (0) | 2019.03.23 |
---|---|
Python에서 Win32 API 활용하기 - ctypes 모듈 (0) | 2019.03.19 |
정보보안 단어 요약정리 (0) | 2018.12.01 |
Ubuntu 16.04 Privilege Escalation 취약점 공격 실습 - root 권한 얻기 (0) | 2018.12.01 |
Xerosploit 활용 - MITM 공격, 파일 바꿔치기 공격 (0) | 2018.12.01 |