33
کامپایلر اصول طراحیشکالت رفع ا ساعا: شنبه10 - 12 و دوشنبه10 - 12 مکن اس نیز من وقت قبلیگر با تعیی دیشکال در ساعتهای رفع ا ت. میل ای: [email protected] تلفن: 37934060 25 % یان ترم م40 % پایان ترم20 - 15 % ها پروژه( ترجیحاJava ) 15 - 20 % سیت های کمتحانک ها و فعالیلیف ، ا تکاابی نحوه ارزشی کتاب های مرجع: Compilers: Principles, Techniques, and Tools, Aho, Sethi and Ullman (Dragon). Modern Compiler Implementation in Java, A. Apple (Tiger).

رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

اصول طراحی کامپایلر

12-10و دوشنبه 12-10شنبه : ساعات رفع اشکال.ترفع اشکال در ساعتهای دیگر با تعیین وقت قبلی نیز ممکن اس

[email protected]:ایمیل37934060: تلفن

میان ترم % 25پایان ترم % 40(Javaترجیحا )پروژه ها % 20-15تکالیف ، امتحانک ها و فعالیت های کالسی% 15-20

نحوه ارزشیابی

:کتاب های مرجع

• Compilers: Principles, Techniques, and Tools, Aho, Sethi and Ullman (Dragon).

• Modern Compiler Implementation in Java, A. Apple (Tiger).

Page 2: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

تاریخچه کامپایلر

وده استنوشتن برنامه به زبان ماشین وقتگیر و پر از خطا ب

PDP 8ماشین محاسباتی

یا 8ورودی ماشین عددهایی در مبنای بوده اند که بوسیله کلیدهای 16

ماشین دریافت می شدند و خروجی ش بصورت نوار یا در یک صفحه نمای

.داده می شده استی نوشتن برنامه با چنین ماشین های

ت بوده اساشتباه و همراه با وقتگیر

Page 3: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

نوشتن برنامه به زبان ماشین وقتگیر و پر از خطا بوده است: مساله

. یکی از اولین قدم ها برای کاهش خطا و صرفه جویی استفاده از اسمبلر بوده است

ی تکه ای از زبان اسمبل

Assembler

زبان ماشین

تاریخچه کامپایلر

Page 4: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Grace Hopper1906-1992

John Bakus1924-2007

مادربزرگ کامپایلرنگلیسیانوشتن برنامه به زبانی نزدیک به زبان : ایده

موفق شد اولین زبانهای سطح 1950در اوایل دهه باالرا طراحی کند

•MATH-MATIC•FLOW-MATIC

(common business-oriented language) COBOL

Fortran:Formula Translated

تاریخچه کامپایلر

Page 5: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

.ویندنیاز دارن که به آن کامپایلر می گ( واسط)زبانهای سطح باال به یک مترجم

(Source Language)زبان مبدا (Compiler)کامپایلر (Target Language) زبان مقصد

شته زبانی که کامپایلر با آن نومی می شود زبان میزبان گفته

(Host Language)شود

ی ، یا زبان مقصد می تواند زبان ماشین ، اسمبل Javaیا Cزبان های سطح باال مانند

(Source-to-Source Compiler )باشد

ی کند برنامه ای است که یک برنامه را به عنوان ورودی دریافت م: کامپایلرو آنرا به برنامه ای هم ارز در زبان دیگر ترجمه می کند

تاریخچه کامپایلر

Page 6: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

(Language Processors)پردازشگر های زبان

(Compiler)کامپایلر

(Interpreter)مفسر

(Compiler)کامپایلر ان برنامه به زب

مبدا برنامه به زبان هدف

مفسر (Interpreter) خروجی برنامه

دابرنامه به زبان مب

ورودی برنامه

:ویزگیهای مفسرها در مقایسه با کامپایلر هاکندی در اجرای برنامه •هر خط برنامه اجرا می شود و)سرعت باالی کشف خطا •

.(خطا ها به سرعت کشف می شود

رهای تقسیم بندی پردازشگزبان

: زبان مفسری

Smalltalk(1980)

Page 7: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

(Language Processors)پردازشگر های زبان

(Compiler)کامپایلر

(Interpreter)مفسر

(Compiler)کامپایلر ان برنامه به زب

مبدا برنامه به زبان هدف

مفسر (Interpreter) خروجی برنامه

دابرنامه به زبان مب

ورودی برنامه

ار با عث اینک)پردازشگر جاوا ترکیبی از کامپیلر و یک مفسر در برنامه نویسی های ( portability)خاصیت حمل پذیری

ین چون کامپایلر به تنهایی به نوع ماش. شبکه ای می شود(بستگی دارد

مفسر (Interpreter)

کامپایلر (Compiler)

دابرنامه به زبان مب

bytecode

ورودی برنامه

خروجی برنامه

پردازشگر جاوا

Bytecode روی هر سخت افزاری کهJVM دارد قابل تفسیر و اجراست

رهای تقسیم بندی پردازشگزبان

Page 8: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

(Language Processors)پردازشگر های زبان

هاست تاکید درس اصول طراحی کامپایلر بر ساختار و معماری کامپیلر

.ه می کند برای اجرای یک برنامه در یک زبان خاص کامپایلر زبان از برنامه های دیگری نیزاستفادPre Processor

Source Program

Modified Source Program

Compiler

Target Assembly Program

Assembler

Relocatable Machine Code

Linker/Loader

Target Machine Code

Linker:یم و کدهای بزرگ به قسمتهای کوچکتر تقسبین قسمتهای Linkerکامپایل می شوند و

کوچکترکامپایل شده رابطه برقرار می کند

Loader : فایلها در حافظه قابل دسترسCPU قرار می دهد

PreProcessor :header files وmacros را بهبرنامه اضافه می کند

آدرس حافظه های مورد نیاز قابل تغییر.داردLoaderاست وبستگی به

Page 9: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

چرا کامپایلر می خوانیم؟

اوت همیشه نیاز به زبانهای جدید با قابلیت های متف(Domain-Specific Languages)وجود دارد

زبانهای موجود به راحتی قابل تغییر نیستند . یادگرفتن زبانهای جدید آسانتر است

Scientific Computing:

1. Good Functional Programming

2. Good Arrays

3. Parallelism

Business Application:

1. Persistence

2. Report Generation

3. Data Analysis

System Programming (OS)

1. Resource Control

2. Real time constrains

FORTAN

SQL

C/C++

علل ایجاد زبانهای جدید

Page 10: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

چرا کامپایلر می خوانیم؟

:به عنوان یک دانشجو کامپایلر می خوانیم که(NLPکاربردهای فراوان مثل )اصول پردازش زبان را بشناسیم . 1با رویکرد حل مساله و طراحی یک نرم افزار نسبتا پیچیده آشنا می شویم . 2نا شویمبه عنوان یک برنامه نویس با نرم افزارهای پشت پرده اجرای یک زبان برنامه نویس اش. 3.شاید از ما خواسته شود یک کامپایلر برای یک زبان جدید بنویسیم. 4

Page 11: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

رساختار کامپایل

CompilerLexical Analysis (Scanner)

(تحلیل لغوی)

Syntax Analysis (Parser)(تحلیل نحوی)

Code Generator

Machine Dependent Code Opt.

Semantic Analysis (Type Checker,..)(تحلیل معنایی)

را فازهایی که مستقل از ماشین هستندFront-end و بقیه را . می گویندBack-endمی گویند

Source Program

Target Program

Intermediate Code Generator

Front-end

Back-end

Intermediate Code Opt.این دو فاز در کامپایلرهای اولیه موجود نداشته است

Page 12: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

رساختار کامپایل

𝐸کتاب اژدها1.7شکل → 𝐸′ = 𝐸𝐸 → 𝐸 + 𝐸|𝐸 × 𝐸𝐸 → 𝑖𝑑𝐸′ → 𝑖𝑑 They may return an error!!

در تمام مراحل اجرای اده کامپایلر مورد استف

قرار می گیرد

Page 13: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

The Structure of a Modern Compiler

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

SourceCode

MachineCode

Page 14: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

The Structure of a Modern Compiler

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

SourceCode

MachineCode

Page 15: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

Page 16: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

Page 17: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

T_WhileT_LeftParenT_Identifier yT_LessT_Identifier zT_RightParenT_OpenBraceT_IntT_Identifier xT_AssignT_Identifier aT_PlusT_Identifier bT_SemicolonT_Identifier yT_PlusAssignT_Identifier xT_SemicolonT_CloseBrace

Page 18: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

T_WhileT_LeftParenT_Identifier yT_LessT_Identifier zT_RightParenT_OpenBraceT_IntT_Identifier xT_AssignT_Identifier aT_PlusT_Identifier bT_SemicolonT_Identifier yT_PlusAssignT_Identifier xT_SemicolonT_CloseBrace

Page 19: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

While

<

Sequence

=

x +

a b

=

y +

y x

y z

Page 20: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

While

Sequence

=

x +

a b

=

y +

y x

<

y z

Page 21: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

While

Sequence

=

x +

a b

=

y +

y x

int

int int

int

int int

int

int int

int

void

void

Semantic Analysis

<

y z

int int

bool

Page 22: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

While

Sequence

=

x +

a b

=

y +

y x

int

int int

int

int int

int

int int

int

void

void

<

y z

int int

bool

Page 23: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

Loop: x = a + b y = x + y _t1 = y < z if _t1 goto Loop

IR Generation

Page 24: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

Loop: x = a + b y = x + y _t1 = y < z if _t1 goto Loop

Page 25: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

x = a + bLoop: y = x + y _t1 = y < z if _t1 goto Loop

IR Optimization

Page 26: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

x = a + bLoop: y = x + y _t1 = y < z if _t1 goto Loop

Page 27: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

add $1, $2, $3Loop: add $4, $1, $4 slt $6, $1, $5 beq $6, loop

Page 28: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

add $1, $2, $3Loop: add $4, $1, $4 slt $6, $1, $5 beq $6, loop

Page 29: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

while (y < z) { int x = a + b; y += x;}

add $1, $2, $3Loop: add $4, $1, $4 blt $1, $5, loop

Page 30: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

The Course Project: Decaf

● Custom programming language similar to Java or C++.

● Object-oriented with free functions.● Single inheritance with interfaces.

Page 31: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Programming Assignments

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

SourceCode

MachineCode

Page 32: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Programming Assignments

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

SourceCode

MachineCode

Page 33: رلیپمک یحارط لوصا - engold.ui.ac.irengold.ui.ac.ir/~a.pourmiri/note1.pdf · 1. Persistence 2. Report Generation 3. Data Analysis System Programming (OS) 1. Resource

Next Time...

Lexical Analysis

Syntax Analysis

Semantic Analysis

IR Generation

IR Optimization

Code Generation

Optimization

SourceCode

MachineCode