download

Matakuliah
Tahun
Versi
: T0174 / Teknik Kompilasi
: 2005
: 1/6
Pertemuan 1 & 2
Pendahuluan
1
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
2
Outline Materi
•
•
•
•
•
•
•
Pengertian kompilasi
Grouping of phases
Cousins of the compiler
Language Processing System
Tahapan kompilasi
Contoh penerjemahan
Compiler construction tools
3
Pengertian dasar
• Proses penterjemahan dalam kehidupan sehari-hari
Bahasa sendiri
Translator
Bahasa lain
• Proses kompilasi komputer
Source Language
Compiler
Target language
• Compiler merupakan program yang membaca suatu
program yang ditulis dalam suatu bahasa- source
language - dan menterjemahkannya ke dalam bahasa
yang lain – target language.
4
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.
5
Klasifikasi kompiler
•
•
•
•
•
single pass
multi pass
load-and-go
Debugging
optimizing.
6
Gambaran umum kompiler
Source
Program
Compiler
Target
Program
Error messages
7
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.
8
Language Processing System
skeletal souce program
Preprocessor
souce program
Compiler
target assembly program
Assembler
relocatable machine code
Loader / Link-editor
Library, relocatable
Object files
absolute machine code
9
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.
10
Tahapan kompilasi
Source program
lexical analyzer
syntax analyzer
semantic analyzer
symbol-table manager
error
handler
intermediate code generator
code optimizer
code generator
Target program
11
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.
12
Contoh penerjemahan
position := initial +rate * 60
lexical analyzer
id1 := id2 + id3 * 60
syntax analyzer
Symbol Table
1 position……..
2 initial……..
3 rate……..
4
id1
:=
id2
+
id3
*
60
semantic analyzer
:=
id1
+
id2
*
id3 inttoreal
60
intermediate code generator
13
Lanjutan contoh ..
intermediate code generator
temp1 := inttoreal(60)
temp2 := id3 * temp1
temp3 := id2 + temp2
id1
:= temp3
code optimizer
temp1 := id3 * 60.0
id1
:= id2 + temp1
code generator
MOVF id3, R2
MULF #60.0, R2
MOVF id2 ,R1
MOVF R2, R1
MOVF R1, id1
14
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.
15
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.
16