fall 2013-2014 compiler principles extending sethi-ullman for a ternary operator

14
Fall 2013-2014 Compiler Principles Extending Sethi-Ullman for a Ternary Operator Roman Manevich Ben-Gurion University

Upload: nina-nicholson

Post on 31-Dec-2015

8 views

Category:

Documents


0 download

DESCRIPTION

Fall 2013-2014 Compiler Principles Extending Sethi-Ullman for a Ternary Operator. Roman Manevich Ben-Gurion University. הנתונים. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

Fall 2013-2014Compiler Principles

Extending Sethi-Ullmanfor a Ternary Operator

Roman ManevichBen-Gurion University

Page 2: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

2

הנתונים-side להקצאת אוגרים לביטויים חסרי Sethi-Ullmanהיזכרי באלגוריתם של

effects( הניתנים ע"י עצי ביטוי AST-בעלי דרגה קטנה או שווה ל )האלגוריתם 2 . על העץ שבו bottom-upעובד בשני שלבים: בשלב הראשון מתבצע מעבר

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

. x?y:zלשפת התכנות הוסיפו אופרטור חדש לשפה בעל שלושה אופרנדים: ואחרת y שונה מאפס ערך הביטוי הוא ערכו של xהמשמעות שלו היא שכאשר

. נרצה להרחיב את אלגוריתם הקצאת האוגרים לטפל באופרטור zהוא ערכו של החדש.

נניח שנתונה לנו שפת ביניים הכוללת את הפקודות הבאות:y לתוך x אשר מעתיקה את mov x,y השמה)y )y := y + x ומאחסנת את התוצאה ב-y מ-x מחברת את add x,y חיבור שמשמעותה זהה לאופרטור שהוגדר למעלה, כאשר ite x,y,z ע"י הפקודה בחירה

)z )z:=x?y:zהתוצאה מאוחסנת ב-כמו-כן, קיימים האילוצים הבאים על האופרנדים של כל פקודה בשפת הביניים.

, iteלפקודות השמה וחיבור, לפחות אחד מהאופרנדים חיי להיות אוגר. בפקודת כל האופרנדים חייבים להיות אוגרים.

Page 3: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

3

' א סעיףאת וסמני אופטימאלית אוגרים הקצאת מצאי הבאים מהביטויים אחד לכל

. הביטוי תוצאת מאוחסנת שבו האוגר ואת צומת בכל הדרוש האוגרים מספר

Page 4: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

4

– ' חלק א 1סעיף

(a?b:c) ? (d?e:f) : (g?h:i) ?

?

a b c

?

d e f

?

g h i

Page 5: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

5

– ' חלק א תשובה - 1סעיף

(a?b:c) ? (d?e:f) : (g?h:i) ?

?

a b c

?

d e f

?

g h i

3 3 3

5

R1 R2 R3

R1

R2 R3 R4

R2

R3 R4 R5

R3

R1

Page 6: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

6

– ' חלק א 2סעיף

(a?b:c) ? (d?e:f) : g?

?

a b c

?

d e f

g

Page 7: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

7

– ' חלק א תשובה - 2סעיף

(a?b:c) ? (d?e:f) : g?

?

a b c

?

d e f

gR1 R2 R3

3 3R1

R2 R3 R4

R2 R3

4 R1

Page 8: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

8

– ' חלק א 3סעיף

(a?b:c) ? ((d+e)+(f+g)) : h

?

?

a b c

+ h

+

d e

+

f g

Page 9: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

9

– ' חלק א תשובה - 3סעיף

(a?b:c) ? ((d+e)+(f+g)) : h

?

?

a b c

+ h

+

d e

+

f g

R1 R2 R3

3 R1

R2

1 1

R3

2 R2 R3

3 R1

R2 R3

Page 10: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

10

– ' לתשובה כללי הסבר א סעיף

. - " הכבדים העצים תת למציאת ניסויים של קטן מספר י ע מתקבלות ההקצאותבפעולת המשתתף אופרנד לכל להקצות האילוץ ) iteדואגים לפי אוגר

אוגר(, מהמשתנים לאחד מקצים משתנים מעל חיבור ולפעולות שבשאלה .) אוגר) שאינו יחיד אופרנד מרשה שהפעולה ומשתמשים

Page 11: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

11

2סעיף

ביטוי -Aכאשר A?B:Cנניח -Bו - Cו כמצוין אוגרים מספר הדורשים ביטויים תתי , ( ? . במה היעזר רמז הביטוי לכל הנדרש האוגרים מספר מהו הבאים במקרים

). להכליל כדי הקודם מהסעיף שלמדת.1| A|=k, |B|=k, |C|=k

.2|A|=k, |B|=k, |C|<|B|

.3|A|=k, |B|<|A|, |C|<|B|

Page 12: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

12

2סעיף

ביטוי -Aכאשר A?B:Cנניח -Bו - Cו כמצוין אוגרים מספר הדורשים ביטויים תתי , ( ? . במה היעזר רמז הביטוי לכל הנדרש האוגרים מספר מהו הבאים במקרים

). להכליל כדי הקודם מהסעיף שלמדת.1| A|=k, |B|=k, |C|=k

k+2.2|A|=k, |B|=k, |C|<|B|

k+1.3|A|=k, |B|<|A|, |C|<|B|

k

Page 13: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

13

3סעיף ) אוגרים ) להקצאת האפשריים המקרים כל את המכסה הכללי החוק את מצאי

אופטימאלית.

Page 14: Fall 2013-2014 Compiler  Principles Extending  Sethi-Ullman for a Ternary Operator

14

תשובה - 3סעיף : , שלהם המשקלות לפי לקטן מהגדול הענפים את מחשבים. a>b>cמסדרים עכשיו

max(a,b+1,c+2): כדלהלן. הוא הרעיון

דורש • ביותר הכבד , aהענף למשל ההגדרה לפי התוצאה R1,…,Raאוגרים את ומאחסןנניח – מסוים .R1באוגר

דורש • השני , bהענף מלבד אוגר בכל קח לשם להשתמש ויכול שהוא, R1אוגרים מכיוון- ה לפעולת דרושה שעדיין הראשון הענף של החישוב תוצאת את שהענף. iteמכיל נניח

באוגרים -R2,…,Rbמשתמש ב, התוצאה את .R2ומאחסןדורש • השלישי , cהענף מלבד אוגרים בכל קח לשם להשתמש ויכול -R1אוגרים מכיוון, R2ו

. באוגרים משתמש שהענף נניח הכבדים הענפים שני של החישוב תוצאות את מכילים שהםR3,…,Rc- ב, התוצאה את .R3ומאחסן

-iteהפעולה • ב -R1,R2,R3משתמשת ב התוצאה את דורש, R1ומאחסנת שאינו דבר. נוספים אוגרים

, אשר הפעולה לצורך בו שהשתמשנו המקסימאלי שהאינדקס לראות ניתן כעת , הינו הכולל האוגרים למספר .max(a,b+1,c+2)שווה

•- , ל ) קודם למשל שונה בסדר לענפים אוגרים להקצות -bניסיון " ל כ -aואח ל נותן( cואז. יותר גדול או שווה אוגרים מספר