Pertemuan 1 & 2 Pendahuluan

16
1 Pertemuan 1 & 2 Pendahuluan Matakuliah : T0174 / Teknik Kompilasi Tahun : 2005 Versi : 1/6

description

Pertemuan 1 & 2 Pendahuluan. Matakuliah: T0174 / Teknik Kompilasi Tahun: 2005 Versi: 1/6. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Menjelaskan pentingnya penggunaan kompiler dalam pembuatan program komputer - PowerPoint PPT Presentation

Transcript of Pertemuan 1 & 2 Pendahuluan

Page 1: Pertemuan 1 & 2 Pendahuluan

1

Pertemuan 1 & 2Pendahuluan

Matakuliah : T0174 / Teknik Kompilasi

Tahun : 2005

Versi : 1/6

Page 2: Pertemuan 1 & 2 Pendahuluan

2

Learning Outcomes

Pada akhir pertemuan ini, diharapkan mahasiswa

akan mampu :

• Menjelaskan pentingnya penggunaan kompiler dalam pembuatan program komputer

• Memahami tahapan-tahapan proses kompilasi dan elemen-elemen yang digunakan dalam kompilasi

Page 3: Pertemuan 1 & 2 Pendahuluan

3

Outline Materi

• Pengertian kompilasi

• Grouping of phases

• Cousins of the compiler

• Language Processing System

• Tahapan kompilasi

• Contoh penerjemahan

• Compiler construction tools

Page 4: Pertemuan 1 & 2 Pendahuluan

4

Pengertian dasar

• Proses penterjemahan dalam kehidupan sehari-hari

• Proses kompilasi komputer

• Compiler merupakan program yang membaca suatu program yang ditulis dalam suatu bahasa- source language - dan menterjemahkannya ke dalam bahasa yang lain – target language.

Bahasa sendiri Translator Bahasa lain

Source Language Compiler Target language

Page 5: Pertemuan 1 & 2 Pendahuluan

5

Pengertian dasar

• Source language berupa high level language seperti PASCAL, C, C++, FORTRAN, COBOL dan lain-lain

• Target language dapat berupa bahasa Assembly, Bahasa mesin, ataupun bahasa yang lain dari source language.

• Contoh, penterjemahan dari bahasa FORTRAN ke bahasa C, bahasa PASCAL ke Assembly, atau kombinasi yang mungkin terjadi dari bahasa-bahasa tersebut di atas.

Page 6: Pertemuan 1 & 2 Pendahuluan

6

Klasifikasi kompiler

• single pass

• multi pass

• load-and-go

• Debugging

• optimizing.

Page 7: Pertemuan 1 & 2 Pendahuluan

7

Gambaran umum kompiler

CompilerSourceProgram

TargetProgram

Error messages

Page 8: Pertemuan 1 & 2 Pendahuluan

8

Cousins of the compiler

• Preprocessor – Untuk menggabungkan skeletal program yang menjadi input

untuk compiler, dan melakukan fungsi-fungsi macro processing, file inclusion, rational preprocessor, dan language extensions.

• Assembler – melakukan pemrosesan terhadap output dari compiler yang

menghasilkan kode-kode biner yang belum memiliki alamat memory (memory addressing)

• Loader and link-editor – melakukan penggabungan antara relocatable machine code

dengan library ataupun relocatable object files untuk mendapatkan absolut machine code.

Page 9: Pertemuan 1 & 2 Pendahuluan

9

Language Processing System

Compiler

Preprocessor

Assembler

Loader / Link-editor

skeletal souce program

souce program

target assembly program

relocatable machine code

absolute machine code

Library, relocatable Object files

Page 10: Pertemuan 1 & 2 Pendahuluan

10

Fungsi-fungsi preprocessor

• Macro processing – Pemrosesan macro yang didefinisikan programmer

• File inclusion – preprocessor akan meng-include header file ke dalam program

• Rational preprocessor – preprocessor dapat meningkatkan kemampuan/menambah

fasilitas dari bahasa yang telah lama (older language)

• Language extensions – menggabungkan perintah yang ditulis dalam bahasa lain ke

dalam program dalam bentuk built-in macro.

Page 11: Pertemuan 1 & 2 Pendahuluan

11

Tahapan kompilasi

lexical analyzer

semantic analyzer

code optimizer

code generator

intermediate code generator

syntax analyzer

errorhandler

Target program

symbol-table manager

Source program

Page 12: Pertemuan 1 & 2 Pendahuluan

12

Tahapan kompilasi

• Tahap analisis: – lexical analyzer– syntax analyzer– semantic analyzer.

• Tahap sintesis:– intermediate code generator– code optimizer– code generator.

• Symbol table manager – untuk membuat record dari identifier yang digunakan dalam source

program dan mengumpulkan atribut yang menyangkut setiap identifier

• Error Handler – bagian kompiler yang menangani dan melaporkan kesalahan yang

ditemukan.

Page 13: Pertemuan 1 & 2 Pendahuluan

13

Contoh penerjemahan

position := initial +rate * 60

lexical analyzer

syntax analyzer

id1 := id2 + id3 * 60

Symbol Table1 position……..2 initial……..3 rate……..4

id1

:=

*60

+id2

id3

id3

60

id1

:=

*inttoreal

+id2

semantic analyzer

intermediate code generator

Page 14: Pertemuan 1 & 2 Pendahuluan

14

Lanjutan contoh ..

code generator

temp1 := inttoreal(60)temp2 := id3 * temp1

temp3 := id2 + temp2

id1 := temp3

temp1 := id3 * 60.0id1 := id2 + temp1

MOVF id3, R2

MULF #60.0, R2

MOVF id2 ,R1

MOVF R2, R1

MOVF R1, id1

intermediate code generator

code optimizer

Page 15: Pertemuan 1 & 2 Pendahuluan

15

Compiler construction tools

• Parser Generator – tools yang menghasilkan Syntax Analyzer (parser),

dari input yang berdasarkan Context Free Grammar.

• Scanner Generator – tools menghasilkan lexical Analyzer (scanner), dari

spesifikasi yang berdasarkan regular expression.

• Syntax Directed translation Engine – tools yang dapat menghasilkan sekumpulan routine

yang dapat ‘berjalan’ (run) di parse tree dan menghasilkan intermediate code.

Page 16: Pertemuan 1 & 2 Pendahuluan

16

Compiler construction tools

• Automatic Code Generator – tools untuk mengambil kumpulan rules yang

mendefinisikan penerjemahan dari setiap operasi dari intermediate language ke dalam machine language dari target machine.

• Data Flow Engine– tools untuk mengumpulkan informasi tentang

bagaimana values ditransmisikan dari suatu bagian program ke bagian program lainnya, untuk keperluan “data flow analysis” pada tahap optimasi code.