나의 기록, 현진록

[System] 8086 레지스터 구조 본문

-Computer Theory

[System] 8086 레지스터 구조

guswlsdk 2018. 1. 22. 14:47
반응형

작성자 : 달고나 

http://www.hackerschool.org/HS_Boards/data/Lib_system/buffer_overflow_foundation_pub.pdf

이 글은 자료를 글쓴이가 알기 쉽게 정리한 글.

범용 레지스터만 정리함


1-1. 8086

8086이란 인텔에서 1978년에 개인용 컴퓨터를 위한 마이크로프로세서이다.


2-1. 8086 CPU 레지스터


CPU가 프로레스를 실행하기 위해 프로세스를 CPU에 적재해야 한다. 그렇게 하기 위해서는 CPU가 데이터를 재빨리 읽고 쓰기를 해야 하는 데이터이므로 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 레지스터(스택)가 가리키는 스택의 한 데이터를 가리키는 포인터 




반응형

'-Computer Theory' 카테고리의 다른 글

[System] 쉘코드 모음  (0) 2018.02.11
[System] FSB .dtors란?  (0) 2018.01.30
[Linux] setuid  (0) 2018.01.17
[System] 변수의 메모리 주소 비교  (0) 2018.01.13
[OS] 엔디언이란? (리틀 엔디언, 빅 엔디언)  (0) 2017.09.25