งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

05/09/47Loader1 5.1.5 โหลดเดอร์แบบย้ายโปรแกรม ได้ (Relocating Loaders) • หลีกเลี่ยงการแปลภาษาแอสเซมบลี้ของ โปรแกรมย่อยทั้งหมดให้เป็นภาษาเครื่องซ้ำอีก ครั้ง.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "05/09/47Loader1 5.1.5 โหลดเดอร์แบบย้ายโปรแกรม ได้ (Relocating Loaders) • หลีกเลี่ยงการแปลภาษาแอสเซมบลี้ของ โปรแกรมย่อยทั้งหมดให้เป็นภาษาเครื่องซ้ำอีก ครั้ง."— ใบสำเนางานนำเสนอ:

1 05/09/47Loader โหลดเดอร์แบบย้ายโปรแกรม ได้ (Relocating Loaders) • หลีกเลี่ยงการแปลภาษาแอสเซมบลี้ของ โปรแกรมย่อยทั้งหมดให้เป็นภาษาเครื่องซ้ำอีก ครั้ง (Reassembling) • แทนที่จะให้โปรแกรมเมอร์ทำหน้าที่หาที่ว่างใน หน่วยความจำ (Allocation) และ เชื่อมโยง แอดเดรสระหว่างโปรแกรมย่อย Linkage) เราก็ จะใช้โหลดเดอร์วิธีใหม่ที่เรียกว่า โหลดเดอร์ แบบย้ายโปรแกรมได้ (Relocating Loaders) • ตัวอย่างของโหลดเดอร์ที่ใช้หลักการของ Relocating Loaders คือ โหลดเดอร์ชื่อ Binary Symbolic Subroutine (BSS)

2 05/09/47Loader2 โหลดเดอร์ BSS • ยอมให้มี Segments ของโปรแกรมย่อย (Procedure segments) จำนวนมาก • แต่ยอมให้มี Segments ของข้อมูล (Data segments) เพียงอันเดียว ( ข้อมูลจะถูก โปรแกรมย่อยแต่ละตัวใช้ Segment นี้ร่วมกัน ) • ตัวแอสเซมเบลอร์จะทำการแปล Segment โปรแกรมย่อยแต่ละ Segment อย่างอิสระ และ ส่งต่อให้กับตัวโหลดเดอร์

3 05/09/47Loader3 Transfer vector, Length และ relocation bit •Transfer vector ค่าที่ใช้อ้างอิงสัญลักษณ์ ภายนอกแต่ละตัว ใช้ในการแก้ปัญหาของ Linking •Length ความยาวของโปรแกรม ใช้แก้ปัญหา การจัดสรรหน่วยความจำ •relocation bit ใช้ในการแก้ปัญหาของ Relocation –00 Fixed –01 Relocate ได้

4 05/09/47Loader4 Source program MAINSTART EXTRNSQRT EXTRNERR ST14,SAVE Save return address L1,=F’9’ Load test value BAL14,SQRT Call SQRT C1,=F’3’ Compare answer BNEERR Transfer to ERR L14,SAVE Get return Address BR14 Return to Caller SAVEDSF Temp. loc. END Program length = 48 bytes Transfer vector = 8 byte Rel. Addr. Relocation Object code 000‘SQRT’ 400‘ERRb’ 801ST14, L1, BAL14,0 2001C1, BC7,4 2801L14, BCR15, (Skipped for alignment) 3600(Temp location)

5 05/09/47Loader5

6 05/09/47Loader6 ข้อเสียของ BSS •Transfer vector linkage มีประโยชน์แค่การ Transfer เพียงอย่างเดียว มันไม่เอื้ออำนวยต่อ การ Loading หรือการเก็บข้อมูลภายนอก ( ข้อมูลที่อยู่อีก Segment หนึ่ง ) •Transfer vector เพิ่มขนาดของโปรแกรม ภาษาเครื่องในหน่วยความจำ • ตัวโหลดเดอร์ BSS จะดีกับ Segments ที่เป็น คำสั่ง แต่ไม่สะดวกกับการเข้าถึง Segment ที่ เป็นข้อมูลที่ใช้ร่วมกัน ( แก้ไขได้โดยยอมให้มี Segment ข้อมูลที่ใช้ร่วมกันได้ เพียง Segment เดียว ซึ่งเรียกว่า COMMON)

7 05/09/47Loader โหลดเดอร์แบบลิงค์โดยตรง (Direct-Linking Loaders) • เป็นโหลดเดอร์ที่ดีที่สุด • ยอมให้มี Segments คำสั่งได้หลาย Segments และยอมให้มี Segments ข้อมูลได้ หลาย Segments และยอมให้มีการ Reference คำสั่งและข้อมูลที่อยู่ใน Segment อื่นๆ

8 05/09/47Loader8 ข้อมูลของแต่ละ Segment • ความยาว (Length) ของ Segment • รายการของสัญลักษณ์ทั้งหมดใน Segment ซึ่งอาจจะ ถูกอ้างใช้ (Referenced) โดย Segment อื่น และ Relative location ภายใน Segment • รายการของสัญลักษณ์ทั้งหมดที่ไม่ได้ถูกกำหนดหรือ ประกาศใน Segment แต่มีการใช้สัญลักษณ์นั้น • ข้อมูลเกี่ยวกับ Address constant ว่าจะวางที่ตำแหน่ง ไหนใน Segment และรายละเอียดว่าเราจะแก้ไขข้อมูล อย่างไร • ภาษาเครื่องที่ได้จากการแปลงมาจากภาษาแอสเซมบลี้ รวมทั้ง Relative address ของมัน

9 05/09/47Loader9 ข้อมูลใน Object ที่เก็บสัญลักษณ์ ภายนอก •ESD (External Symbol Dictionary) บันจุ ข้อมูลเกี่ยวกับ สัญลักษณ์ทั้งหมดที่ถูกกำหนด ในโปรแกรมนี้ แต่อาจถูกอ้างถึง (Referred) จากที่อื่น •TXT (Text) •RLD (Relocation and Linkage Directory) บรรจุ รหัสภาษาเครื่องที่แปลงมาจาก Source program บัตรที่เก็บแอดเดรสที่เปลี่ยนตำแหน่ง และใช้ในการลิงค์ •END แสดงการจบของ Object

10 05/09/47Loader10 Program Card No. 1.JOHNSTART 2.ENTRYRESULT 3. EXTRNSUM 4.BALR12,0 5. USING*,12 6. ST14,SAVE 7. L1,POINTER 8. L15,ASUM 9. BALR14, ST1,RESULT 11. L14,SAVE 12.BR14 13.TABLEDCF’1,7,9,10,3’ 14.POINTERDCA(TABLE) 15.RESULTDSF 16. SAVEDSF 17. ASUMDCA(SUM) END Translation Rel. loc. 0BALR12,0 2ST14,54(0,12) 6L1,46(0,12) 10L15,58(0,12) 14BALR14,15 16ST1,50(0,12) 20L14,54(0,12) 24BCR15, ? 64

11 05/09/47Loader11 ตัวอย่างข้อมูล ESD TXT RLD และ END ของ โหลดเดอร์แบบลิงค์ โดยตรง

12 05/09/47Loader12 Program Card No. 1.JOHNSTART 2.ENTRYRESULT 3. EXTRNSUM 4.BALR12,0 5. USING*,12 6. ST14,SAVE 7. L1,POINTER 8. L15,ASUM 9. BALR14, ST1,RESULT 11. L14,SAVE 12.BR14 13.TABLEDCF’1,7,9,10,3’ 14.POINTERDCA(TABLE) 15.RESULTDSF 16. SAVEDSF 17. ASUMDCA(SUM) END Translation Rel. loc. 0BALR12,0 2ST14,54(0,12) 6L1,46(0,12) 10L15,58(0,12) 14BALR14,15 16ST1,50(0,12) 20L14,54(0,12) 24BCR15, ? 64

13 05/09/47Loader13

14 05/09/47Loader14 บัตร ESD บรรจุข้อมูลเหล่านี้ •SD ซึ่งหมายถึงสัญลักษณ์ที่ถูกกำหนดให้เป็น Segment (Segment definition) •LD เป็นการกำหนดภายใน Segment ของมัน (Local definition) •ER (External reference) ใช้ในการอ้างอิง ภายนอก

15 05/09/47Loader15 บัตร RLD บรรจุข้อมูลเหล่านี้ • ตำแหน่งต่างๆ ของตัวคงที่ (Constant) แต่ละ ตัว ที่ต้องการการเปลี่ยนแปลงอันเนื่องมาจาก การเคลื่อนย้ายโปรแกรม Relocation • มันต้องถูกเปลี่ยนโดยอะไร • การทำงาน (Operation) ที่จะต้องถูกจัดการ

16 05/09/47Loader16 ESD โปรแกรมย่อย ATXT RLD END ESD โปรแกรมย่อย BTXT RLD END ESD โปรแกรมย่อย CTXT RLD END การเรียงลำดับข้อมูลในโปรแกรมย่อย

17 05/09/47Loader17

18 05/09/47Loader โหลดเดอร์ชนิดอื่นๆ – ชนิด Binders – ชนิด Overlays

19 05/09/47Loader19 Binder • ทำหน้าที่เหมือนกับ Direct-Linking Loader ที่ ทำหน้าที่ Binding โปรแกรมย่อยต่างๆ เข้า ด้วยกัน แต่แทนที่จะ Relocated และ Linked Text โดยตรงกับหน่วยความจำ แต่มันจะเก็บ Text ลงใน File •File ที่เก็บในดิสก์อยู่ในฟอร์แมทที่พร้อมจะถูก โหลดเรียกว่า โมดุลโหลดเดอร์ •Binder จะทำหน้าที่ Allocation, Relocation, และ Link

20 05/09/47Loader20 Overlay Structure • ถ้าขนาดของโปรแกรมใหญ่กว่าขนาดของ หน่วยความจำ

21 05/09/47Loader21 (b) Overlay Structure


ดาวน์โหลด ppt 05/09/47Loader1 5.1.5 โหลดเดอร์แบบย้ายโปรแกรม ได้ (Relocating Loaders) • หลีกเลี่ยงการแปลภาษาแอสเซมบลี้ของ โปรแกรมย่อยทั้งหมดให้เป็นภาษาเครื่องซ้ำอีก ครั้ง.

งานนำเสนอที่คล้ายกัน


Ads by Google