이론 3

프로그램 실행 시 Segment 에서는

프로그램 실행 -> 프로세스가 메모리에 적재 -> 메모리와 레지스터 동작 위 과정에 대해 알아보기 위해 간단한 프로그램 동작 분석 1 2 3 4 5 6 7 8 9 10 //simple.c void function(int a, int b, int c){ char buffer1[15]; char buffer2[10]; } void main(){ function(1,2,3); } Colored by Color Scripter cs gcc -S -o simple.asm simple.c : 위 c 프로그램을 어셈블리 코드로 컴파일 gcc -o simple simple.c : 위 c 프로그램을 실행파일로 컴파일 gdb로 열어 어셈블리어로 프로그램 분석 ESP는 프로그램 처음 시작 시 스택 맨 꼭대기를 가리키고 있음..

8086 CPU 레지스터 구조

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 ..

8086 Memory Architecture

메모리 주소 할당 범위 0~2^32-1 64bit 시스템(최근 pc, 서버급) 〃 : 64bit -> 메모리 주소 할당 범위 0~2^64-1 OS는 하나의 프로세스 실행시키면 프로세스를 segment 단위로 묶어 가용 메모리 영역에 저장 ↓ multi-tasking memory에 여러개의 프로세스가 저장되어 병렬적 작업 수행 segment 하나의 프로세스를 묶은 것 실행 시점에 실제 메모리의 어느 위치에 저장될 지 결정됨 시스템에는 최대 16,383개 sement 생성 가능 하나의 segment 최대 크기 : 2^32byte code segment : instructions 들어 있음 segment에서는 logical address 사용 logical address는 physical address 와 매..