Date post: | 21-Dec-2015 |
Category: |
Documents |
View: | 261 times |
Download: | 2 times |
תורת הקומפילציה
מרצה•ד"ר שירלי גינסברג–
•[email protected] טאוב 9:30-10:30ני שעת קבלה – יום ש•
מתרגלים•, מתרגלת אחראיתרותם אושמן–ץסיוון ברקובי–אלכס קוגן–
לוגיסטיקה
- תרגילי בית25%• תרגילים "יבשים", רשות )מגן(5%– תרגילים "רטובים", חובה20%–
-- מבחן סוף הקורס75%•
ציון נכשל במבחן גורר כשלון בקורס, ללא קשר •לציון התרגילים.
ספרות
ספר עיקרי•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
ספרות-המשךספר נוסף•
K.D.Cooper and L.Torczon
“Engineering A Compiler”, Morgan Kaufmann, 2004
הידור – נושא מורכב
קומפילציה
תכנות שפות
תכנה הנדסת
מחשבים מבנה
הפעלה מערכותפורמליות שפות
אלגוריתמים
נתונים מבני
הידור – מושגי יסוד
זמן קומפילציה•
זמן ריצה•
compilersource program target program
target program
outputinput
שיטות הידור – שימושים
יעד ,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שפות לתאור חומרה )•שפות בקרה•
ההקשר הרחב – דוגמא
Skeletal source program
Preprocessor
Source program
Target assembly program
Assembler
Relocateable machine code
Loader/Link-editor
Absolute machine code
compiler
Library, releasable, object files
שרשרת כלים
אינטרפרטציה = פרשנות
interpreter
source program
input
output
הידור / אינטרפרטציה – הכללות
•Just In Time ,תוך כדי פרשנות התכנית -- מבצע קומפילציה של חלקי תוכנית על interpreterה-
Javaמנת שהמשך הביצוע יהיה מהיר יותר. דוגמא: •Source to Source
•Virtual Machine
•Pre-processors
C ++ program C programtranslator
Java bytecodeJava program compiler
“pure” programprogram with embeddedpre-pocessing statements(e.g., #include, macros)
preprocessor
קומפילציה – חשיבות התחוםלפיתוח שמושים מתקדמים•
ניצול של כלים לפיתוח קומפיילרים להקלת מאמץ הפיתוח–כל מה שצריך לקרוא קובץ קלט )קבצי קונפיגורציה ואילך(–
למפתחי תוכנה•הבנה מעמיקה של האבחנה בין זמן קומפילציה לזמן ריצה–הבנה מעמיקה מה יעשה קומפיילר עם התוכנה שלכם–
)שיפור ריצתה, התראת שגיאותיה(שימוש נכון במבנים שונים של שפות התכנות–ניצול נכון של ארכיטקטורת המחשב–
קומפילציה – חשיבות התחום
לאנשי שפות תכנות•תמיכה יעילה בשפה חדשה–
לאנשי ארכיטקטורה של מחשבים•הבנה טובה של האיזון העדין שבין חומרה –
לתכנהמה הבנה מעמיקה מה יעשה קומפיילר )כלומר:–
תעשה כל תוכנה( עם החומרה שלכם
לסטודנטים בפקולטה למדעי המחשב•חובה להשלמת התואר–
תורת הקומפילציה – תכנים עיקריים
עקרונות•מבנה הקומפיילר•(lexical analysisניתוח מילוני )•(parsingניתוח תחבירי )•ניתוח סמנטי•יצירת קוד•נושאים מתקדמים:•
אופטימיזציה–ניתוח סטטי––Data-flow analysisVirtual Machines ו-Just-In-Timeקומפיילרים –קומפיילרים "פתוחים"–
מבנה הקומפיילר – תמונה כללית
Wilhelm and Maurer – Chapter 6
Aho, Sethi, and Ullman – Chapter 1
Cooper and Torczon – Chapter 1
קומפיילר – כקופסא שחורה
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
קומפיילר – מבנה סכמתי
תוכנית מקור
תוכנית מטרה
analysis
code optimization
code generation
" הלב"
יצוג ביניים
ביניים יי צוג
קומפיילר – מבנה סכמתי
תוכנית מקור
תוכנית מטרה
analysis
machine independent optimization
machine dependent optimization
code generation
" הלב"
front end
back end
שימוש במרכיבי הקומפיילר
א ב שפה ...שפה
analysis 1 analysis n analysis 2
machine independent optimization
machine dependent optimization
code generation
machine dependent optimization
code generation
mמכונה 1מכונה
…
front endשלב הניתוח –
בקומפיילרים רבים השלבים במסומנים בקו מרוסק משולבים זה בזה•decorated syntax treeבקומפיילרים רבים ייצוג הביניים הוא •
תוכנית מקור
תוכנית מטרה
lexical analysis
screening
syntax analysis
semantic analysis
symbol string
token string
syntax tree
decorated syntax tree
scanner
screener
parser
אנליזה של ביטוי
Abstract Syntax Tree – AST
Decorated/Annotated AST
מבנה הקומפיילר
שלב האופטימיזציה
Decorated Syntax Tree
Decorated Syntax Tree
machine independent optimization
דוגמאות•–constant propogation–common subexpressions–dead code elimination
back-endשלב הסינתזה ))
decorated syntax tree
decorated syntax tree
target program
target program
address assignmet
code generation
machine dependent optimizationpeephole optimizer
, דוגמא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