פרק 5

26
קקק5 קקקקק, קקקקק קקקקקק

Transcript of פרק 5

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

תרגום התווית

תרגיל 5.8 158 'עמ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[00008A 1E 0050

mov cl,bl00048A CB

loop1: inc bl0006FE C3

add cl,bl000802 CB

cmp bl, 10000A80 FB 0A

jbe loop1000D76????

Page 13: פרק 5

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

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

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

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

000010012=92- במשלים 9נהפוך ל

111101101

11110111F7

Page 14: פרק 5

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

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

...

...

continue: dec bl000FFE CB

cmp bl,0001180 FB 00

ja continue001477

...

F9

Page 16: פרק 5

5.11 פתרון תר' 162עמ'

שפת מכונהההוראהמען

0000mov ch,cl8A E9

0002again: add ch,cl02 E9

0004dec blFE CB

0006cmp bl,180 FB

0008ja again76 F8

000Amov ]10[,ch88 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

טבלת מעקבZ[10]תנאיchclblההוראה

53

mov ch,cl5

again:cmp bl,1false0

je found

add ch,cl10

dec bl2

jmp again

again:cmp bl,1false0

je found

add ch,cl15

dec bl1

jmp again

again:cmp bl,1true1

je found

found:mov ]10[,ch15

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)תכנית ניפוי

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

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