도서 : 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 |