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

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

Loader1 บทที่ 5 โหลดเดอร์ (Loader). Loader2 แอสเซมเบลอร์ และโหลดเดอร์ Source program ที่เป็นภาษาแอสเซมบลี้ ของผู้ใช้ จะถูกแปลงให้เป็น Object program (

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


งานนำเสนอเรื่อง: "Loader1 บทที่ 5 โหลดเดอร์ (Loader). Loader2 แอสเซมเบลอร์ และโหลดเดอร์ Source program ที่เป็นภาษาแอสเซมบลี้ ของผู้ใช้ จะถูกแปลงให้เป็น Object program ("— ใบสำเนางานนำเสนอ:

1 Loader1 บทที่ 5 โหลดเดอร์ (Loader)

2 Loader2 แอสเซมเบลอร์ และโหลดเดอร์ Source program ที่เป็นภาษาแอสเซมบลี้ ของผู้ใช้ จะถูกแปลงให้เป็น Object program ( หรือภาษาเครื่อง ) โดยตัว แอสเซมเบลอร์ ตัวโหลดเดอร์ ก็คือโปรแกรมที่ยอมรับ Object หรือภาษาเครื่องที่ได้ แล้วจัดการเตรียมส่งให้ เครื่องคอมพิวเตอร์ทำงาน

3 Loader3 A B LOADER DATABASE A B แสดงผังการทำงานทั่วไปของตัว โหลดเดอร์

4 Loader4 โหลดเดอร์ ทำหน้าที่ 4 อย่าง จัดหาที่ว่างในหน่วยความจำ เพื่อจะนำโปรแกรม ไปใส่ในที่ว่างนั้น (Allocation) แก้ปัญหา การเชื่อมโยงแอดเดรสของสัญลักษณ์ ต่างๆ (Symbolic references) ระหว่าง Objects ( ที่มาจากแต่ละโปรแกรมย่อย ) (Linking) ปรับตำแหน่งแอดเดรสที่ไม่อิสระทั้งหมด ( เช่น แอดเดรสที่เป็นค่าคงที่ แอดเดรสที่ต้องอ้างอิง ตารางอื่น ) ให้สัมพันธ์กับที่ว่างในหน่วยความจำ ที่ได้จัดเตรียมไว้ (Relocation) วางภาษาเครื่อง ( คำสั่ง และข้อมูล ) ลงไปใน หน่วยความจำ (Loading)

5 Loader5 Segment เป็นหน่วยของสารสนเทศที่ป้อนเข้าไป ซึ่ง อาจจะเป็นข้อมูล หรือโปรแกรมก็ได้ (Data or Program) โดยปกติ Segment หมายถึง แหล่งข้อมูลชุดเดียว หรือ Object ชุดเดียว

6 Loader6 “Compile-and-Go” Loader Sourc e Progr am Deck Compile- and-go Translator (e.g. assembler ) Program Loaded In Memory Assembler

7 Loader7 “Compile-and-Go” Loader คอมไพล์ หรือแอสเซมเบิลเสร็จ ก็ให้โปรแกรม ทำงานเลย ตัวแอสเซมเบลอร์จะวางภาษาเครื่องที่ได้ลงใน หน่วยความจำ และตัวโหลดเดอร์ ( ซึ่ง ประกอบด้วยเพียงคำสั่งเดียว ) จะทำหน้าที่บอก แอดเดรสเริ่มต้นของโปรแกรมภาษาเครื่องใน หน่วยความจำนั้น เพื่อให้เครื่องเริ่มทำงานที่ แอดเดรสเริ่มต้นนั้น ง่ายต่อการออกแบบและเขียนโปแกรม

8 Loader8 ข้อเสีย บางส่วนของหน่วยความจำต้องสูญเสียไป เพราะว่าตัวแอสเซมเบลอร์ต้องถูกใช้งานด้วย จะต้องแปลงภาษาแอสเซมบลี้ ให้เป็น ภาษาเครื่องทุกครั้ง ที่จะทำการ Run โปรแกรม ในกรณีที่โปรแกรมมีหลาย Segments ( เช่น มี หลายโปรแกรมย่อย หรือ Source program มา จากหลายภาษาที่ต่างกัน ) โหลดเดอร์วิธีนี้จะ ไม่สามารถทำได้

9 Loader9 โหลดเดอร์ที่ใช้งานโดยทั่วไป Source Progra m Translator Object Programs Ready for Execution Loader Object Program 1 Source Progra m Translator Object Program 2 Loader

10 10 โหลดเดอร์ที่ใช้งานโดยทั่วไป แทนที่เราจะเอาภาษเครื่องที่ได้ลงไปไว้ใน หน่วยความจำ เราก็เอาไปเก็บไว้ใน หน่วยความจำสำรองก่อน ( เช่น ดิสก์ เป็นต้น ) จะทำการโหลดมาไว้ในหน่วยความจำหลัก ก็ เฉพาะตอนที่เราจะทำการ Run โปรแกรม เราสามารถโหลดโปรแกรมภาษาเครื่อง ลง แทนที่พื้นที่เดิมของตัวแอสเซมเบลอร์ได้ ถ้าภาษาเครื่องที่ได้จากตัวแอสเซมเบลอร์ หรือ ตัวคอมไพเลอร์ อยู่ใน Format เดียวกัน ใช้ ข้อตกลงการ Link โปรแกรมร่วมกัน ก็จะทำให้ สามารถ เขียนโปรแกรมย่อย ที่มาจากภาษาที่ แตกต่างกันได้ ( เช่น ภาษา C หรือปาสคาล เป็นต้น )

11 Loader11 โหลดเดอร์ชนิด แอบโซลุท (Absolute Loader) ง่ายต่อการออกแบบและเขียนโปรแกรม ภาษาเครื่องที่ได้จากตัวแอสเซมเบลอร์จะเกือบ เหมือนกับวิธี Assemble-and-Go เพียงแต่ ภาษาเครื่องที่ได้ จะถูกเก็บลงในดิสก์ก่อน แทนที่จะส่งไปหน่วยความจำโดยตรง วิธีนี้จะเหลือพื้นที่ในหน่วยความจำไว้ใช้งาน เยอะ เพราะตัวแอสเซมเบลอร์ ไม่จำเป็นต้องอยู่ ในหน่วยความจำในช่วงของการโหลด

12 Loader12 MAIN program MAINSTART100 BALR12,0 USINGMAIN+2,12 : L15,ASQRT call BALR14,15 SQRT : ASQRTDC F’400’ address OF SQRT END SQRT subroutine SQRTSTART400 USING*,15 : compute square root BR14 END OBJECT DECK OUTPUT FROM ABSOLUTE ASSEMBLER MAIN program Location Instruction 100BALR12,0 102: : : 120L15,142(0,12) 124BALR14,15 126: : 244F’400’ 248 SQRT subroutine 400 : 476 BCR15, : OBJECT DECK OUTPUT FROM ABSOLUTE ASSEMBLER

13 Loader13 ตัวอย่างของโหลดเดอร์ชนิด แอบ โซลุท MAIN SQRT Object decks Absolute Loader 100 MAIN SQRT 478

14 Loader14 ข้อเสีย โปรแกรมเมอร์ ต้องกำหนดแอดเดรสใน หน่วยความจำของโปรแกรม ให้กับตัวแอสเซม เบลอร์ ว่าโปรแกรม จะถูกโหลดลงที่แอดเดรส ไหน ถ้าโปรแกรมนั้น มีหลายโปรแกรมย่อย โปรแกรมเมอร์ต้องจำแอดเดรสของแต่ละ โปรแกรมย่อย และอ้างแอดเดรสแบบแอบโซ ลุทให้ตรงกัน ในแต่ละโปรแกรมย่อยเหล่านั้น ในช่วงของการ Link โปรแกรมเมอร์ต้องระวังเรื่องแอดเดรส โดยต้อง ไม่กำหนดให้สองโปรแกรมย่อยวางทับกัน

15 Loader15 หน้าที่ของตัวโหลดเดอร์ 4 อย่าง ในกรณีของโหลดเดอร์ ชนิดแอบโซลุท Allocation -- ทำโดยโปรแกรมเมอร์ Linking -- ทำโดยโปรแกรมเมอร์ Relocation -- ทำโดยตัวแอสเซมเบลอร์ Loading -- ทำโดยตัวโหลดเดอร์

16 Loader16 การ Link ระหว่างโปรแกรมย่อย (Subroutine Linkage) ปัญหาของการ Link ระหว่างโปรแกรมย่อยก็ คือ – เมื่อโปรแกรมหลัก A ต้องการเรียกโปรแกรมย่อย B – เราสามารถใช้คำสั่ง ในการกระโดดออกจาก A ไป ยังโปรแกรมย่อย B ได้ ( เช่นคำสั่ง BAL 14,B) Branch and link – อย่างไรก็ตาม ตัวแอสเซมเบลอร์ไม่รู้ว่าตำแหน่งที่ จะกระโดดไปนั้นอยู่ที่ไหน – เช่น กรณีแอดเดรสของ B ตัวแอสเซมเบลอร์จะ แสดงข้อความบอกว่า เกิด ERROR ขึ้นมาเช่น ไม่มี การกำหนดสัญลักษณ์มาก่อน (Undefined symbol) – เว้นแต่ว่าเราจะมีคำสั่งพิเศษอย่างอื่นมาช่วย เช่น EXTRN และ ENTRY

17 Loader17 ตัวอย่าง MAINSTART --- L15,=A(B) call B BALR14,15 : END MAINSTART EXTRN B --- L15,=A(B) call B BALR14,15 : END

18 Loader18 EXTRN คำสั่งประเภท Pseudo-op ตามด้วยสัญลักษณ์ บอกให้รู้ว่าสัญลักษณ์เหล่านั้นถูกกำหนด ( หรือ ประกาศการใช้ ) ในโปรแกรมอื่น แต่ถูกเรียกใช้ ในโปรแกรมนี้

19 Loader19 ENTRY ถ้าสัญลักษณ์ถูกกำหนดในโปรแกรมนี้ และถูก เรียกใช้โดยโปรแกรมอื่นๆ เป็นคำสั่งประเภท Pseudo-op

20 Loader20 ตัวอย่าง ASSEMBLER LINKAGE PSEUDO-OPS Subroutine and Entry Naming (START and ENTRY Pseudo-ops) ASTARTdefines subroutine A. ENTRYB1,B2,B3,… defines locations B1,…,Bn As additional subroutine entry points EXTRN C : B1--- B2---

21 Loader21 โปรแกรมย่อยโดยทั่วไปจะมี ลักษณะดังนี้ BETASTART USING*,15 : BR14 END

22 Loader22 การอ้างแอดเดรสระหว่างโปรแกรมย่อย โดยการใช้ EXTRN CALL BETA กลายเป็น EXTRN BETA : L 15, ABETA BALR 14,15 : ABETADC A(BETA)


ดาวน์โหลด ppt Loader1 บทที่ 5 โหลดเดอร์ (Loader). Loader2 แอสเซมเบลอร์ และโหลดเดอร์ Source program ที่เป็นภาษาแอสเซมบลี้ ของผู้ใช้ จะถูกแปลงให้เป็น Object program (

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


Ads by Google