SlideShare a Scribd company logo
1 of 26
‫פרק 5‬

‫איסוף, קישור וטעינה‬
‫תרגום ההוראה‬
                         ‫מושגים:‬
 ‫שפה עילית, שפת סף, שפת מכונה‬
 ‫קומפיילר , אסמבלר/תכנית איסוף .‬
               ‫קומפילציה, אסמבלי‬
‫תרגום ההוראה‬
‫אופרנד_מקור, אופרנד_יעד קוד_ההוראה :תווית‬
‫שלב 1: תרגום קוד ההוראה‬

‫לפי טבלה מפורטת המתייחסת גם לסוגי האופרנדים‬
                         ‫נקבע קוד פעולה יחיד .‬
‫שלב 2: תרגום האופרנדים‬
                         ‫אוגר – יתורגם לפי טבלה‬   ‫‪‬‬
   ‫מספר – יירשם כמספר בינארי )גודל בית אחד(‬       ‫‪‬‬
‫מען - יירשם כמספר בינארי, יזוהה ע"י ][ גודל שני‬   ‫‪‬‬
                                         ‫בתים.‬
           ‫תווית/מזהה – יוחלף במען שהוא מייצג‬     ‫‪‬‬
‫סיכום : תרגום ההוראה‬
‫בשלב הראשון מזוהים קוד ההוראה וסוג האופרנדים‬
                      ‫.הקובעים קוד פעולה יחיד‬
       ‫. בשלב השני מתבצע תרגום של האופרנדים‬
‫מקומה של התכנית המתורגמת בזמן‬
            ‫התרגום‬
‫קביעת מענים לתכנית‬
‫תרגום התווית‬
                     ‫' ‪ 158Ȁ‬תרגיל ‪5.8Ȁ‬עמ‬
   ‫פתרון: התכנית שומרת את סכום המספרים 01-1 )55( באוגר ‪cl‬‬

            ‫]‪mov bl,[50h‬‬
            ‫‪mov cl,bl‬‬
‫:1‪loop‬‬      ‫‪inc bl‬‬
            ‫‪add cl,bl‬‬
            ‫01 ,‪cmp bl‬‬
            ‫1‪jbe loop‬‬
                                 ‫נניח כי תוכן מען ‪ 50h‬הוא 0.‬
‫כיצד נתרגם תכנית זו לשפת מכונה?‬
                      ‫איך נתייחס לתווית?‬
     ‫נתרגם שתי ההוראות הראשונות רגיל תוך התייחסות‬
  ‫לכאילו אחסון כשנתקל בהגדרת תווית נשמור את מענה‬
             ‫.ובכל פעם שנתקל בה נתרגם אותה למען‬

            ‫]‪mov bl,[50h‬‬
            ‫‪mov cl,bl‬‬
‫:1‪loop‬‬      ‫‪inc bl‬‬
            ‫‪add cl,bl‬‬
            ‫01 ,‪cmp bl‬‬
            ‫1‪jbe loop‬‬
‫טבלת הסמלים‬
‫טבלת סמלים הינה מקום קבוע שבו יירשמו התוויות‬
                               ‫שמענן התגלה‬
5.9 ‫עמ' 951 תרגיל‬
    ‫שפת סף‬          ‫מונה האתרים‬      ‫שפת מכונה‬
]mov bl,[50h      0000            8ȀA 1E 0050
mov cl,bl         0004            8ȀA CB
loop1: inc bl     0006            FE C3
add cl,bl         0008Ȁ          02 CB
cmp bl, 10        000A            FB 0A 8Ȁ0
jbe loop1         000D            ???? 76
‫תרגום התווית בהוראת קפיצה‬
         ‫שומרים את המען בו הוגדרה התווית בטבלת הסמלים.‬
‫כשמגיעים למקום בו מופיעה התווית מחשבים על כמה בתים צריך‬
                      ‫לדלג כדי להגיע למען הגדרת התווית.‬
               ‫מונה אתרים - מען התווית‬
                                ‫בתכנית הקודמת: 6-9-= ‪F‬‬
                                            ‫210010000=9‬
                                     ‫נהפוך ל 9- במשלים 2‬
                                               ‫01101111‬
                                                        ‫1‬
                                               ‫11101111‬
                                                       ‫7‪F‬‬
‫תרגום התווית בהוראת קפיצה‬
    ‫שפת סף‬        ‫מונה האתרים‬      ‫שפת מכונה‬
       ‫.‬                ‫.‬               ‫.‬
       ‫.‬                ‫.‬               ‫.‬
‫‪continue: dec bl 000F‬‬           ‫‪FE CB‬‬
‫0,‪cmp bl‬‬        ‫1100‬            ‫00 ‪8Ȁ0 FB‬‬
‫‪ja continue‬‬     ‫4100‬            ‫9‪77 F‬‬
       ‫.‬                ‫.‬               ‫.‬
‫עמ' 261 תר' 01.5 – 11.5‬
5.11 '‫עמ' 261 פתרון תר‬

 ‫מען‬         ‫ההוראה‬       ‫שפת מכונה‬
0000   mov ch,cl            8A E9
0002   again: add ch,cl     02 E9
0004   dec bl              FE CB
0006   cmp bl,1             80 FB
0008   ja again             76 F8
000A   mov [10],ch          88 2E
163 '‫עמ‬
         ‫2.5 אסמבלר שני מעברים‬
         mov ch,cl
again:   cmp bl,1
         je found
         add ch,cl
         dec bl
         jmp again
found:   mov [10],ch
‫טבלת מעקב‬
     ‫ההוראה‬         ch   cl   bl   ‫תנאי‬    [10]   Z
                         5    3
mov ch,cl            5
again:cmp bl,1                     false          0
je found
add ch,cl           10
dec bl                        2
jmp again
again:cmp bl,1                     false          0
je found
add ch,cl           15
dec bl                        1
jmp again
again:cmp bl,1                     true           1
je found
found:mov [10],ch                           15
‫מה מבצעת התכנית?‬
      ‫מכפלה של שני מספרים שלמים חיוביים.‬
‫מה ההבדל בינה לבין התכנית שבשאלה 11.5?‬
‫‪mov ch,cl‬‬
                                      ‫נשים לב :‬
‫:‪again‬‬   ‫1,‪cmp bl‬‬
                         ‫בשורה 2 הגדרת תווית –‬
         ‫‪je found‬‬      ‫ניתן לשמור המען בטבלת‬
         ‫‪add ch,cl‬‬                    ‫הסמלים‬
         ‫‪dec bl‬‬
         ‫‪jmp again‬‬         ‫בשורה 3 – תווית שלא‬
‫:‪found‬‬   ‫‪mov [10],ch‬‬        ‫הוגדרה , כאופרנד.‬
‫אסמבלר שני מעברים‬
‫כדי לתרגם את התכנית נשפת סף לשפת מכונה יש‬
                         ‫לבצע שני מעברים.‬
      ‫במעבר הראשון- לקבל טבלת סמלים מליאה‬
     ‫במעבר השני – להחליף את התוויות בהפרשי‬
‫במענים המתאימים לפי הטבלה שקיבלנו במעבר‬
                                   ‫הראשון.‬
‫ש.ב‬
                                 ‫עמ' 361 תר' 21.5‬
                                 ‫עמ' 461 תר' 31.5‬
                                 ‫עמ' 661 תר' 41.5‬
‫עמ' 661 סעיף 2.2.2.5 – לקרוא בעיון ולהבין הדוגמה.‬
                                 ‫עמ' 861 תר' 51.5‬
‫קישור וטעינה‬                          ‫3.5‬
                                               ‫קריאות התכנית‬
‫חלוקת התכנית למודולים. כל מודול נבדק בנפרד, הרצת כל המודולים‬
                                               ‫כתכנית אחת.‬
                                      ‫תהליך קישור )‪(Linking‬‬
       ‫תהליך המתרחש לפני ההרצה. מצריך פעולות הכנה ומאפשר‬
   ‫למודולים להכיר אחד את השני ולשתף פעולה אחד עם השני.‬
                                                  ‫תהליך הכנה‬
                                           ‫הצהרה על המודולים‬
        ‫הצהרה על המשתנים שעל המודולים להכיר אחד אצל השני.‬
                                                      ‫אסמבלי‬
                                       ‫תכנית הקישור )‪(linker‬‬
         ‫יוצרת את הקשרים בין המודולים ומאפשרת הרצת התכנית.‬
‫תהליך הקישור והטעינה לא קיים ב ‪– EasyCPU‬‬
‫תכנית טעינה )‪(loader‬‬
  ‫תכנית שתפקידה לטעון את התכנית שלנו לזיכרון.‬
     ‫תכנית זו עובדת עם מערכת ההפעלה ותפקידה‬
   ‫לאתר מקום בזיכרון מספיק גדול עבור התכנית.‬
‫את מען ההתחלה של התכנית יחסית למקטע הקוד,‬
      ‫את אזור הנתונים ואת אורך התכנית מקבלת‬
                  ‫תכנית הטעינה מתכנית הקישור.‬
  ‫את המען הראשון היא מעבירה לאוגר מקטע הקוד‬
        ‫ועכשיו נקבעים המענים המוחלטים בזיכרון‬
‫תכנית ניפוי)‪(debugger‬‬
    ‫מאפשרת לזהות שגיאות זמן ריצה.‬
        ‫אחד מהכלים – צעד אחר צעד.‬

More Related Content

More from lizliziz

פרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותפרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותlizliziz
 
פרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותפרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותlizliziz
 
פרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותפרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותlizliziz
 
פרק 3 ארגון תכניות וביצוען
פרק 3 ארגון תכניות וביצועןפרק 3 ארגון תכניות וביצוען
פרק 3 ארגון תכניות וביצועןlizliziz
 
אופטיקה שיעור 1 (1)
אופטיקה   שיעור 1 (1)אופטיקה   שיעור 1 (1)
אופטיקה שיעור 1 (1)lizliziz
 
תעתועי ראייה
תעתועי ראייהתעתועי ראייה
תעתועי ראייהlizliziz
 
אופטיקה – שיעור 4
אופטיקה – שיעור 4אופטיקה – שיעור 4
אופטיקה – שיעור 4lizliziz
 
אור וצבע
אור וצבעאור וצבע
אור וצבעlizliziz
 
אופטיקה – שיעור 3
אופטיקה – שיעור 3אופטיקה – שיעור 3
אופטיקה – שיעור 3lizliziz
 
אופטיקה שיעור 1
אופטיקה   שיעור 1אופטיקה   שיעור 1
אופטיקה שיעור 1lizliziz
 
מצגת של מישהוא מהאינטרנט על אור וצל (1)
מצגת של מישהוא מהאינטרנט על אור וצל (1)מצגת של מישהוא מהאינטרנט על אור וצל (1)
מצגת של מישהוא מהאינטרנט על אור וצל (1)lizliziz
 
שיעור 2 אור וראייה
שיעור 2   אור וראייהשיעור 2   אור וראייה
שיעור 2 אור וראייהlizliziz
 

More from lizliziz (18)

פרק 2
פרק 2פרק 2
פרק 2
 
Cecile
CecileCecile
Cecile
 
פרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותפרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניות
 
פרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותפרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניות
 
פרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניותפרק 6 המחסנית ותת תכניות
פרק 6 המחסנית ותת תכניות
 
פרק 5
פרק 5פרק 5
פרק 5
 
פרק 4
פרק 4פרק 4
פרק 4
 
פרק 3 ארגון תכניות וביצוען
פרק 3 ארגון תכניות וביצועןפרק 3 ארגון תכניות וביצוען
פרק 3 ארגון תכניות וביצוען
 
פרק 2
פרק 2פרק 2
פרק 2
 
Ovdanut6
Ovdanut6Ovdanut6
Ovdanut6
 
אופטיקה שיעור 1 (1)
אופטיקה   שיעור 1 (1)אופטיקה   שיעור 1 (1)
אופטיקה שיעור 1 (1)
 
תעתועי ראייה
תעתועי ראייהתעתועי ראייה
תעתועי ראייה
 
אופטיקה – שיעור 4
אופטיקה – שיעור 4אופטיקה – שיעור 4
אופטיקה – שיעור 4
 
אור וצבע
אור וצבעאור וצבע
אור וצבע
 
אופטיקה – שיעור 3
אופטיקה – שיעור 3אופטיקה – שיעור 3
אופטיקה – שיעור 3
 
אופטיקה שיעור 1
אופטיקה   שיעור 1אופטיקה   שיעור 1
אופטיקה שיעור 1
 
מצגת של מישהוא מהאינטרנט על אור וצל (1)
מצגת של מישהוא מהאינטרנט על אור וצל (1)מצגת של מישהוא מהאינטרנט על אור וצל (1)
מצגת של מישהוא מהאינטרנט על אור וצל (1)
 
שיעור 2 אור וראייה
שיעור 2   אור וראייהשיעור 2   אור וראייה
שיעור 2 אור וראייה
 

פרק 5

  • 2. ‫תרגום ההוראה‬ ‫מושגים:‬ ‫שפה עילית, שפת סף, שפת מכונה‬ ‫קומפיילר , אסמבלר/תכנית איסוף .‬ ‫קומפילציה, אסמבלי‬
  • 4. ‫שלב 1: תרגום קוד ההוראה‬ ‫לפי טבלה מפורטת המתייחסת גם לסוגי האופרנדים‬ ‫נקבע קוד פעולה יחיד .‬
  • 5. ‫שלב 2: תרגום האופרנדים‬ ‫אוגר – יתורגם לפי טבלה‬ ‫‪‬‬ ‫מספר – יירשם כמספר בינארי )גודל בית אחד(‬ ‫‪‬‬ ‫מען - יירשם כמספר בינארי, יזוהה ע"י ][ גודל שני‬ ‫‪‬‬ ‫בתים.‬ ‫תווית/מזהה – יוחלף במען שהוא מייצג‬ ‫‪‬‬
  • 6. ‫סיכום : תרגום ההוראה‬ ‫בשלב הראשון מזוהים קוד ההוראה וסוג האופרנדים‬ ‫.הקובעים קוד פעולה יחיד‬ ‫. בשלב השני מתבצע תרגום של האופרנדים‬
  • 7. ‫מקומה של התכנית המתורגמת בזמן‬ ‫התרגום‬
  • 9. ‫תרגום התווית‬ ‫' ‪ 158Ȁ‬תרגיל ‪5.8Ȁ‬עמ‬ ‫פתרון: התכנית שומרת את סכום המספרים 01-1 )55( באוגר ‪cl‬‬ ‫]‪mov bl,[50h‬‬ ‫‪mov cl,bl‬‬ ‫:1‪loop‬‬ ‫‪inc bl‬‬ ‫‪add cl,bl‬‬ ‫01 ,‪cmp bl‬‬ ‫1‪jbe loop‬‬ ‫נניח כי תוכן מען ‪ 50h‬הוא 0.‬
  • 10. ‫כיצד נתרגם תכנית זו לשפת מכונה?‬ ‫איך נתייחס לתווית?‬ ‫נתרגם שתי ההוראות הראשונות רגיל תוך התייחסות‬ ‫לכאילו אחסון כשנתקל בהגדרת תווית נשמור את מענה‬ ‫.ובכל פעם שנתקל בה נתרגם אותה למען‬ ‫]‪mov bl,[50h‬‬ ‫‪mov cl,bl‬‬ ‫:1‪loop‬‬ ‫‪inc bl‬‬ ‫‪add cl,bl‬‬ ‫01 ,‪cmp bl‬‬ ‫1‪jbe loop‬‬
  • 11. ‫טבלת הסמלים‬ ‫טבלת סמלים הינה מקום קבוע שבו יירשמו התוויות‬ ‫שמענן התגלה‬
  • 12. 5.9 ‫עמ' 951 תרגיל‬ ‫שפת סף‬ ‫מונה האתרים‬ ‫שפת מכונה‬ ]mov bl,[50h 0000 8ȀA 1E 0050 mov cl,bl 0004 8ȀA CB loop1: inc bl 0006 FE C3 add cl,bl 0008Ȁ 02 CB cmp bl, 10 000A FB 0A 8Ȁ0 jbe loop1 000D ???? 76
  • 13. ‫תרגום התווית בהוראת קפיצה‬ ‫שומרים את המען בו הוגדרה התווית בטבלת הסמלים.‬ ‫כשמגיעים למקום בו מופיעה התווית מחשבים על כמה בתים צריך‬ ‫לדלג כדי להגיע למען הגדרת התווית.‬ ‫מונה אתרים - מען התווית‬ ‫בתכנית הקודמת: 6-9-= ‪F‬‬ ‫210010000=9‬ ‫נהפוך ל 9- במשלים 2‬ ‫01101111‬ ‫1‬ ‫11101111‬ ‫7‪F‬‬
  • 14. ‫תרגום התווית בהוראת קפיצה‬ ‫שפת סף‬ ‫מונה האתרים‬ ‫שפת מכונה‬ ‫.‬ ‫.‬ ‫.‬ ‫.‬ ‫.‬ ‫.‬ ‫‪continue: dec bl 000F‬‬ ‫‪FE CB‬‬ ‫0,‪cmp bl‬‬ ‫1100‬ ‫00 ‪8Ȁ0 FB‬‬ ‫‪ja continue‬‬ ‫4100‬ ‫9‪77 F‬‬ ‫.‬ ‫.‬ ‫.‬
  • 15. ‫עמ' 261 תר' 01.5 – 11.5‬
  • 16. 5.11 '‫עמ' 261 פתרון תר‬ ‫מען‬ ‫ההוראה‬ ‫שפת מכונה‬ 0000 mov ch,cl 8A E9 0002 again: add ch,cl 02 E9 0004 dec bl FE CB 0006 cmp bl,1 80 FB 0008 ja again 76 F8 000A mov [10],ch 88 2E
  • 17. 163 '‫עמ‬ ‫2.5 אסמבלר שני מעברים‬ mov ch,cl again: cmp bl,1 je found add ch,cl dec bl jmp again found: mov [10],ch
  • 18. ‫טבלת מעקב‬ ‫ההוראה‬ ch cl bl ‫תנאי‬ [10] Z 5 3 mov ch,cl 5 again:cmp bl,1 false 0 je found add ch,cl 10 dec bl 2 jmp again again:cmp bl,1 false 0 je found add ch,cl 15 dec bl 1 jmp again again:cmp bl,1 true 1 je found found:mov [10],ch 15
  • 19. ‫מה מבצעת התכנית?‬ ‫מכפלה של שני מספרים שלמים חיוביים.‬ ‫מה ההבדל בינה לבין התכנית שבשאלה 11.5?‬
  • 20. ‫‪mov ch,cl‬‬ ‫נשים לב :‬ ‫:‪again‬‬ ‫1,‪cmp bl‬‬ ‫בשורה 2 הגדרת תווית –‬ ‫‪je found‬‬ ‫ניתן לשמור המען בטבלת‬ ‫‪add ch,cl‬‬ ‫הסמלים‬ ‫‪dec bl‬‬ ‫‪jmp again‬‬ ‫בשורה 3 – תווית שלא‬ ‫:‪found‬‬ ‫‪mov [10],ch‬‬ ‫הוגדרה , כאופרנד.‬
  • 21. ‫אסמבלר שני מעברים‬ ‫כדי לתרגם את התכנית נשפת סף לשפת מכונה יש‬ ‫לבצע שני מעברים.‬ ‫במעבר הראשון- לקבל טבלת סמלים מליאה‬ ‫במעבר השני – להחליף את התוויות בהפרשי‬ ‫במענים המתאימים לפי הטבלה שקיבלנו במעבר‬ ‫הראשון.‬
  • 22. ‫ש.ב‬ ‫עמ' 361 תר' 21.5‬ ‫עמ' 461 תר' 31.5‬ ‫עמ' 661 תר' 41.5‬ ‫עמ' 661 סעיף 2.2.2.5 – לקרוא בעיון ולהבין הדוגמה.‬ ‫עמ' 861 תר' 51.5‬
  • 23. ‫קישור וטעינה‬ ‫3.5‬ ‫קריאות התכנית‬ ‫חלוקת התכנית למודולים. כל מודול נבדק בנפרד, הרצת כל המודולים‬ ‫כתכנית אחת.‬ ‫תהליך קישור )‪(Linking‬‬ ‫תהליך המתרחש לפני ההרצה. מצריך פעולות הכנה ומאפשר‬ ‫למודולים להכיר אחד את השני ולשתף פעולה אחד עם השני.‬ ‫תהליך הכנה‬ ‫הצהרה על המודולים‬ ‫הצהרה על המשתנים שעל המודולים להכיר אחד אצל השני.‬ ‫אסמבלי‬ ‫תכנית הקישור )‪(linker‬‬ ‫יוצרת את הקשרים בין המודולים ומאפשרת הרצת התכנית.‬
  • 24. ‫תהליך הקישור והטעינה לא קיים ב ‪– EasyCPU‬‬
  • 25. ‫תכנית טעינה )‪(loader‬‬ ‫תכנית שתפקידה לטעון את התכנית שלנו לזיכרון.‬ ‫תכנית זו עובדת עם מערכת ההפעלה ותפקידה‬ ‫לאתר מקום בזיכרון מספיק גדול עבור התכנית.‬ ‫את מען ההתחלה של התכנית יחסית למקטע הקוד,‬ ‫את אזור הנתונים ואת אורך התכנית מקבלת‬ ‫תכנית הטעינה מתכנית הקישור.‬ ‫את המען הראשון היא מעבירה לאוגר מקטע הקוד‬ ‫ועכשיו נקבעים המענים המוחלטים בזיכרון‬
  • 26. ‫תכנית ניפוי)‪(debugger‬‬ ‫מאפשרת לזהות שגיאות זמן ריצה.‬ ‫אחד מהכלים – צעד אחר צעד.‬