הטכניון מכון טכנולוגי לישראל תורת הקומפילציה , סמסטר חורף תשע"ו מבחן סוף סמסטר מועד א' מרצה אחראי: מתרגלים: ד ר אוהד שחם אבנר אליזרוב

מסמכים קשורים
הטכניון מכון טכנולוגי לישראל תורת הקומפילציה , סמסטר חורף תשע"ז מבחן סוף סמסטר מועד ב' מרצה אחראי: מתרגלים: ד ר אוהד שחם אבנר אליזרוב

Microsoft Word Viewer - Winter0708-MoedC.doc

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

מהוא לתכנות ב- JAVA מעבדה 3

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

מבוא למדעי המחשב - חובלים

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

סדנת תכנות ב C/C++

שאלהIgal : מערכים דו מימדיים רקורסיה:

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

Slide 1

ex1-bash

Microsoft Word B

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

תרגול 1

מבוא למדעי המחשב - חובלים

מקביליות

PowerPoint Presentation

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

הגשה תוך שבוע בשעת התרגול

שאלהIgal : מערכים דו מימדיים רקורסיה:

Slide 1

Microsoft Word - c_SimA_MoedB2005.doc

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

מבוא לתכנות ב- JAVA תרגול 7

Microsoft Word - Ass1Bgu2019b_java docx

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

PRESENTATION NAME

מבוא למדעי המחשב

Tutorial 11

מבוא לתכנות ב- JAVA תרגול 11

מקביליות

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

תורת הקומפילציה

מבוא למדעי המחשב

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

PowerPoint Presentation

מבוא לאסמבלי

Slide 1

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

Microsoft Word - ExamA_Final_Solution.docx

תרגול 1

תכנות מונחה עצמים א' – תש"ע

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

מקביליות

Microsoft PowerPoint - rec3.ppt

שעור 6

HTML - Hipper Text Makeup Language

Slide 1

מבוא למדעי המחשב

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

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

הגשה תוך שבוע בשעת התרגול

תכנון אלגוריתמים עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 02: , בצהריים,תא מספר 66 בקומת כניסה של בניין 003 מתרגל אחראי: אורי 0

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

Slide 1

Slide 1

PowerPoint Presentation

Microsoft PowerPoint - Lecture1

Slide 1

מטלת מנחה (ממ"ן) 11 הקורס: חשבון אינפיניטסימלי II חומר הלימוד למטלה: יחידות 2,1 4 מספר השאלות: 7 משקל המטלה: נקודות סמסטר: ב 2007 מו

PowerPoint Presentation

תרגיל בית מספר 1#

מתכונת עיצוב 3013

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

Microsoft PowerPoint - lec10.ppt

שיעור 1

Microsoft PowerPoint - lec2.ppt

אנליזה מתקדמת

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

תוכן העניינים

Slide 1

מועד: א בחינה סופית במתמטיקה דיסקרטית משך הבחינה: 2 1 שעות מרצה: פרופ' תאופיק מנסור תאריך: סמסטר: א תשע"ח m 2 הוראות לנבחן: )1( הבחינה מו

Homework Dry 3

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

אוניברסיטת בן-גוריון המחלקה למדעי המחשב בוחן במבנים בדידים וקומבינטוריקה פרופ' מתיא כ"ץ, ד"ר עופר נימן, ד"ר סטוארט סמית, ד"ר נתן רובין, גב'

PowerPoint Presentation

Slide 1

PowerPoint Presentation

מבוא למדעי המחשב

. שאלה 1: ה אי x] T : R 4[ x] R 4[ אופרטור ליניארי מוגדר על-ידי T( ax bx cx d) bx ax cx c )13 נק'( א( מצאו את הערכים העצמיים, המרחבים העצמיים

Slide 1

מבוא למדעי המחשב

Microsoft Word - c_SimA_MoedA2006.doc

מספר נבחן / תשס"ג סמסטר א' מועד א' תאריך: שעה: 13:00 משך הבחינה: 2.5 שעות בחינה בקורס: מבחנים והערכה א' מרצה: ד"ר אבי אללוף חומר עזר

Microsoft PowerPoint - rec1.ppt

תמליל:

30.1.2017 מבחן סוף סמסטר מועד א' מרצה אחראי: מתרגלים: ד ר אוהד שחם אבנר אליזרוב מיכל בדיאן הילה פלג עידן שורץ הוראות: א. בטופס המבחןX עמודים מהם 4 דפי נוסחאות. בדקו שכל העמודים ברשותכם. ב. ג. ד. ה. ו. ז. ח. ט. משך המבחן שלוש שעות )180 דקות(. אסור כל חומר עזר פרט לדף הנוסחאות המצורף לבחינה. במבחן 5 שאלות. כל השאלות הינן חובה. משקל כל שאלה מופיע בראשיתה. )חלוקת המשקל בין הסעיפים בכל שאלה אינה בהכרח אחידה.( ניתן לציין לגבי סעיף או שאלה "לא יודע/ת". תשובה זו תזכה ב- 20% מהניקוד של הסעיף או השאלה. תשובות שגויות לא יזכו בניקוד. חובה לנמק כל תשובה. לא יינתן ניקוד על תשובות ללא נימוק. קראו את כל המבחן לפני שאתם מתחילים לענות על השאלות. אין צורך להגיש את הטופס בתום הבחינה. את התשובות לשאלות יש לרשום במחברת הבחינה בלבד. בהצלחה!

שאלה )12 1 נק'(:סיווג מאורעות לפניכם מס' שורות המכילות נתוני סטודנטים ממוסד אקדמי מוכר. השורות יכילו את שם הפקולטה ולאחר מכן את שמות התלמידים מאותה פקולטה. העמודה הראשונה מציינת את שם הסטודנט, העמודה השנייה את תאריך הבחינה, העמודה השלישית את המקצוע והרביעית את הציון בבחינה. כל עמודה מופרדת בסימן ',' ולאחריו רווח. CS Students David Cohen, 29.01.17, Compilation, 80 David Cohen, 29.02.16, Theory of computation, 95 EE Students Shani Sitbon, 29.01.17, Compilation, 80 Shani Sitbon, 11.03.15, Human-Computer Interfaces, 60 Shani Sitbon, 29.02.16, Compilation, 85 ברצוננו להשתמש בידע שרכשנו בקורס קומפילציה כדיי לבצע מספר פעולות עיבוד על הקלט. להזכירכם למדנו על מספר שלבים בתהליך הקומפילציה: השלב הסמנטי, השלב התחבירי השלב הסמנטי ושלב האופטימיזציה. נמקו בקצרה מהו השלב הכי מוקדם אשר יתאים לכל פעולה ובעזרת איזה כלי שלמדנו) bison )flex, תבצעו זאת. 1. ברצוננו להדפיס ממוצע של כל סטודנט )עם הציון האחרון במקצוע(, הפלט הרצוי CS Students David Cohen, 87.5 EE Students Shani Sitbon, 80 ברצוננו לבדוק שהתאריך בעמודה השנייה תקין. ברצוננו לבדוק שהקובץ מכיל לפחות סטודנט אחד לכל פקולטה המצוינת בקובץ. בקובץ הנ"ל' מצוינות הפקולטות CS וEE. ברצוננו לבדוק שהשמות מסודרים בסדר לקסיקוגרפי עולה. ברצוננו לבדוק שכל פקולטה מכילה מספר זוגי של סטודנטים. ברצוננו להדפיס קובץ נקי המכיל רק את הציון האחרון של כל סטודנט במקצוע. הפלט הרצוי CS Students David Cohen, 29.01.17, Compilation, 80 David Cohen, 29.02.16, Theory of computation, 95 EE Students Shani Sitbon, 29.01.17, Compilation, 80 Shani Sitbon, 11.03.15, Human-Computer Interfaces, 60.2.3.4.5.6

שאלה (30 2 נק'(: רשומות הפעלה ופעולות וקטוריות בשאלה זו נגדיר מנגנון חדש המאפשר הרצת פרוצדורות במקביל. המקבילות תתבצע על ידי חוט יחיד אבל סדר פקודות הפרוצדורות שקול להרצת הפרוצדורות במקביל ותוחלט על ידי הקומפיילר. נתונה הדוגמא הבאה: void sum (int *x, int y, int z) { *x = y + z; void sumarray(int *x, int *y, int *z) { for (int i=0; i < N; i+=4) { par4( sum(x+i, y[i]], z[i]), sum(x+i+1, y[i+1]], z[i+1]), sum(x+i+2, y[i+2]], z[i+2]), sum(x+i+3, y[i+3]], z[i+3]) ); הפקודה par4 מריצה 4 פרוצדורות sum במקביל. כיצד היית תומכת בפקודה זו? התמיכה חייבת להתבצע על ידי קריאה אחת לפרוצדורה שתבצע את כל הרצות.sum נמקי מה היית משנה במנגנון רשומות ההפעלה. מה היתרון בשימוש ב par4 על פני הרצת הפרוצדורות אחת אחרי השניה. נניח שהארכיטקטורה כוללת רגיסטרים וקטוריים של 128 ביט. כיצד היית משנה את מימוש sum שתתמוך בפעולות וקטוריות? מה היית משנה בתשובה שנתת בסעיף 1 בשביל להשתמש בפונקציה הוקטורית ביעילות? במידה ולא היית משנה כלום, נמקי מדוע. הסבירי איזה פעולה נדרשת עבור ויקטור התוכנית הבאה. )1 )2 )3 )4 void sum (int *x, int y, int z) { if (y > 0 && z > 0) { *x = y + z;

שאלה )21 3 נקודות( אופטימיזציה ו DFA )6 נקודות( בהינתן קטע הקוד הבא, הציעו 3 אופטימיזציות אשר אפשריות בשלב הקומפילציה. ניתן להניח שקוד הביניים ייכתב בפקודות שאתם מכירים בלבד אך אין צורך לכתוב אותו. כתבו את מספר השורה, שם האופטימיזציה והסבירו את השינוי. א( 1. void print (int N, int M) 2. { 3. if(n<3 M<3) return; 4. int i; 5. int x,y; 6. int s=0; 7. char * first_name = Michal ; 8. char * last_name = Hila ; 9. for(i=2; i<m; i+=2) 10. { 11. s=5*i; 12. printf( %d,s); 13. 14. y = 6*2 + M; 15. if (false) 16. printf(%s,first_name); 17. else 18. printf(%s,last_name); 19.

)15 נקודות( נתונה פקודה "סימון" חדשה מהצורה.tag(p,k) עבור פקודה זו, p הוא שם של משתנה ו k הוא הגודל שלו אשר קבוע וידוע בזמן קומפילציה. כמו כן נתון ערך M קבוע וידוע מראש. נאמר שמשתנה x עדיין מסומן בשורה מסוימת בתוכנית, אם קיים מסלול מפקודת הסימון לשורה הזו כך ש: a. כל פקודות הסימון עבור המשתנה שהיו לאורך המסלול k_n) tag(x, 1_k ), tag(x, מקיימות.k_1 + + k_n M b. השמה מחדש למשתנה מוחקת את הסימון. ב( למשל בקטע הקוד הבא: נתון = 32.M 1. b:=0 2. p=3 3. tag(p,8) 4. tag(r,4) 5. if(b>0) { 6. tag(p,30) 7. tag(p,30) 8. r=2 9. print(a) 10. בשורה 5, המשתנים p ו r מסומנים. בשורה 6 המשתנה r מסומן. בשורה 7 המשתנה r ו p מסומנים. בשורה 8 המשתנה p מסומן. הראו אנליזת DFA המחשבת לכל בלוק בסיסי את קבוצת המשתנים המסומנים. הערות: ניתן להגדיר שורה בודדת כבלוק בסיסי. יורדו נקודות על אי הגדרה מלאה של DFA כפי שנלמד בתרגול. יש לציין מהם פריטי המידע, האם האנליזה היא must/may, האם היא קדמית או אחורית, ושאר פרמטרי DFA כפי שנלמדו בכיתה. - -

שאלה )22 4 נק'(: ניתוח תחברי או סמנטי נתון הדקדוק )החלקי( הבא עבור שפת תכנות. ניתן להניח כי החלק החסר הוא statements בלבד: מבני בקרה נוספים, השמות למשנים, וכד'. האסימונים עבור BINOP ו- RELOP מוגדרים כולם כבעלי אסוציאטיביות שמאלית. דקדוק זה מאפשר לגזור את הפקודה הבאה: E -> E BINOP E E -> E RELOP E E -> E LOGOP E E -> id num true false BINOP -> + - RELOP -> ==!= < > <= >= LOGOP -> && TYPE -> int bool S -> TYPE id; S -> if (E) then S; S -> print string; if (4 < x < 6) then print "five"; if (num < id < num) then print string; הביטוי בתנאי מבצע את > על מספר וביטוי בוליאני ועל כן נכשל בבדיקת הטיפוסים של השפה. א( )8 נקודות( מפתחי השפה מעוניינים לחסוך לעצמם את הצורך לבצע את בדיקת הטיפוסים ולכן רוצים לחסום אפשרות זו בדקדוק עצמו. האם ניתן לבצע זאת ברמת הדקדוק? אם כן, הראו את הדקדוק המתוקן. אם לא, נמקו מדוע. ב( )8 נקודות( האם ניתן לבצע זאת על ידי תכונות נורשות? אם כן, הראו את התכונות והסבירו את אופן חישובן ופעולתן. אם לא, נמקו מדוע. ג( )6 נקודות( )סעיף זה אינו תלויי בסעיפים הקודמים( האם ייתכנו שני המצבים הבאים של מחסנית הריצה כמצבים עוקבים בדקדוק?LR(1) אם כן, הראו דקדוק LR(1) והציגו ריצה זאת. אם לא, נמקו מדוע. n) (0,)(1,A)(2,b) n+1) (0,)(1,A)(2,b)(3,B)

15( נקודות(: Backpatching שאלה 5 SL SL ; S S נתון מבנה הבקרה הבא: S break; S > for ( S1 ; B ; S2 ) { SL המבנה זהה ללולאת for המוכרת מרוב שפות התכנות מבצעים את S 1 כל עוד התנאי B מתקיים.statement מבצעים את רשימת ה o מבצעים את S 2 o אם יש פעולת break יוצאים מהלולאה לגמרי ללא צורך בעוד עדכונים. לדוגמא, עבור הקוד הבא המשתנה i יאותחל ב 0 ואז הלולאה תתבצע 5 פעמים שבכל פעם יודפס של באיטרציה הראשונה יודפס 0, אחר כך 1 וכו'. for( int i=0; i< 5 ; i++({ print(i); i ואז יקודם ערכו ב 1. )5 נקודות( הציעו פריסת קוד המתאימה לשיטת backpatching עבור מבנה הבקרה הנ"ל. על הקוד הנוצר להיות יעיל ככל האפשר. הסבירו מהן התכונות שאתם משתמשים לכל משתנה. )10 נקודות( כתבו סכימת תרגום בשיטת backpatching המייצרת את פריסת הקוד שהצעתם בסעיף הקודם. על הסכימה להיות יעילה ככל האפשר, הן מבחינת זמן הריצה שלה והן מבחינת המקום בזיכרון שנדרש עבור התכונות הסמנטיות. א. ב. שימו לב: אין לשנות את הדקדוק אין להשתמש בכללים סמנטיים באמצע כלל גזירה ניתן להשתמש במרקרים N,M שנלמדו בכיתה בלבד. אין להשתמש במשתנים גלובליים בזמן קומפילציה. למשתנים B,S ישנן התכונות שהוגדרו בכיתה בלבד. למשתנים B,S יש כללי גזירה פרט לאלו המוצגים בשאלה. בהצלחה!!

נוסחאות ואלגוריתמים כל ההגדרות מתייחסות לדקדוק( S.G = (V, T, P, first() = { t T * t (VT)* Top Down follow(a) = { t T{$ S$ * At (VT)* (VT)*( $) select(a) = first()follow(a) first() * otherwise הגדרה: דקדוק G הוא ( LL(1 אם ורק אם לכל שני כללים ב- G השייכים לאותו משתנה A מתקיים: select(a) select(a) = הגדרת טבלת המעברים P{error M : V (T{$) עבור דקדוק :LL(1) M[A, t] = A error t select(a ) t select(a ) for all A P Q.push(S) while!q.empty() do X = Q.pop() t = next token if X T then if X = t then SHIFT else ERROR else end if end while t = next token if t = $ then ACCEPT else ERROR // X V if M[X, t] = error then ERROR else REPLACE(X, t) אלגוריתם מנתח :LL(1)

Bottom Up פריט LR(0) הוא ) (A כאשר A P סגור )closure( על קבוצת פריטים I מוגדר באופן אינדוקטיבי:.closure(I) = I בסיס: o (B ) closure(i) גם,B P אז לכל,(A B) closure(i) צעד: אם o פונקציית המעברים של האוטומט: (I, X) = { closure(a X) (A X) I פריט LR(1) הוא t) (A, כאשר t T{$,A P סגור )closure( על קבוצת פריטים I מוגדר באופן אינדוקטיבי:.closure(I) = I בסיס: o o צעד: אם closure(i),(a B, t) אז לכל B P ולכל first(t),x גם (B, x) closure(i) פונקציית המעברים של האוטומט: (I, X) = { closure(a X, t) (A X, t) I SHIFTj (Ii,t) = Ij action[i, t] = REDUCEk rule k is A, (A ) Ii and t follow(a) ACCEPT (S S) Ii and t = $ ERROR otherwise הגדרת טבלת action למנתח :SLR SHIFTj (Ii,t) = Ij action[i, t] = REDUCEk rule k is A and (A, t) Ii ACCEPT (S S, $) Ii and t = $ ERROR otherwise הגדרת טבלת action למנתח :LR(1) הגדרת טבלת goto למנתח SLR ו- :LR(1) goto[i, X] = j error (Ii, X) = Ij otherwise

אלגוריתם מנתח :shift/reduce Q.push(0) // where 0 is the initial state of the prefix automaton while true do k = Q.top().state t = next token do action[k, t] end while ניתוח סמנטי :L-attributed procedure dfvisit(node n) : foreach child m of n in left-to-right order do evaluate the inherited attributes of m dfvisit(m) end evaluate the synthesized attributes of n אלגוריתם dfvisit לניתוח סמנטי עבור הגדרות ייצור קוד בשיטת Backpatching פונקציות: makelist(quad) merge(list1,list2) emit(code string) nextquad() backpatch(list, quad) newtemp() יוצרת רשימה ריקה עם איבר אחד )ה"חור".)quad מחזירה רשימה ממוזגת של הרשימות list1, list2 מדפיסה קוד בשפת הביניים ומאפשרת להדפיס פקודות קפיצה עם "חורים". מחזירה את כתובת הרביעיה )הפקודה( הבאה שתצא לפלט. מקבלת רשימת "חורים" list וכתובת,quad ו"מטליאה" את הרשימה כך שבכל החורים תופיע הכתובת.quad מחזירה שם של משתנה זמני חדש שאינו נמצא בשימוש בתכנית. משתנים סטנדרטיים: S: גוזר פקודות )statements( בשפה. תכונות: :nextlist רשימת כתובות של פקודות המכילות חור שיש להטליא בכתובת הפקודה הבאה o לביצוע אחרי הפקודה הנגזרת מ- S. B: גוזר ביטויים בוליאניים. תכונות: :truelist רשימת כתובות של פקודות המכילות חור שיש להטליא בכתובת אליה יש לקפוץ אם הביטוי הבוליאני מתקיים. o :falselist רשימת כתובות של פקודות המכילות חור שיש להטליא בכתובת אליה יש לקפוץ אם הביטוי הבוליאני אינו מתקיים. o E: גוזר ביטויים אריתמטיים. תכונות: :E.place שם המשתנה הזמני לתוכו מחושב הביטוי האריתמטי. o

קוד ביניים x := y op z x := op y x := y goto L if x relop y goto L param x call p, n return y x := y [ i ] x [ i ] := y x := addr y x := * y * x := y סוגי פקודות בשפת הביניים:. 1 משפטי השמה עם פעולה בינארית 2. משפטי השמה עם פעולה אונרית 3. משפטי העתקה 4. קפיצה בלתי מותנה 5. קפיצה מותנה 6. פרמטרים וקריאה לפרוצדורות indexed assignments.7 8. השמה של כתובות ומצביעים Data-Flow Analysis ההגדרות מתייחסות ל.G=(V,E):CFG in(b) out(b) E f (S,B) B out(s) in(b) in(b) הצורה הכללית של המשוואות בחישוב סריקה קדמית: או (S,B) E out(s) out(b) in(b) f (B,S) E B in(s) out(b) out(b) הצורה הכללית של המשוואות בחישוב סריקה אחורית: או (B,S) E in(s)