26
פרק5 איסוף, קישור וטעינה

פרק 5

Embed Size (px)

Citation preview

Page 1: פרק 5

5פרק

איסוף, קישור וטעינה

Page 2: פרק 5

תרגום ההוראה

מושגים:

שפה עילית, שפת סף, שפת מכונה

קומפיילר , אסמבלר/תכנית איסוף .

קומפילציה, אסמבלי

Page 3: פרק 5

תרגום ההוראה

אופרנד_מקור, אופרנד_יעד קוד_ההוראה :תווית

Page 4: פרק 5

: תרגום קוד ההוראה1שלב

לפי טבלה מפורטת המתייחסת גם לסוגי האופרנדים

נקבע קוד פעולה יחיד .

Page 5: פרק 5

: תרגום האופרנדים2שלב

אוגר – יתורגם לפי טבלה(גודל בית אחד) מספר – יירשם כמספר בינארי מען - יירשם כמספר בינארי, יזוהה ע"י [] גודל שני

בתים.תווית/מזהה – יוחלף במען שהוא מייצג

Page 6: פרק 5

סיכום : תרגום ההוראה

בשלב הראשון מזוהים קוד ההוראה וסוג האופרנדים .הקובעים קוד פעולה יחיד

. בשלב השני מתבצע תרגום של האופרנדים

Page 7: פרק 5

מקומה של התכנית המתורגמת בזמן התרגום

Page 8: פרק 5

קביעת מענים לתכנית

Page 9: פרק 5

תרגום התווית

' ��158 תרגיל ��5.8עמcl) באוגר 55 (1-10פתרון: התכנית שומרת את סכום המספרים

mov bl,[50h]mov cl,bl

loop1: inc bladd cl,blcmp bl, 10jbe loop1

.0 הוא 50hנניח כי תוכן מען

Page 10: פרק 5

כיצד נתרגם תכנית זו לשפת מכונה?איך נתייחס לתווית?

נתרגם שתי ההוראות הראשונות רגיל תוך התייחסות ל"כאילו אחסון" כשנתקל בהגדרת תווית נשמור את מענה

.ובכל פעם שנתקל בה "נתרגם" אותה למען

mov bl,[50h]mov cl,bl

loop1: inc bladd cl,blcmp bl, 10jbe loop1

Page 11: פרק 5

טבלת הסמלים

טבלת סמלים הינה מקום קבוע שבו יירשמו התוויות שמענן התגלה

Page 12: פרק 5

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????

Page 13: פרק 5

תרגום התווית בהוראת קפיצה

שומרים את המען בו הוגדרה התווית בטבלת הסמלים. כשמגיעים למקום בו מופיעה התווית מחשבים על כמה בתים צריך

לדלג כדי להגיע למען הגדרת התווית.מונה אתרים - מען התווית

F =-9-6בתכנית הקודמת: 000010012=9

2- במשלים 9נהפוך ל 11110110

111110111

F7

Page 14: פרק 5

תרגום התווית בהוראת קפיצה

שפת סף מונה האתרים שפת מכונה

. . .

. . .

continue: dec bl 000F FE CB

cmp bl,0 0011 8��0 FB 00

ja continue 0014 77

. . .

F9

Page 15: פרק 5

5.11 – 5.10 תר' 162עמ'

Page 16: פרק 5

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

Page 17: פרק 5

163עמ' אסמבלר שני מעברים5.2

mov ch,cl

again: cmp bl,1

je found

add ch,cl

dec bl

jmp again

found: mov [10],ch

Page 18: פרק 5

טבלת מעקבההוראה 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

Page 19: פרק 5

מה מבצעת התכנית?

מכפלה של שני מספרים שלמים חיוביים.

?5.11מה ההבדל בינה לבין התכנית שבשאלה

Page 20: פרק 5

mov ch,cl

again: cmp bl,1

je found

add ch,cl

dec bl

jmp again

found: mov [10],ch

נשים לב :

הגדרת תווית – 2בשורה ניתן לשמור המען בטבלת

הסמלים

– תווית שלא 3בשורה הוגדרה , כאופרנד.

Page 21: פרק 5

כדי לתרגם את התכנית נשפת סף לשפת מכונה יש לבצע שני מעברים.

במעבר הראשון- לקבל טבלת סמלים מליאה

במעבר השני – להחליף את התוויות בהפרשי במענים המתאימים לפי הטבלה שקיבלנו במעבר

הראשון.

אסמבלר שני מעברים

Page 22: פרק 5

ש.ב

5.12 תר' 163עמ'

5.13 תר' 164עמ'

5.14 תר' 166עמ'

– לקרוא בעיון ולהבין הדוגמה.5.2.2.2 סעיף 166עמ'

5.15 תר' 168עמ'

Page 23: פרק 5

קישור וטעינה5.3

קריאות התכניתחלוקת התכנית למודולים. כל מודול נבדק בנפרד, הרצת כל המודולים

כתכנית אחת.)Linking(תהליך קישור

תהליך המתרחש לפני ההרצה. מצריך פעולות הכנה ומאפשר למודולים ל"הכיר" אחד את השני ולשתף פעולה אחד עם השני.

תהליך הכנההצהרה על המודולים

הצהרה על המשתנים שעל המודולים להכיר אחד אצל השני.אסמבלי

)linker(תכנית הקישור יוצרת את הקשרים בין המודולים ומאפשרת הרצת התכנית.

Page 24: פרק 5

–EasyCPUתהליך הקישור והטעינה לא קיים ב

Page 25: פרק 5

) loader(תכנית טעינה

תכנית שתפקידה לטעון את התכנית שלנו לזיכרון.

תכנית זו עובדת עם מערכת ההפעלה ותפקידה לאתר מקום בזיכרון מספיק גדול עבור התכנית.

את מען ההתחלה של התכנית יחסית למקטע הקוד, את אזור הנתונים ואת אורך התכנית מקבלת

תכנית הטעינה מתכנית הקישור.

את המען הראשון היא מעבירה לאוגר מקטע הקוד ועכשיו נקבעים המענים המוחלטים בזיכרון

Page 26: פרק 5

) debugger(תכנית ניפוי

מאפשרת לזהות שגיאות זמן ריצה.

אחד מהכלים – צעד אחר צעד.