본문 바로가기

System & Reversing/이론

프로세서, 레지스터


도서 : x86 프로세서를 위한 어셈블리언어



복습 2


1. 프로세서 개념


- 프로세서: 명령어실행, 데이터 처리하는 장치

 ex>CICS 계열 : 80x86 / RISC 계열 : Alpha, APM..

 

- 마이크로프로세서 : 컴퓨터의 산술논리연산기, 레지스터, 프로그램 카운터, 명령디코더, 제어회로 등의 연산장치와 제어장치를 1개의 작은 실리콘 칩에 모아 놓은 처리 장치 

 

- 프로그램 카운터 (PC) (명령어 포인터):  마이크로프로세서(중앙 처리 장치) 내부에 있는 레지스터 중의 하나로, 다음에 실행될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정


-명령디코더 : 오퍼랜드를 번역하고 제어부에 어떻게 할 것인지를 지시

 

-x86 프로세서: 인텔 사의 프로세서인 80x86  Pentium 계열 프로세서의 일반적 이름

 -16 비트 아키텍쳐 : IA-16

 -32 비트 아키텍쳐 : IA-32

 -64 비트 아키텍쳐 : IA-64 (하위 호환성 x) / intel 64(하위 호환성 o)

=> x86 또는 80x86 은 인텔이 개발한 마이크로프로세서 계열을 부르는 말이자, 이들과 호환이 되는 사용가능한 명령집합 아키텍쳐들을 통칭하는 말

=> intel 8086 : IBM PC 의 표준 프로세서로 채택

 

 

2. x86 구조 세부 사항


-IA-32 (x86) 의 동작모드

 1. 실제 주소 모드 : 8086 호환 모드, MS-DOS 에서 사용, 윈도우 98에서도 사용 가능

 2. 보호 모드 : 80286 이상에서 사용되는 동작모드, 메모리보호, 세그먼트, 페이징 기능 포함

 3. SMM(시스템 관리 모드) : 전원관리, 시스템 보안,진단 등 수행

 4. 가상8086 모드 : 보호 모드에서 실제 주소 모드 용 프로그램을 그대로 수행 할 수 있도록 주소 변환을 하는 동작 모드, 

멀티태스킹 환경에서 여러 개의MS-DOS 프로그램을 실행 시킬 수 o

 

 


3.레지스터


-레지스터 : 연산 중간 결과 저장하는 cpu에 이름이 부여된 저장공간


-레지스터의 크기 : 


-범용 레지스터 : 계산, 데이터 전송이 주로 사용되는 레지스터

/ 8가지 종류(EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP)가 있음

 1. EAX, AX : (Extended Accumulater ) 곱셈, 나눗셈 연산용

 2. EBX, BX : (Base) 루프 반복 횟수 보관, shift 횟수 보관

 3. EDX, DX : (Data) 입출력(포트 주소 보관),곱셈,나눗셈 operand 보관

 4. ESP, SP : (Stack Pointer) 스택의 top 위치 보관

 5. EBP, BP : (Base Pointer, Frame Pointer) 스택의 데이터 주소 보관(지역, 전역 변수)

 6. ESI, SI / EDI, DI : (Dest Index) 메모리 블록 전송 명령어에서 사용

 

 

 

-세그먼트 : 프로그램 실행시에 주기억 장치에 적재되는 프로그램의 분할 가능한 기본 단위 / 데이터 또는 코드용으로 할당된 메모리 영역

 

-세그먼트 레지스터

 : 세그먼트의 시작(base) 주소 지정에 사용


-세그먼트 레지스터 종류 

 1. code segment (CS): 프로그램 코드를 포함

 2. data segment (DS, ES), (FS, GS):  프로그램에서 정의된 데이터, 상수 등을 포함

 3. stack segment (SS): 지역변수, 매개변수,함수의 복귀주소 등을 포함

 

-세그먼트 크기

: 8086, 80286 은 최대 64KB – 16비트 offset 주소

: 80836 이상은 최대 4GB – 32 비트 offset 주소

 

-offset : 일반적으로 동일 오브젝트 안에서 오브젝트 처음부터 주어진 요소나 지점까지의 변위차를 나타내는 정수형

 

-16 비트 세그먼트 레지스터


-명령어 포인터 (IP) : instrunction pointer실행할 다음 명령어의 offset 주소 저장

 : 32비트( EIP ) : 80386 이상의 보호모드에서 사용

 : 16비트(IP) : 8086, 80286 / 80386 이상의real 모드에서 사용

 

-메모리 주소 = 세그먼트 시작 주소 + offset 주소

 ( 세그먼트 시작주소 지정 방법은 동작 모드에 따라 차이가 o)


-플래그 (Flag ) 레지스터

 : 연산 결과 혹은 cpu 동작 후의 어큐뮬레이터의 상태를 표시하기 위한 레지스터


-플래그 레지스터 종류

 1. 제어 플래그 : 프로세서 동작을 제어하는 비트 / DF, IF, TF

 2. 상태 플래그 : 연산 결과를 나타내는 비트 / SF, ZF, CF, OF, AF, PF

'System & Reversing > 이론' 카테고리의 다른 글

어셈블리어 2  (0) 2019.02.15
어셈블리어 1  (0) 2019.02.15
어셈블러, VM  (0) 2019.02.15