Download presentation
Presentation is loading. Please wait.
1
תורת הקומפילציה מרצה –ד"ר שירלי גינסברג shirleyh@cs.technion.ac.il שעת קבלה – יום שני 9:30-10:30 טאוב 318 מתרגלים –רותם אושמן, מתרגלת אחראית –סיוון ברקוביץ –אלכס קוגן
2
לוגיסטיקה 25% - תרגילי בית –5% תרגילים "יבשים", רשות (מגן) –20% תרגילים "רטובים", חובה 75% -- מבחן סוף הקורס ציון נכשל במבחן גורר כשלון בקורס, ללא קשר לציון התרגילים.
3
ספרות ספר עיקרי 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
4
ספרות-המשך ספר נוסף K.D.Cooper and L.Torczon “Engineering A Compiler”, Morgan Kaufmann, 2004
5
הידור – נושא מורכב קומפילציה שפות תכנות הנדסת תכנה מבנה מחשבים מערכות הפעלה שפות פורמליות אלגוריתמים מבני נתונים
6
הידור – מושגי יסוד זמן קומפילציה זמן ריצה compiler source programtarget program target program outputinput
7
שיטות הידור – שימושים יעד קוד מכונה: 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) שפות בקרה
8
ההקשר הרחב – דוגמא Skeletal source program Preprocessor Source program Target assembly program Assembler Relocateable machine code Loader/Link-editor Absolute machine code compiler Library, releasable, object files שרשרת כלים
9
אינטרפרטציה = פרשנות interpreter source program input output
10
הידור / אינטרפרטציה – הכללות Just In Time -- תוך כדי פרשנות התכנית, ה- interpreter מבצע קומפילציה של חלקי תוכנית על מנת שהמשך הביצוע יהיה מהיר יותר. דוגמא: Java Source to Source Virtual Machine Pre-processors C ++ program C program translator Java bytecodeJava program compiler “pure” program program with embedded pre-pocessing statements (e.g., #include, macros) preprocessor
11
קומפילציה – חשיבות התחום לפיתוח שמושים מתקדמים –ניצול של כלים לפיתוח קומפיילרים להקלת מאמץ הפיתוח –כל מה שצריך לקרוא קובץ קלט (קבצי קונפיגורציה ואילך) למפתחי תוכנה –הבנה מעמיקה של האבחנה בין זמן קומפילציה לזמן ריצה –הבנה מעמיקה מה יעשה קומפיילר עם התוכנה שלכם (שיפור ריצתה, התראת שגיאותיה) –שימוש נכון במבנים שונים של שפות התכנות –ניצול נכון של ארכיטקטורת המחשב
12
קומפילציה – חשיבות התחום לאנשי שפות תכנות –תמיכה יעילה בשפה חדשה לאנשי ארכיטקטורה של מחשבים –הבנה טובה של האיזון העדין שבין חומרה לתכנה –הבנה מעמיקה מה יעשה קומפיילר (כלומר: מה תעשה כל תוכנה) עם החומרה שלכם לסטודנטים בפקולטה למדעי המחשב –חובה להשלמת התואר
13
תורת הקומפילציה – תכנים עיקריים עקרונות מבנה הקומפיילר ניתוח מילוני (lexical analysis) ניתוח תחבירי (parsing) ניתוח סמנטי יצירת קוד נושאים מתקדמים: –אופטימיזציה –ניתוח סטטי –Data-flow analysis –קומפיילרים Just-In-Time ו-Virtual Machines –קומפיילרים "פתוחים"
14
מבנה הקומפיילר – תמונה כללית Wilhelm and Maurer – Chapter 6 Aho, Sethi, and Ullman – Chapter 1 Cooper and Torczon – Chapter 1
15
קומפיילר – כקופסא שחורה target code int a, b; a = 2; b = a*2 + 1; SET R1,2 STORE #0,R1 SHIFT R1,1 STORE #1,R1 ADD R1,1 STORE #2,R1 source code
16
קומפיילר – מבנה סכמתי תוכנית מקור תוכנית מטרה analysis code optimization code generation "הלב" יצוג ביניים י י צוג ביניים
17
קומפיילר – מבנה סכמתי תוכנית מקור תוכנית מטרה analysis machine independent optimization machine dependent optimization code generation "הלב" front end back end
18
שימוש במרכיבי הקומפיילר שפה א שפה ב... analysis 1 analysis n analysis 2 machine independent optimization machine dependent optimization code generation machine dependent optimization code generation מכונה 1מכונה m …
19
front end – שלב הניתוח בקומפיילרים רבים השלבים במסומנים בקו מרוסק משולבים זה בזה בקומפיילרים רבים ייצוג הביניים הוא decorated syntax tree תוכנית מקור תוכנית מטרה lexical analysis screening syntax analysis semantic analysis symbol string token string syntax tree decorated syntax tree scanner screener parser
21
אנליזה של ביטוי
22
Abstract Syntax Tree – AST
23
Decorated/Annotated AST
24
מבנה הקומפיילר
25
שלב האופטימיזציה Decorated Syntax Tree machine independent optimization דוגמאות –constant propogation –common subexpressions –dead code elimination
26
שלב הסינתזה ((back-end decorated syntax tree decorated syntax tree target program address assignmet code generation machine dependent optimization peephole optimizer
27
ה- back-end, דוגמא a = 2 temp1 = a*2 b = temp1 + 1 address assignment machine indep. optimization machine-dependent optimization a 0 temp1 1 b 2 a = 2 temp1 = a << 1 b = temp1 + 1 SET R1,2 STORE #0,R1 LOAD R1,#0 SHIFT R1,1 STORE #1,R1 LOAD R1,#1 ADD R1,1 STORE #2,R1 int a, b; a = 2; b = a*2 + 1; SET R1,2 STORE #0,R1 SHIFT R1,1 STORE #1,R1 ADD R1,1 STORE #2,R1 (front end) code generation
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.