Pertemuan 1 & 2 Pendahuluan
description
Transcript of Pertemuan 1 & 2 Pendahuluan
1
Pertemuan 1 & 2Pendahuluan
Matakuliah : T0174 / Teknik Kompilasi
Tahun : 2005
Versi : 1/6
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
3
Outline Materi
• Pengertian kompilasi
• Grouping of phases
• Cousins of the compiler
• Language Processing System
• Tahapan kompilasi
• Contoh penerjemahan
• Compiler construction tools
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
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.
6
Klasifikasi kompiler
• single pass
• multi pass
• load-and-go
• Debugging
• optimizing.
7
Gambaran umum kompiler
CompilerSourceProgram
TargetProgram
Error messages
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.
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
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.
11
Tahapan kompilasi
lexical analyzer
semantic analyzer
code optimizer
code generator
intermediate code generator
syntax analyzer
errorhandler
Target program
symbol-table manager
Source program
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.
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
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
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.
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.