Upload
lizliziz
View
42
Download
5
Embed Size (px)
Citation preview
5פרק
איסוף, קישור וטעינה
תרגום ההוראה
מושגים:
שפה עילית, שפת סף, שפת מכונה
קומפיילר , אסמבלר/תכנית איסוף .
קומפילציה, אסמבלי
תרגום ההוראה
אופרנד_מקור, אופרנד_יעד קוד_ההוראה :תווית
: תרגום קוד ההוראה1שלב
לפי טבלה מפורטת המתייחסת גם לסוגי האופרנדים
נקבע קוד פעולה יחיד .
: תרגום האופרנדים2שלב
אוגר – יתורגם לפי טבלה(גודל בית אחד) מספר – יירשם כמספר בינארי מען - יירשם כמספר בינארי, יזוהה ע"י [] גודל שני
בתים.תווית/מזהה – יוחלף במען שהוא מייצג
סיכום : תרגום ההוראה
בשלב הראשון מזוהים קוד ההוראה וסוג האופרנדים .הקובעים קוד פעולה יחיד
. בשלב השני מתבצע תרגום של האופרנדים
מקומה של התכנית המתורגמת בזמן התרגום
קביעת מענים לתכנית
תרגום התווית
' ��158 תרגיל ��5.8עמcl) באוגר 55 (1-10פתרון: התכנית שומרת את סכום המספרים
mov bl,[50h]mov cl,bl
loop1: inc bladd cl,blcmp bl, 10jbe loop1
.0 הוא 50hנניח כי תוכן מען
כיצד נתרגם תכנית זו לשפת מכונה?איך נתייחס לתווית?
נתרגם שתי ההוראות הראשונות רגיל תוך התייחסות ל"כאילו אחסון" כשנתקל בהגדרת תווית נשמור את מענה
.ובכל פעם שנתקל בה "נתרגם" אותה למען
mov bl,[50h]mov cl,bl
loop1: inc bladd cl,blcmp bl, 10jbe loop1
טבלת הסמלים
טבלת סמלים הינה מקום קבוע שבו יירשמו התוויות שמענן התגלה
5.9 תרגיל 159עמ'
שפת סף מונה האתרים שפת מכונה
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 8��0 FB 0A
jbe loop1 000D 76????
תרגום התווית בהוראת קפיצה
שומרים את המען בו הוגדרה התווית בטבלת הסמלים. כשמגיעים למקום בו מופיעה התווית מחשבים על כמה בתים צריך
לדלג כדי להגיע למען הגדרת התווית.מונה אתרים - מען התווית
F =-9-6בתכנית הקודמת: 000010012=9
2- במשלים 9נהפוך ל 11110110
111110111
F7
תרגום התווית בהוראת קפיצה
שפת סף מונה האתרים שפת מכונה
. . .
. . .
continue: dec bl 000F FE CB
cmp bl,0 0011 8��0 FB 00
ja continue 0014 77
. . .
F9
5.11 – 5.10 תר' 162עמ'
5.11 פתרון תר' 162עמ'
מען ההוראה שפת מכונה
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עמ' אסמבלר שני מעברים5.2
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
מה מבצעת התכנית?
מכפלה של שני מספרים שלמים חיוביים.
?5.11מה ההבדל בינה לבין התכנית שבשאלה
mov ch,cl
again: cmp bl,1
je found
add ch,cl
dec bl
jmp again
found: mov [10],ch
נשים לב :
הגדרת תווית – 2בשורה ניתן לשמור המען בטבלת
הסמלים
– תווית שלא 3בשורה הוגדרה , כאופרנד.
כדי לתרגם את התכנית נשפת סף לשפת מכונה יש לבצע שני מעברים.
במעבר הראשון- לקבל טבלת סמלים מליאה
במעבר השני – להחליף את התוויות בהפרשי במענים המתאימים לפי הטבלה שקיבלנו במעבר
הראשון.
אסמבלר שני מעברים
ש.ב
5.12 תר' 163עמ'
5.13 תר' 164עמ'
5.14 תר' 166עמ'
– לקרוא בעיון ולהבין הדוגמה.5.2.2.2 סעיף 166עמ'
5.15 תר' 168עמ'
קישור וטעינה5.3
קריאות התכניתחלוקת התכנית למודולים. כל מודול נבדק בנפרד, הרצת כל המודולים
כתכנית אחת.)Linking(תהליך קישור
תהליך המתרחש לפני ההרצה. מצריך פעולות הכנה ומאפשר למודולים ל"הכיר" אחד את השני ולשתף פעולה אחד עם השני.
תהליך הכנההצהרה על המודולים
הצהרה על המשתנים שעל המודולים להכיר אחד אצל השני.אסמבלי
)linker(תכנית הקישור יוצרת את הקשרים בין המודולים ומאפשרת הרצת התכנית.
–EasyCPUתהליך הקישור והטעינה לא קיים ב
) loader(תכנית טעינה
תכנית שתפקידה לטעון את התכנית שלנו לזיכרון.
תכנית זו עובדת עם מערכת ההפעלה ותפקידה לאתר מקום בזיכרון מספיק גדול עבור התכנית.
את מען ההתחלה של התכנית יחסית למקטע הקוד, את אזור הנתונים ואת אורך התכנית מקבלת
תכנית הטעינה מתכנית הקישור.
את המען הראשון היא מעבירה לאוגר מקטע הקוד ועכשיו נקבעים המענים המוחלטים בזיכרון
) debugger(תכנית ניפוי
מאפשרת לזהות שגיאות זמן ריצה.
אחד מהכלים – צעד אחר צעד.