[System] 8086 레지스터 구조
작성자 : 달고나
http://www.hackerschool.org/HS_Boards/data/Lib_system/buffer_overflow_foundation_pub.pdf
이 글은 자료를 글쓴이가 알기 쉽게 정리한 글.
범용 레지스터만 정리함
1-1. 8086
2-1. 8086 CPU 레지스터
3-1 레지스터 종류
범용 레지스터 |
논리 연산, 수리 연산에 사용되는 피연산자, 주소를 계산하는데 사용되는 피연산자, 그리고 메모리 포인터가 저장되는 레지스터이다. |
세그먼트 레지스터 |
코드 영역, 데이터 영역, 스택 영역을 가리키는 주소가 들어 있는 레지스터이다. |
플래그 레지스터 |
프로그램의 현재 상태나 조건 등을 검사하는데 사용되는 플래그들이 있는 레지스터이다. |
인스트럭션 포인터 |
다음 수행해야 하는 명령이 있는 메모리 상의 주소가 들어가 있는 레지스터이다. |
3-2 범용 레지스터
범용 레지스터는 프로그래머가 임의로 조작할 수 있게 허용되어 있는 레지스터이다. 4개의 32bit 변수라고 생각하면 된다. 예전의 16bit 시절에서는 각 레지스터를 AX, BX, CX 등으로 불렀지만 E(Extended)가 붙여 32bit를 표현한다.
EAX - 피연산자와 연산 결과를 저장한다.
EBX - DS 영역(데이터) 안의 데이터를 가리키는 포인터
ECX - 문자열 처리나 루프는 위한 카운터
EDX - I/O 포인터
ESI - DS 레지스터(데이터)가 가리키는 데이터 영역 내의 어느 데이터를 가리키고 있는 포인터, 문자열 처리에서 소스를 가리킴
EDI - ES 레지스터(데이터)가 가리키고 있는 데이터 영역 내의 어느 데이터를 가리키고 있는 포인터, 문자열 처리에서 destination을 가리킴
ESP - SS 레지스터(스택)가 가리키는 스택 영역의 맨 꼮대기를 가리키는 포인터
EBP - SS 레지스터(스택)가 가리키는 스택의 한 데이터를 가리키는 포인터