Download - 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה
![Page 1: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/1.jpg)
236360*תורת הקומפילציה
הידור, מהדיר, למהדרין.*
שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה.
![Page 2: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/2.jpg)
תורת הקומפילציה
מרצה•דר' איל זקס–
•[email protected]לכלול את מספר הקורס בכותרת ההודעה•שעת קבלה – מיד בתום ההרצאה•
מתרגלים•, מתרגל אחראידני גז–רותם אושמן–
אתר הקורס •http://webcourse.cs.technion.ac.il/236360
![Page 3: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/3.jpg)
בסיס לציונים
- שלושה תרגילים על יבש )מגן(10%•
- מספר תרגילי הרצה30%•
- מבחן סוף הקורס60%•
![Page 4: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/4.jpg)
ספרות
ספר עיקרי•A.V. Aho, R. Sethi, and J.D. Ullman – “Compilers – Principles, Techniques, and Tools”, Addison-Wesley, 1985
ספר משני•R. Wilhelm, and D. Maurer – “Compiler Design”, Addison-Wesley, 1995
![Page 5: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/5.jpg)
ספרות-המשךספר נוסף•
K.D.Cooper and L.Torczon
“Engineering A Compiler”, Morgan Kaufmann, 2004
![Page 6: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/6.jpg)
הידור – נושא מורכב
קומפילציה
תכנות שפות
תכנה הנדסת
מחשבים מבנה
הפעלה מערכותפורמליות שפות
אלגוריתמים
נתונים מבני
![Page 7: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/7.jpg)
הידור – מושגי יסוד
זמן קומפילציה•
זמן ריצה•
compilersource program target program
target program
outputinput
![Page 8: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/8.jpg)
שיטות הידור – שימושים
יעד ,SPARC, P690קוד מכונה: •
IA32שפת אסמבלי• Javaקוד עבור אינטרפרטר: •
Virtual Machine, P-Code… , ,PostScriptשפות עבוד טקסט: •
TeX, html, RTF … ,תוכנה למכשור•
קלט ,C, Pascalשפות תכנות:•
Assembler ..., ,PostScriptשפות לעיבוד טקסט:•
TeX, html, RTF …, ,scripting: C-shell, emacsשפות •
perl, Hypercard…,שפות שאילתה לעבוד נתונים •
(SQL)(VHDLשפות לתאור חומרה )•שפות בקרה•
![Page 9: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/9.jpg)
ההקשר הרחב – שרשרת כלים( tool chain:לרוב ,)
Skeletal source program
Preprocessor
Source program
Target assembly program
Assembler
Relocateable machine code
Loader/Link-editor
Absolute machine code
compiler
Library, releasable, object files
![Page 10: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/10.jpg)
אינטרפרטציה = פרשנות
interpreter
source program
input
output
![Page 11: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/11.jpg)
הידור / אינטרפרטציה – הכללות
•Just In Time ,תוך כדי פרשנות התכנית -- מבצע קומפילציה של חלקי תוכנית על interpreterה-
Java מנת שהמשך הביצוע יהיה מהיר יותר. דוגמא: •Source to Source
•Virtual Machine
•Pre-processors
Eiffel program C programtranslator
Java bytecodeJava program compiler
“pure” programprogram with embeddedpre-pocessing statements(e.g., #include in C, macros)
preprocessor
![Page 12: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/12.jpg)
קומפילציה – חשיבות התחוםלמפתחי תוכנה•
הבנה מעמיקה מה יעשה קומפיילר עם התוכנה שלכם–)שיפור ריצתה, התראת שגיאותיה(
שימוש יעיל בשפת תכנות, ובארכיטקטורת המחשב–ניצול כלים קיימים, כגון לקריאת קבצי קלט )קבצי –
קונפיגורציה ואילך(לאנשי שפות תכנות•
תמיכה יעילה בשפה חדשה–לאנשי ארכיטקטורה של מחשבים•
הבנה מעמיקה מה יעשה קומפיילר/תוכנה עם החומרה –שלכם
לסטודנטים בפקולטה למדעי המחשב•חובה להשלמת התואר–
![Page 13: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/13.jpg)
תורת הקומפילציה – תכנים עיקריים
עקרונות•מבנה הקומפיילר•(lexical analysisניתוח מילוני )•(parsingניתוח תחבירי )•ניתוח סמנטי•יצירת קוד•נושאים מתקדמים:•
אופטימיזציה–ניתוח סטטי––Data-flow analysisVirtual Machines ו-Just-In-Timeקומפיילרים –
![Page 14: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/14.jpg)
קומפיילר של...
סקירה זריזה של שפות תכנות עיקריות
![Page 15: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/15.jpg)
למימוש שפה בבחירת שיקוליםהשימוש • תחום
המתאימה – למשימה הנכון הכלי–" טובה " הכי השפה אין
התוכנה • יעילותהפיתוח • משך
כתיבת התכנית–הידור, בדיקה, וניפוי טעויות–)לימוד, אימון(–
תחזוקה•קריאות התכנית–
קודמים • מימושים זמינות
![Page 16: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/16.jpg)
FORTRAN, 1954-58, John Backus )IBM(
תחום: חישוב מדעי•אפיונים•
ביטויים אריתמטיים–מערכים חסומים–פרוצדורות––common blocks – call by referenceקלט / פלט –
מודל מימוש•דרישות שטח קבועות מראש–דגש על אופטימיזציה של חישובים נומריים–
עדיין בשימוש•
![Page 17: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/17.jpg)
ALGOL 60, 57-60 Committee )Backus, McCathy, Naur, …(
תחום: חישוב נומרי•אפיונים•
BNFהוגדר בקפידה – התחביר הוגדר ע"י –מבנה בלוקים–פרוצדורות רקורסיביות–הגדרה מפורשת של טיפוסים–scopingחוקי – by name ו- &by valueהעברת פרמטרים ––dynamic array bounds
שימושים•מעט, בעיקר באירופה–
השפעה רבה על התחום )על שפות מאוחרות יותר(•
![Page 18: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/18.jpg)
Pascal etc., 1971 )Niklaus Wirth(
תחום: חישובים כללים, חינוך•אפיונים•
פשטות במימוש ובשפה–הגדרות של טיפוסים רבים–מתודולוגיה של תכנות מובנה–מתאים להוכחת נכונות של תכניות–
דיאלקטים שונים•–Modula-2 1970-81–Oberon, Oberon-2 1988-90, 1992–Modula-3 1988-89
![Page 19: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/19.jpg)
COBOL 1959-61 DOD-led committee
תחום: עבוד נתונים•אפיונים•
תיאור ניפרד לנתונים–recordsמבנה נתונים של –תיאור קבצים ופעולות עליהם–תחביר דמוי אנגלית–
עדיין בשימוש נרחב•
![Page 20: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/20.jpg)
C, 1972-1974, Dennis Ritchie )Bell Labs(
Unix kernelתחום: תכנות מערכות )תכנות ה- •והשירותים הנלווים(
אפיונים•כר נרחב של פעולות–תחביר תמציתי–תמיכה בגישה למשאבי המכונה–
בשימוש נרחב בכל תחום כמעט•שפה פופולרית מאוד•
![Page 21: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/21.jpg)
C++, 1980-, Bjarne Stroustrup
תחום: תכנות מערכות אבל גם פיתוח •שימושים
אפיונים•Cהרחבה של – abstractתמיכה עבור טיפוסים אבסטרקטיים )–
data types)מונחת עצמים–שפה עשירה ומסובכת–
בשימוש נרחב•יותר נזק מתועלת?•
![Page 22: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/22.jpg)
Java, 1995-, Arnold & Gosling )Sun(
תחום: מגוון רחב של שימושים, עם דגש על •ניצול תשתיות תקשורת
אפיונים• garbageניהול אוטומטי של הזכרון )–
collection)(JVMאי-תלות בחומרה )–
בשימוש נרחב•
![Page 23: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/23.jpg)
LISP, 1959-60, John McCarthy )MIT(
תחום: בינה מלאכותית וחישובים סימבוליים•אפיונים•
(list processingעיבוד רשימות )–תחביר פשוט–תכניות יכולות בקלות לנתח תכניות אחרות–טיפוסים דינאמיים–
( Common Lisp, Schemeוריאציות רבות )•
![Page 24: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/24.jpg)
Prolog, 1972, Colmerauer and Kowalski
שפת תכנות "לוגית"•
היוותה בסיס למחקר נרחב•ביפן פרוייקט "הדור החמישי"–SQLמסדי נתונים רלציוניים, –
בשימוש מועט•
Datalogהובילה לשפות לוגיות אחרות – כגון •
![Page 25: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/25.jpg)
מבנה הקומפיילר – תמונה כללית
Wilhelm and Maurer – Chapter 6
Aho, Sethi, and Ullman – Chapter 1
Cooper and Torczon – Chapter 1
![Page 26: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/26.jpg)
קומפיילר – כקופסא שחורה
target code
int a, b;a = 2;b = a*2 + 1;
SET R1,2STORE #0,R1SHIFT R1,1STORE #1,R1ADD R1,1STORE #2,R1
source code
![Page 27: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/27.jpg)
קומפילר – מבנה סכמתי
תוכנית מקור
תוכנית מטרה
analysis
code optimization
code generation
האמיתי בעולם הקשה החלק
טבלת סמלים ייצוג ביניים +
ביניים ייצוג
" " בקורס לסטודנטים קשה ה החלק
![Page 28: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/28.jpg)
Intermediate Representationייצוג ביניים -
הניתוח מייצר קוד בשפה נמוכה מאוד•מכילה בד"כ רק השמה, אריתמטיקה )פעולה אחת –
( וקפיצה מותניתgotoבשורה!(, קפיצה )
משמשת כבסיס לייצור קוד מכונה•
כל שורה מכילה פקודה אחת•
אין ביטויים מורכבים•
![Page 29: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/29.jpg)
טבלת הסמלים בתוכניתסמלכוללת שורה עבור כל •
שמות משתנים, מחלקות, פונקציות, פרוצדורות, מתודות, –ועוד – תלוי בשפת התכנות
מידע רלוונטי לכל סמל•טיפוס )עבור משתנים, פונקציות(–ערך )עבור קבועים(–פרמטרים וטיפוסיהם )עבור פונקציות, פרוצדורות, מתודות(–וכדומה–
קיים בעיקר בזמן הקומפילצייה•, אוde-buggingקיים בזמן ריצה רק למטרות –( יש Java, C#, Eiffel )כגון Reflectionבשפות עם מנגנוני –
מהמידע גם בזמן ריצה "רגילה"חלק
![Page 30: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/30.jpg)
למשל...
a = 2temp1 = a*2b = temp1 + 1
int a, b;a = 2;b = a*2 + 1;
aint
temp1int
bint
![Page 31: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/31.jpg)
שימוש חוזר במרכיבי הקומפיילר
א ב שפה שפה שפהn
analysis 1 analysis n analysis 2
machine independent optimization
machine dependent optimization
code generation
machine dependent optimization
code generation
mמכונה 1מכונה
…
![Page 32: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/32.jpg)
שימוש חוזר במרכיבי הקומפיילר – GCCלדוגמא בקומפיילר
Cfront end
C++front end
Fortranfront end
Javafront end
Adafront end
...
i386back end
s390back end
rs6000back end
sparcback end
armback end
...
Optimizer )'middle end'(
![Page 33: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/33.jpg)
שימוש חוזר ברכיבים של מישהו אחר
כיום, שפות רבות "חוסכות" את הצורך לכתוב •optimizers טובים במיוחד לפלטפורמות
שונות.
, ומניחים שלכל Cפשוט מתרגמים את הקוד ל-• ראוי לשמו.Cפלטפורמה יש קומפיילר
–"cross-platform assembly"
הוא תהליך קומפילציה...Cגם תרגום לשפת •
גם כאן יש מקום לאופטימיזציות.•
![Page 34: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/34.jpg)
קומפילר – מבנה סכמתי
תוכנית מקור
תוכנית מטרה
analysis
machine independent optimization
machine dependent optimization
code generation
front end
back end
![Page 35: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/35.jpg)
front endשלב הניתוח –
תוכנית מקור
Back end
lexical analysis
syntax analysis
semantic analysis
token stream
syntax tree
decorated syntax tree
scanner
parser
![Page 36: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/36.jpg)
![Page 37: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/37.jpg)
אנליזה של ביטוי
![Page 38: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/38.jpg)
Abstract Syntax Tree – AST
![Page 39: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/39.jpg)
Decorated/Annotated AST
![Page 40: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/40.jpg)
כפל משמעות
של הביטוי:ASTאיך נראה ה-•
9-5+2?
![Page 41: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/41.jpg)
9-5+2כפל משמעות:
+
- 2
9 5
-
9 +
25
![Page 42: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/42.jpg)
דקדוקים ומשמעויות
המשמעות ה"נכונה" נבחרת בהתאם לדקדוק•
פעמים רבות ניתן לכתוב את אותם הכללים •בעזרת דקדוקים חד-משמעיים או דו-משמעיים
נחשו מה עדיף.–
מציאותיות( לשפות מורכבות מאוד )קרי:•בדרך-כלל אין דקדוק חד-משמעי
או שהוא מורכב להחריד.–יש פתרונות אחרים לדו-משמעויות...–
![Page 43: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/43.jpg)
שלב האופטימיזציה
Decorated Syntax Tree
Decorated Syntax Tree
machine independent optimization
דוגמאות•–constant propogation–common subexpression elimination–dead code elimination
איזון בין זמן קומפילציה לזמן ריצה•
![Page 44: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/44.jpg)
back-end)שלב הסינתזה )
decorated syntax tree
decorated syntax tree
target program
target program
address assignment
code generation
machine dependent optimizationpeephole optimizer
![Page 45: 236360 תורת הקומפילציה * * הידור, מהדיר, למהדרין. שקפי הקורס מבוססים על שקפים מאת פרופ' מיכאל רודה](https://reader031.vdocuments.net/reader031/viewer/2022012404/56649d6b5503460f94a497ba/html5/thumbnails/45.jpg)
, דוגמאback-endה- a = 2temp1 = a*2b = temp1 + 1
addressassignment
machine indep.optimization
machine-dependent
optimization
a0temp1 1
b2a = 2temp1 = a << 1b = temp1 + 1
SET R1,2STORE #0,R1LOAD R1,#0SHIFT R1,1STORE #1,R1LOAD R1,#1ADD R1,1STORE #2,R1
int a, b;a = 2;b = a*2 + 1;
SET R1,2STORE #0,R1SHIFT R1,1STORE #1,R1ADD R1,1STORE #2,R1
)front end(
codegeneration