CPU가 프로세스 실행 위해선 프로세스를 CPU에 올려야 함
데이터 빠른 읽쓰 필요 -> CPU 내부 메모리(=register) 사용
register
1. General-Purpose register : 연산에 사용되는 피연산자, 주소계산 피연산자, 메모리 포인터 저장
2. Semgment register : code/data/stack segment 가리키는 주소
3. Program status and control register : 상태나 조건 검사 플래그
4. Instruction pointer : instruction(명령) 있는 메모리 상 주소
1. 범용 레지스터(General-Purpose register)
프로그래머 임의 조작 허용
AX 레지스터 상위 부분 : AH
〃 하위 부분 : AL
register 목적
EAX – 피연산자, 연산 결과 저장소
EBX – DS segment안의 데이터를 가리키는 포인터
ECX – 문자열 처리나 루프를 위한 카운터 EDX – I/O 포인터
ESI – DS 레지스터가 가리키는 data segment 내의 어느 데이터를 가리키고 있는 포인터. 문자열 처리에서 source를 가리킴.
EDI – ES 레지스터가 가리키고 있는 data segment 내의 어느 데이터를 가리키는 포인터. 문자열 처리에서 destination을 가리킴.
ESP – SS 레지스터가 가리키는 stack segment의 맨 꼭대기 가리키는 포인터
EBP – SS 레지스터가 가리키는 스텍상의 한 데이터를 가리키는 포인터
2. 세그먼트 레지스터(Semgment register)
프로세스의 특정 세그먼트 가리키는 포인터 역할
=> 원하는 segment 안의 특정 데이터, 명령어 정확하게 꺼낼 수 있음
3. 플래그 레지스터(Program status and control register)
상태 flag, 컨트롤 flag, 시스템 flag들의 집합
4. Instruction pointer 레지스터
다음 실행할 명령어가 있는 현재 code segment의 offset 값 가짐
예) EIP 레지스터
'이론 > buffer overflow_달고나bof' 카테고리의 다른 글
프로그램 실행 시 Segment 에서는 (0) | 2022.07.17 |
---|---|
8086 Memory Architecture (0) | 2022.03.29 |