제 7 장 링커와 로더 설계.

Slides:



Advertisements
Similar presentations
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
Advertisements

독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
사 진 성명 학교 휴대폰 전공 / 학년 / 학번 ●교내 외 활동내역 활동명활동기간주요내용 ●공모전 수상경력 년 월 일년 월 일내 용내 용시행처 재학 / 휴학 본 주소 ※ 공모전 수상경력은 참고사항일 뿐 평가에 반영되지 않습니다 수상내용 생년월일 SNS/ 미니홈피.
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
교회 소식.
2016년도 제2차 서비스 자격시험 고사장 안내 시험종목: 병원서비스코디네이터, 서비스경영컨설턴트,
1. 던전 디자인 개요_1 1. ‘던전’ 룬스톤은 던전 한 층에도 여러 개가 존재하며, 각 룬스톤 마다 영향을 미치는 범위가 설정되어 있다. 룬스톤이 영향을 주는 범위에 일정시간 사용자가 위치해 있게 되면 사용자 캐릭터는 ‘유령화’ 되어 버리기 때문에, 사용자는.
Shellcode 작성 김영성.
CRT 뽀개기 신영진.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
9장 가로채기(Interrupt) Slide 1 (of 15).
4장 어셈블리 프로그램 작성의 기본 어셈블러 어셈블리 언어 요소 예제 프로그램 데이터 정의
고교평준화의 득과 실 김영주 이지영 최윤영.
제4장 어셈블리어.
제4장 어셈블리어.
Lecture #12 인터럽트 Interrupt.
인터럽트 Interrupt 시스템 프로그래밍 - Lecture #8 신라대학교 컴퓨터공학과 시스템프로그래밍.
Lecture #5 어셈블리어 (2) 매크로 어셈블리어 시스템프로그래밍.
Lecture #7 어셈블리어 (4) 매크로 어셈블리어 시스템프로그래밍.
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
제 1 장 마이크로프로세서의 기본동작.
Lecture # 어셈블러 설계.
3장 MPU 내부구조 Slide 1 (of 28).
10장 객체-지향 프로그래밍 II ©창병모.
C언어: 배열 (Arrays).
Part 08 함수 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
어셈블리 문법 보강 4월 10일.
화면(UI) 기반 도메인모델 작성 2014년 8월.
+ 가상 메모리 -> 물리 메모리 Selector Offset DIR Page Segmetatation
Lecture #8 어셈블리어 (5) 매크로 어셈블리어 시스템프로그래밍.
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
Computer Architecture
제 5장 매크로 프로세서 설계.
제 5장 매크로 프로세서 설계.
어셈블리어 및 실습 금 1,2 (314) / 금 3,4 (307) RTDCS 이 종 태
Chapter 06 명령어와 번지지정 방식.
제 6 장 8086 어셈블러 설계.
제 6장 8086 어셈블러 설계.
7. 자극과 반응 7-2. 신경계 3. 여러 가지 반응.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
BOF of 2.6 Kernel ! 박수완 / Su-Wan, PARK [ L1nkC] 숭실대학교 정보보호동아리 ACK
제3장 8086 프로세서의 내부구조.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
5주차: Functions in C.
명령어 구조 컴퓨터 하드웨어의 구성 프로그램 명령어 프로그램 실행 동작.
명품 C++ 프로그래밍 1장. C++ 시작.
Buffer Overflow
제 장 학습내용 C 언어에서의 인터럽트 사용 레지스터를 위한 자료구조 인터럽트를 수행하기 위한 명령어
어셈블리어 (2) 매크로 어셈블리어 시스템 프로그래밍 - Lecture #4
Lecture #9 매크로 프로세서 설계 & 구현.
Python.
제 2 장 어셈블러(Assemblers) 2.1 기본 어셈블러 기능 단순 SIC 어셈블러
[INA470] Java Programming Youn-Hee Han
○ 직 무 기 술 서 드라이빙센터 매니저 1. 주요 업무 2. 자격요건 직 무 드라이빙센터 매니저 근무형태
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
<정 트리오> <멤버> 정명화<첼로> 첫째 딸 정경화<바이올린>둘째 딸
수학8가 대한 108~110 쪽 Ⅴ. 부등식 2. 일차부등식 §1.일차부등식의 풀이(5/10) 일차부등식의 풀이.
직장생활 예절 ① - 인사 1.내가 먼저 [인사의 5point] 2.상대방의 눈을 보고 미소지으며 3.상대방에 맞춰서
대한민국-스웨덴 수교 60주년 기념 행사 주 스웨덴 대한민국 대사관 (토)
세계영화사 입문 3강 소련영화의 혁명 소비에트 몽타주.
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
청소년 댄스 경연대회 제35회 문화체육관광부장관大賞 전국레크리에이션대회
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
제 5 장 82C55를 이용한 포트 출력.
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
Assembly 05 방호남 07 반지훈 09 박상욱.
Presentation transcript:

제 7 장 링커와 로더 설계

제 7 장 학습내용 링커와 로더의 개념과 역할 부프로그램의 호출과 외부기호 참조 재배치와 적재 개요 로더의 종류와 형태 링커와 로더가 필요로하는 정보 원시프로그램과 번역결과 절대상수와 재배치상수 링크를 위한 어셈블링 외부기호와 재배치 링크의 형태 패스1과 패스2의 수행과정 패스1과 패스2의 자료구조 기억장소에 적재된 후의 형태 패스1과 패스2의 알고리즘

링커와 로더의 역할 링킹: 모듈들을 연결 주기억장치 할당: 적재될 기억공간의 확보 재배치: 기호들을 재배치 적재: 재배치가 완료된 모듈을 적재

부프로그램의 호출 모듈 A 외부기호로 분기 모듈 B CALL B 복귀

외부기호의 참조 모듈 A 외부기호 참조 모듈 B LA1 DW LB1 LB1 DW 5

주기억장치의 할당 로더의 요구에 의해 운영체제가 수행 운영체제 안에는 기억장치 관리 모듈 존재 전체할당: 전체 프로그램을 전부 기억장치에 적재한 후 프로그램을 실행 – 소규모 프로그램 부분할당: 프로그램의 일부분만을 기억장치에 적재한 후 실행을 시작하고, 실행도중에 필요한 부분을 기억장치로 읽어 들이는 방법 – 대규모 프로그램

재배치 및 적재 번역기가 번역을 수행한 후 재배치가능 코드가 생성됨 – 기준점으로부터의 상대주소 이용 재배치 작업은 각 명령어의 주소부분에 행해짐 컴파일러가 재배치 정보 생성 기호표 또는 재배치비트를 이용하는 방법

로더의 종류와 형태 컴파일 즉시로더 절대로더 재배치로더 링킹로더 동적로더

컴파일 즉시로더의 개념 가장 간단한 방법 로더의 기능은 거의 어셈블러가 수행 로더의 기능은 단순히 실행을 제어 어셈블러가 적재  기억장소 낭비 목적모듈이 보조기억장치에 저장 안됨 어셈블러의 재번역이 요구됨 서로 다른 언어로 작성된 모듈들끼리 연결불가 모든 모듈이 한꺼번에 번역  모듈화가 어려움

절대로더의 개념 출력결과는 보조기억장치에 저장 로더는 번역시 정해진 위치에 적재만 수행 프로그래머가 어셈블러에게 적재주소 지정 각 모듈의 적재주소 지정

절대로더를 위한 프로그램의 형태 주프로그램 MAIN SEGMENT ASSUME CS : MAIN... ORG 100;이후의 문장을 100번지부터 적재 ... CALL 400 MAIN ENDS END

절대로더를 위한 프로그램의 형태 부프로그램 MAIN SEGMENT ASSUME CS : MAIN... ORG 400;이후의 문장을 400번지부터 적재 ... RET

절대로더의 기능 링크: 프로그래머 기억장소 할당번지 지정: 프로그래머 재배치: 어셈블러 (ORG 지시어) 적재: 절대로더

재배치로더의 개념 적재모듈을 주기억장치에 적재 상대주소를 절대주소로 변환 외부기호의 참조 * 모듈의 이름기호 참조 * 외부모듈에서 정의된 기호 참조

3개의 외부모듈 정의 모듈 M1 0 A SEGMENT ... ... ... CALL B 20 LA1 DW LB1 29 (상대주소) (기호) (명령어) 0 A SEGMENT ... ... ... CALL B 20 LA1 DW LB1 29

3개의 외부모듈 정의 모듈 M2 0 B SEGMENT ... ... 10 LB1 DW 5 19 세그먼트 B: 20바이트 (상대주소) (기호) (명령어) 0 B SEGMENT ... ... 10 LB1 DW 5 19

3개의 외부모듈 정의 모듈 M3 0 C SEGMENT ... ... 9 세그먼트 C: 10바이트 (상대주소) (기호) (명령어) 0 C SEGMENT ... ... 9

3개 모듈의 링크와 재배치 A 상대주소 절대주소 A A B B B C C C 링커 5 5 . 9 적재 모듈 기억 장치 . 20 29 상대주소 절대주소 CALL B LA1 DW LB1 . 29 30 40 49 50 59 A 500 . 529 530 540 549 550 559 A CALL 30 40 CALL 530 540 B B B . 10 19 5 5 LB1 DW 5 C C C . 9 적재 모듈 기억 장치 링커 재배치로더

Segment Definition, Local Definition, External Reference 각 모듈의 기호표 모듈 M1의 기호표 기호 A B LA1 LB1 분류 SD LD ER 상대주소 - 20 길이 30 - Segment Definition, Local Definition, External Reference

각 모듈의 기호표 모듈 M2의 기호표 기호 B LB1 분류 SD LD 상대주소 10 길이 20 -

각 모듈의 기호표 모듈 M3의 기호표 기호 C 분류 SD 상대주소 길이 10

링킹로더의 개념 링킹로더 = 링커 + 로더 재배치링크 및 적재를 한꺼번에 수행 두 단계의 패스로 구성 (패스1과 패스2로 구성)

링킹로더의 패스1과 패스2 패스1의 기능 * 모듈에 기억장소 할당 * 외부기호들의 주소 확정 * 외부기호표 작성 패스2의 기능 * 모든 상대주소를 절대주소로 변환 * 외부기호표 참조 후 적재

링킹로더의 수행과정 . 29 기억장소 A 500 530 550 A . 19 링킹 로더 B B C . 9 C

링킹로더의 역할 링크: 링킹로더 기억장소 할당: 운영체제 재배치: 링킹로더 적재: 링킹로더

동적로더의 개념 재배치로더와 링킹로더의 단점: 한 프로그램의 실행을 위해서는 관련된 모든 서브루틴(세그먼트)들을 적재 기억장소의 효율적 활용 서브루틴들의 상호 호출관계 파악 오버레이 구조를 활용

동적적재시 서브루틴의 호출관계 A (20K) B (20K) C (30K) D (10K) E (20K) 70K

동적적재시 기억장소의 변화 70K 60K 40K 50K A (20K) A (20K) A (20K) A (20K) B (20K) E (20K) D (10K) E (20K) C (30K) E (20K)

링커와 로더가 필요로 하는 정보 목적코드 형태로 번역된 모듈들 모듈의 길이 외부기호와 내부기호 재배치할 기호들과 수정방법

원시프로그램의 형태 EXTRN으로 선언된 기호 * 외부에서 정의되고 내부에서 이용 PUBLIC으로 선언된 기호 * 내부에서 정의되고 외부에서 이용

외부기호 PUBLIC symbol[, 반복] EXTRN name:type[, 반복] name : 데이터 세그먼트 내의 레이블 type : BYTE, WORD, DWORD.. name : procedure 이름 type : NEAR, FAR name : EQU, = 으로 정의된 상수 type : ABS

MAIN.ASM 모듈의 예 MAIN.ASM MAIN SEGMENT ASSUME CS:MAIN, DS:MAIN EXTRN ADD2:NEAR, TABLE:WORD PUBLIC DATA3 ADD1: MOV AX, CS MOV DS, AX MOV AX, DATA1 ADD AX, DATA2

MAIN.ASM 모듈의 예 MOV DATA3, AX CALL ADD2 MOV AH, 4CH INT 21H DATA1 DW ADD2 DATA2 DW TABLE DATA3 DW ? MAIN ENDS END

SUBST.ASM 모듈의 예 SUBST.ASM MAIN SEGMENT ASSUME CS:MAIN, DS:MAIN EXTRN DATA3:WORD PUBLIC ADD2, TABLE ADD2: PROC NEAR PUSH AX MOV AX, TABLE ADD AX, POINT

SUBST.ASM 모듈의 예 MOV SUM, AX POP AX RET ADD2 ENDP TABLE DW 100 POINT DW DATA3 SUM DW ? MAIN ENDS END

번역된 프로그램의 형태 MAIN SEGMENT ASSUME CS:MAIN,DS:MAIN; EXTRN SUM:WORD; MOV AX,CS MOV DX,AX MOV AX,100H ADD AX,TABLE MOV SAVE,AX MOV BX,OFFSET POINT MOV AH,4CH INT 21H TABLE DW 1, 7 ; POINT DW SAVE-RESULT RESULT DW ? SAVE DW ? ASUM DW SUM MAIN ENDS END 상대 재배치 주소 비트 0000 00 MOV AX,CS 0002 00 MOV DS,AX 0004 00 MOV AX,0100 0007 01 ADD AX, [0015] 000B 10 MOV [001D], AX 000E 01 MOV BX,0019 0011 00 MOV AH,4C 0013 00 INT 21 0015 00 0001 0017 00 0007 0019 00 0002 001B 00 0000 001D 00 0000 001F 10 0000

절대상수와 재배치상수 절대상수 * 같은 모듈내의 기호끼리 연산결과 * SAVE - RESULT = 02 * 어셈블러가 계산 * 기호의 값이 결정된 후 연산결과 결정 * SUM - 5 * 재배치비트 설정

링크를 위한 어셈블링 번역된 프로그램: 목적코드로 된 모듈 모듈의 길이: 외부기호표 외부기호: 외부기호표 내부기호: 외부기호표 재배치주소와 방법: 재배치 링크표

원시프로그램과 번역된 프로그램 MAIN.ASM 모듈의 예 MAIN SEGMENT ASSUME CS:MAIN,DS:MAIN; EXTRN B:PROC,B1:WORD PUBLIC A1; A: MOV AX,CS MOV DS,AX MOV AX,A2 ADD AX,A2+2 ADD AX,A2+4 CALL B MOV AH,4CH INT 21H 상대 재배치 주소 비트 0000 00 MOV AX,CS 0002 00 MOV DS,AX 0004 01 MOV AX,[0018] 0007 01 ADD AX,[001A] 000B 01 ADD AX,[001C] 000F 10 CALL 0000 0012 00 MOV AH,4C 0014 00 INT 21

원시프로그램과 번역된 프로그램 MAIN.ASM 모듈의 예 상대 재배치 주소 비트 0016 10 0000 0018 10 0020 상대 재배치 주소 비트 0016 10 0000 0018 10 0020 001A 00 0002 001C 10 0005 A1 DW B A2 DW A1+10 DW A2-A1 DW B1+5 MAIN ENDS END

원시프로그램과 번역된 프로그램 SUBST.ASM 모듈의 예 MAIN SEGMENT ASSUME CS:MAIN,DS:MAIN; EXTRN A1:WORD PUBLIC B, B1; B PROC PUSH AX PUSH BX MOV AX, CS MOV DX, AX MOV AX, B1 ADD AX, B2+2 MOV B2, AX 상대 재배치 주소 비트 0000 00 PUSH AX 0001 00 PUSH BX 0002 00 MOV AX,CS 0004 00 MOV DS,AX 0006 01 MOV AX,[0013] 0009 01 ADD AX,[0017] 000D 10 MOV [0015],AX

원시프로그램과 번역된 프로그램 SUBST.ASM 모듈의 예 상대 재배치 주소 비트 0010 00 POP BX 주소 비트 0010 00 POP BX 0011 00 POP AX 0012 00 RET 0013 00 000A 0015 00 0017 10 0013 POP BX POP AX RET B ENDP; B1 DW 10 B2 DW ? DW B1-A1 MAIN ENDS END

번역된 프로그램의 분석 MAIN의 상대주소 0018H의 경우 (A2 DW A1+10) * A1 = (A1 - A) + A

번역된 프로그램의 분석 MAIN의 상대주소 001AH의 경우 (DW A2-A1) * A2 - A1 = 02H * 재배치비트는 00으로 됨 SUBST의 상대주소 0009H의 경우 (ADD AX, B2+2) * B2 = (B2 - B) + B = 15H + B * B2 + 2 = (B2 - B) + B + 2 = 15H + B + 2 = 17H + B

외부기호표의 형태와 예 기호 MAIN A A1 A2 B B1 분류 SD LD ER 상대주소 0000 0016 0018 - 길이

재배치 링크의 형태와 예 모듈 MAIN의 재배치 링크표 상대주소 + 또는 - 기호 0004 A + 0007 000B 000F 0016 0018 001C 기호 A B B1 + 또는 - + 상대주소 0004H에 A의 값을 더하라(+)

재배치 링크의 형태와 예 기호 MAIN B B1 B2 A1 분류 SD LD ER 상대주소 0000 0013 0015 - 길이 모듈 SUBST의 외부기호표 기호 MAIN B B1 B2 A1 분류 SD LD ER 상대주소 0000 0013 0015 - 길이 19 13 -

재배치 링크의 형태와 예 상대주소 + 또는 - 기호 0006 B + 0009 000D 0017 - A1 모듈 SUBST의 재배치 링크표 상대주소 0006 0009 000D 0017 기호 B A1 + 또는 - + -

링크 및 재배치의 과정 패스1의 수행과정 * 단순링크 * 총괄외부기호표 작성 * 총괄재배치링크표 작성 패스2의 수행과정 * 기호값의 수정위치와 방법 결정 * 필요한 기호의 값 탐색 * 재배치비트 참고 후 재배치

패스1이 만든 단순링크된 모듈 MAIN.ASM 0000 00 MOV AX, CS 0002 00 MOV DS, AX 상대주소 재배치 비트 MAIN.ASM 0000 00 MOV AX, CS 0002 00 MOV DS, AX 0004 01 MOV AX, [0018] 0007 01 ADD AX, [001A] 000B 01 ADD AX, [001C] 000F 10 CALL 0000

패스1이 만든 단순링크된 모듈 0012 00 MOV AH, 4C 0014 00 INT 21 0016 10 0000 상대주소 재배치 비트 0012 00 MOV AH, 4C 0014 00 INT 21 0016 10 0000 0018 10 0020 001A 00 0002 001C 10 0005

패스1이 만든 단순링크된 모듈 SUBST.ASM 001E 00 PUSH AX 001F 00 PUSH BX 상대주소 재배치 비트 SUBST.ASM 001E 00 PUSH AX 001F 00 PUSH BX 0020 00 MOV AX, CS 0022 00 MOV DS, AX 0024 01 MOV AX, [0013]

패스1이 만든 단순링크된 모듈 0027 01 ADD AX, [0017] 002B 10 MOV [0015], AX 상대주소 재배치 비트 0027 01 ADD AX, [0017] 002B 10 MOV [0015], AX 002E 00 POP BX 002F 00 POP AX 0030 00 RET 0031 00 000A 0033 00 - 0035 10 0013

패스1이 만든 총괄외부기호표 형태 기호 A A1 A2 B B1 B2 주소값 0000 0016 0018 001E 0031 0033 설명 (00H + 01EH) (13H + 01EH) (15H + 01EH)

패스1이 만든 총괄재배치링크표 주소값 0004 0007 000B 000F 0016 0018 001C 기호 A B B1 + 또는 - +

패스1이 만든 총괄재배치링크표 B + 0024(06H + 01EH) 0027(09H + 01EH) A1 + - 0024(06H + 01EH) 0027(09H + 01EH) 002B(0DH + 01EH) 0035(17H + 01EH)

패스2가 만든 적재모듈 MAIN.ASM 0000 00 - 0002 00 - 0004 01 MOV AX, [0018] 상대주소 재배치 비트 MAIN.ASM 0000 00 - 0002 00 - 0004 01 MOV AX, [0018] 0007 01 ADD AX, [001A] 000B 01 ADD AX, [001C] 000F 10 CALL 001E

패스2가 만든 적재모듈 상대주소 재배치 비트 0012 00 - 0014 00 - 0016 10 001E 0018 10 0020 001A 00 0002 001C 10 0036

패스2가 만든 적재모듈 SUBST.ASM 001E 00 - 001F 00 - 0020 00 - 0022 00 - 상대주소 재배치 비트 SUBST.ASM 001E 00 - 001F 00 - 0020 00 - 0022 00 - 0024 01 MOV AX, [0031] 0027 01 ADD AX, [0035]

패스2가 만든 적재모듈 002B 10 MOV [0033], AX 002E 00 - 002F 00 - 0030 00 - 상대주소 재배치 비트 002B 10 MOV [0033], AX 002E 00 - 002F 00 - 0030 00 - 0031 00 000A 0033 00 - 0035 00 001B ;B1-A1

링크재배치상수와 적재재배치상수 링크재배치상수 모듈들을 링크하면 값이 결정 예) B1 - A1 적재재배치상수 적재될 때 값이 결정

기억장소에 적재된 후의 모양 주소 기억장치 0064 0066 0068 006B 006F 0073 8C C8 MOV AX, CS 기억장소의 할당이 100(64H) 번지부터 시작 주소 기억장치 0064 0066 0068 006B 006F 0073 8C C8 MOV AX, CS 8E D8 MOV DS, AX A1 OO7C MOV AX, [007C] 03 06 007E ADD AX, [007E] 03 06 0080 ADD AX, [0080] E8 7200 CALL 0082

기억장소에 적재된 후의 모양 주소 기억장치 0076 0078 007A 007C 007E 0080 0082 0083 B4 4C MOV AH, 4C CD 21 INT 21 0082 0082 0084 0084 0002 0002 009A 009A 50 PUSH AX 53 PUSH BX

기억장소에 적재된 후의 모양 주소 기억장치 0084 0086 0088 008B 008F 0092 8C C8 MOV AX, CS 8E D8 MOV DS, AX A1 0095 MOV AX, [0095] 03 06 0099 ADD AX, [0099] A3 0097 MOV [0097], AX 5B POP BX

기억장소에 적재된 후의 모양 주소 기억장치 0093 0094 0095 0097 0099 58 POP AX C3 RET 000A 000A 0000 0000 001B 001B

패스1과 패스2의 데이터베이스 적재 모듈 패스2 패스1 단순링크된 번역된 모듈 세그먼트들 총괄외부 기호표 외부 기호표 총괄재배치 링크표 재배치 링크표 패스1 패스2

패스1의 알고리즘 입력 시 작 세그먼트 배열순서 결정 세그먼트들을 배열순서에 따라 연결 기호가 중복되지 않도록 기호표들을 단순연결 재배치링크표 들을 단순연결

패스1의 알고리즘 상대주소변경 (앞에 배열된 세그먼트의 길이를 더한다) 기호의 상대주소변경 상대주소변경 단순링크된 모듈 총괄외부 기호표 총괄재배치 링크표 패스1끝

패스2의 알고리즘 패스2 시작 총괄재배치링크표에서 한 줄을 읽음 예 총괄재배치링크표 끝? 패스2 끝 아니오 읽은 줄의 내용을 다음과 같이 변수에 치환 addr = 상대주소 symbol = 기호 sign = + 또는 -

패스2의 알고리즘 실패 오류 성공 실패 오류 성공 재배치비트가 가리키는 데이터에 Value를 sign에 따라 더함 총괄외부기호표에서 기호=symbol인 행을 탐색 오류 성공 탐색된 기호의 상대주소를 변수에 치환 Value=상대주소 실패 단순링크 모듈에서 상대주소=addr 탐색 오류 성공 재배치비트가 가리키는 데이터에 Value를 sign에 따라 더함

제 7 장 요약 링커와 로더의 역할 로더의 종류 링커와 로더가 필요한 정보 이해 번역된 프로그램 형태 이해 절대상수와 재배치상수 이해 재배치 링크와 형태 이해 패스1과 패스2의 수행과정 이해 패스1과 패스2의 자료구조 이해 기억장소에 적재된 상태 이해 패스1과 패스2의 알고리즘 이해