21
Loader 1 5.1.5 โโโโโโโโโโโโโโโโ โโโโโโโโโโ (Relocating Loaders) • หหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหห หหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหห หหหหหหหหหหหห (Reassembling) • หหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหห หหหหหหหหหหหหหหหหหห (Allocation) หหห หหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหห Linkage) หหหหหหหหหหหหหหหหหหหหหหหหหหหหหห หหหหหหหห หหหหหหหหหหหหหหหหหหหหหหหหหห (Relocating Loaders) • หหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหหห Relocating Loaders หหห หหหหหหหหหหหหห Binary Symbolic Subroutine (BSS)

5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

  • Upload
    ula

  • View
    36

  • Download
    7

Embed Size (px)

DESCRIPTION

5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders). หลีกเลี่ยงการแปลภาษาแอสเซมบลี้ของโปรแกรมย่อยทั้งหมดให้เป็นภาษาเครื่องซ้ำอีกครั้ง (Reassembling) - PowerPoint PPT Presentation

Citation preview

Page 1: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 1

515. . โหลดเดอร์แบบย้ าย้โปร์แกร์มได

(Relocating Loaders)• หลี�กเลี��ยงการแปลีภาษาแอสเซมบลี��ของโปรแกรมย�อย

ทั้��งหมดให�เป�นภาษาเคร �องซ!�าอ�กคร��ง (Reassembling)

• แทั้นทั้��จะให�โปรแกรมเมอร%ทั้!าหน�าทั้��หาทั้��ว่�างในหน�ว่ยคว่ามจ!า (Allocation) แลีะ เชื่ �อมโยงแอดเดรสระหว่�างโปรแกรมย�อย Linkage) เราก(จะใชื่�โหลีดเดอร%ว่)ธี�ใหม�ทั้��เร�ยกว่�า โหลีดเดอร%แบบย�ายโปรแกรมได� (Relocating Loaders)

• ตั�ว่อย�างของโหลีดเดอร%ทั้��ใชื่�หลี�กการของ Relocating Loaders ค อ โหลีดเดอร%ชื่ �อ Binary Symbolic Subroutine (BSS)

Page 2: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 2

โหลีดเดอร% BSS

• ยอมให�ม� Segments ของโปรแกรมย�อย (Procedure segments) จ!านว่นมาก

• แตั�ยอมให�ม� Segments ของข�อม-ลี (Data segments) เพี�ยงอ�นเด�ยว่ (ข�อม-ลีจะถู-กโปรแกรมย�อยแตั�ลีะตั�ว่ใชื่� Segment น��ร �ว่มก�น)

• ตั�ว่แอสเซมเบลีอร%จะทั้!าการแปลี Segment โปรแกรมย�อยแตั�ลีะ Segment อย�างอ)สระ แลีะส�งตั�อให�ก�บตั�ว่โหลีดเดอร%

Page 3: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 3

Transfer vector, Length แลีะ relocation bit

• Transfer vector ค�าทั้��ใชื่�อ�างอ)งส�ญลี�กษณ์%ภายนอกแตั�ลีะตั�ว่ ใชื่�ในการแก�ป2ญหาของ Linking

• Length คว่ามยาว่ของโปรแกรม ใชื่�แก�ป2ญหาการจ�ดสรรหน�ว่ยคว่ามจ!า

• relocation bit ใชื่�ในการแก�ป2ญหาของ Relocation – 00 Fixed – 01 Relocate ได�

Page 4: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 4

Source program

MAIN STARTEXTRN SQRTEXTRN ERRST 14,SAVE Save return

addressL 1,=F’9’ Load test

valueBAL 14,SQRT Call SQRTC 1,=F’3’ Compare

answerBNE ERR Transfer to

ERRL 14,SAVE Get return

AddressBR 14 Return to

CallerSAVE DS F Temp. loc.

END

Program length = 48 bytes Transfer vector = 8 byteRel.Addr. Relocation Object code

0 00 ‘SQRT’ 4 00 ‘ERRb’ 8 01 ST 14,36

12 01 L 1,40

16 01 BAL 14,020 01 C 1,44

24 01 BC 7,4

28 01 L 14,36

32 00 BCR 15,1434 00 (Skipped for alignment)36 00 (Temp location)40 00 944 00 3

Page 5: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 5

Absolute Relative address address

: : : : : : 400 0 BC 15,448 404 4 BC 15,526 408 8 ST 14,436 412 12 L 1,440 416 16 BAL 14,400 Length = 48 bytes 420 20 C 1,444 424 24 BC 7,404 428 28 L 4,436 432 32 BCR 15,14 436 36 (Temp loc) 440 40 9 444 44 3 : : SQRT Length = 78 bytes : 526 ERR

1

Page 6: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 6

ข�อเส�ยของ BSS• Transfer vector linkage ม�ประโยชื่น%แค�การ Transfer

เพี�ยงอย�างเด�ยว่ ม�นไม�เอ �ออ!านว่ยตั�อการ Loading หร อการเก(บข�อม-ลีภายนอก (ข�อม-ลีทั้��อย-�อ�ก Segment หน3�ง)

• Transfer vector เพี)�มขนาดของโปรแกรมภาษาเคร �องในหน�ว่ยคว่ามจ!า

• ตั�ว่โหลีดเดอร% BSS จะด�ก�บ Segments ทั้��เป�นค!าส��ง แตั�ไม�สะดว่กก�บการเข�าถู3ง Segment ทั้��เป�นข�อม-ลีทั้��ใชื่�ร�ว่มก�น (แก�ไขได�โดยยอมให�ม� Segment ข�อม-ลีทั้��ใชื่�ร�ว่มก�นได� เพี�ยง Segment เด�ยว่ ซ3�งเร�ยกว่�า COMMON)

Page 7: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 7

5.1.6 โหลดเดอร์แบบล�งค์โดย้ตร์ง - (Direct Linking Loaders)

• เป�นโหลีดเดอร%ทั้��ด�ทั้��ส4ด • ยอมให�ม� Segments ค!าส��งได�หลีาย Segments

แลีะยอมให�ม� Segments ข�อม-ลีได�หลีาย Segments แลีะยอมให�ม�การ Reference ค!าส��งแลีะข�อม-ลีทั้��อย-�ใน Segment อ �นๆ

Page 8: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 8

ข�อม-ลีของแตั�ลีะ Segment

• คว่ามยาว่ (Length) ของ Segment• รายการของส�ญลี�กษณ์%ทั้��งหมดใน Segment ซ3�งอาจจะถู-ก

อ�างใชื่� (Referenced) โดย Segment อ �น แลีะ Relative location ภายใน Segment

• รายการของส�ญลี�กษณ์%ทั้��งหมดทั้��ไม�ได�ถู-กก!าหนดหร อประกาศใน Segment แตั�ม�การใชื่�ส�ญลี�กษณ์%น��น

• ข�อม-ลีเก��ยว่ก�บ Address constant ว่�าจะว่างทั้��ตั!าแหน�งไหนใน Segment แลีะรายลีะเอ�ยดว่�าเราจะแก�ไขข�อม-ลีอย�างไร

• ภาษาเคร �องทั้��ได�จากการแปลีงมาจากภาษาแอสเซมบลี�� รว่มทั้��ง Relative address ของม�น

Page 9: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 9

ข�อม-ลีใน Object ทั้��เก(บส�ญลี�กษณ์%ภายนอก

• ESD (External Symbol Dictionary) บรรจ4ข�อม-ลีเก��ยว่ก�บ ส�ญลี�กษณ์%ทั้��งหมดทั้��ถู-กก!าหนดในโปรแกรมน�� แตั�อาจถู-กอ�างถู3ง (Referred) จากทั้��อ �น

• TXT (Text) รห�สภาษาเคร �องทั้��แปลีงมาจาก source program

• RLD (Relocation and Linkage Directory) บรรจ4 รห�สภาษาเคร �องทั้��แปลีงมาจาก Source program บ�ตัรทั้��เก(บแอดเดรสทั้��เปลี��ยนตั!าแหน�ง แลีะใชื่�ในการลี)งค%

• END แสดงการจบของ Object

Page 10: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 10

ProgramCardNo. 1. JOHN START 2. ENTRY RESULT 3. EXTRN SUM 4. BALR 12,0 5. USING *,12 6. ST 14,SAVE 7. L 1,POINTER 8. L 15,ASUM 9. BALR 14,1510. ST 1,RESULT11. L 14,SAVE12. BR 14

13. TABLE DC F’1,7,9,10,3’

14. POINTER DC A(TABLE)15. RESULT DS F16. SAVE DS F17. ASUM DC A(SUM)

END

TranslationRel.loc.

0 BALR 12,0

2 ST 14,56(0,12) 6 L 1,48(0,12)10 L 15,60(0,12)14 BALR 14,1516 ST 1,52(0,12)20 L 14,56(0,12)24 BCR 15,1426 ---28 132 736 940 1044 348 2852 ---56 ---60 ?64

Page 11: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 11

ตั�ว่อย�างข�อม-ลี ESD TXT RLD แลีะ END ของ โหลีดเดอร%แบบลี)งค%

โดยตัรง

Page 12: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 12

ProgramCardNo. 1. JOHN START 2. ENTRY RESULT 3. EXTRN SUM 4. BALR 12,0 5. USING *,12 6. ST 14,SAVE 7. L 1,POINTER 8. L 15,ASUM 9. BALR 14,1510. ST 1,RESULT11. L 14,SAVE12. BR 14

13. TABLE DC F’1,7,9,10,3’

14. POINTERDC A(TABLE)15. RESULT DS F16. SAVE DS F17. ASUM DC A(SUM)

END

TranslationRel.loc.

0 BALR 12,0

2 ST 14,56(0,12) 6 L 1,48(0,12)10 L 15,60(0,12)14 BALR 14,1516 ST 1,52(0,12)20 L 14,56(0,12)24 BCR 15,1426 ---28 132 736 940 1044 348 2852 ---56 ---60 ?64

Page 13: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 13

ESD cards Reference Relative No. Symbol Type location Length 1 JOHN SD 0 64 2 RESULT LD 52 -- 3 SUM ER -- -- TXT CARDS Reference Relative Object No. location Code 4 0 BALR 12,0 6 2 ST 14,54(0,12) 7 6 L 1,46(0,12) 8 10 L 15,58(0,12) 9 14 BALR 14,15 10 16 ST 1,50(0,12) 11 20 L 14,54(0,12) 12 24 BCR 15,14 13 28 1 13 32 7 13 36 9 13 40 10 13 44 3 14 48 28 17 60 0

RLD cards Reference Relative No. Symbol Flag Length location 14 JOHN + 4 48 17 SUM + 4 60

Page 14: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 14

บ�ตัร ESD บรรจ4ข�อม-ลีเหลี�าน��• SD ซ3�งหมายถู3งส�ญลี�กษณ์%ทั้��ถู-กก!าหนดให�เป�น

Segment (Segment definition)

• LD เป�นการก!าหนดภายใน Segment ของม�น (Local definition)

• ER (External reference) ใชื่�ในการอ�างอ)งภายนอก

Page 15: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 15

บ�ตัร RLD บรรจ4ข�อม-ลีเหลี�าน��• ตั!าแหน�งตั�างๆ ของตั�ว่คงทั้�� (Constant) แตั�ลีะ

ตั�ว่ ทั้��ตั�องการการเปลี��ยนแปลีงอ�นเน �องมาจากการเคลี �อนย�ายโปรแกรม Relocation

• ม�นตั�องถู-กเปลี��ยนโดยอะไร• การทั้!างาน (Operation) ทั้��จะตั�องถู-กจ�ดการ

Page 16: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 16

ESDโปรแกรมย�อย A TXT

RLDEND

ESDโปรแกรมย�อย B TXT

RLDEND

ESDโปรแกรมย�อย C TXT

RLDEND

การ์เร์�ย้งล�าด�บข้ อม�ลในโปร์แกร์มย้�อย้

Page 17: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 17

Source card Relative reference address Sample program (source deck) 1 0 PG1 START 2 ENTRY PG1ENT1, PG1ENT2 3 EXTRN PG2ENT1, PG2 4 20 PG1ENT1 ----- 5 30 PG1ENT2 ----- 6 40 DC A(PG1ENT1) 7 44 DC A(PG1ENT2 + 15) 8 48 DC A(PG1ENT2 + PG1ENT1 – 3) 9 52 DC A(PG2) 10 56 DC A(PG2ENT1 + PG2 + PG1ENT1 + 4) 11 END 12 0 PG2 START 13 ENTRY PG2ENT1 14 EXTRN PG1ENT1, PG1ENT2 15 16 PG2ENT1 : 16 24 DC A(PG1ENT1) 17 28 DC A(PG1ENT2 + 15) 18 32 DC A(PG1ENT2 - PG1ENT1 – 3) 19 END

ร-ปทั้��5.12 ตั�ว่อย�างโปรแกรมย�อยPG1 แลีะ PG2

ESD Relative Source card reference Name Type ID address Length 1 PG1 SD 01 0 60 2 PG1ENT1 LD --- 20 --- 2 PG1ENT2 LD --- 30 --- 3 PG2 ER 02 --- ---

TXT (only the interesting ones, i.e. those involving address constants)

Source card reference Relative address Contents Comments 6 40-43 20 7 44-47 45 = 30 + 15 8 48-51 7 = 30 – 20 -3 9 52-55 0 unknown to PG1 10 56-59 -16 = -20 + 4

RLD Source card reference ESD ID Length (bytes) + OR - Relative address 6 01 4 + 40 7 01 4 + 44 9 02 4 + 52 10 03 4 + 56 10 03 4 + 56 10 01 4 - 56

ร-ปทั้��5.13 Object ของโปรแกรมPG1

Page 18: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 18

5.1.7 โหลดเดอร์ชน�ดอ!"นๆ

ชน�ด – Binders – ชน�ด Overlays

Page 19: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 19

Binder

• ทั้!าหน�าทั้��เหม อนก�บ Direct-Linking Loader ทั้��ทั้!าหน�าทั้�� Binding โปรแกรมย�อยตั�างๆ เข�าด�ว่ยก�น แตั�แทั้นทั้��จะ Relocated แลีะ Linked Text โดยตัรงก�บหน�ว่ยคว่ามจ!า แตั�ม�นจะเก(บ Text ลีงใน File

• File ทั้��เก(บในด)สก%อย-�ในฟอร%แมทั้ทั้��พีร�อมจะถู-กโหลีดเร�ยกว่�า โมด4ลีโหลีดเดอร%

• Binder จะทั้!าหน�าทั้�� Allocation, Relocation, แลีะ Link

Page 20: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 20

Overlay Structure

• ถู�าขนาดของโปรแกรมใหญ�กว่�าขนาดของหน�ว่ยคว่ามจ!า

Page 21: 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

Loader 21

A (20K)

B (20K)

C (30K)

D (10K)

E (20K)

100K

(a) แสดงการเร�ยกโปรแกรมระหว่�างโปรแกรมย�อย

A (20K)

B (20K)

E (20K)

C (30K)

D (10K)

0 A 20K D B 40K C E 60K 80K

(c) ตั!าแหน�งโปรแกรมย�อยในหน�ว่ยคว่ามจ!า(b) Overlay Structure

70K