Post on 07-Jul-2016
description
Teknik Kompilasi 01 / 1 - 13
PENDAHULUAN
KOMPILER Sebuah program yang menter-jemahkan suatu bahasa (source program) menjadi bahasa lain (target program)
Source Kompiler Targetprogram program
Error
messages Program-program yang menggunakan teknologi kompiler antara lain : Text Formatter : mengambil input
sebagai stream karakter termasuk perintah untuk mengenali paragraf,
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 2 - 13
gambar atau struktur matematika (subscript, superscript)
Silicon Compiler : merupakan fungsional programming languange dimana variabel-variabel represen-tasi bahasa untuk signal logika (0 or 1 or grup signal) tidak berada di memory akan tetapi ada di rangkaian switching
Query Interpreter : menerjemahkan predikat relasi dan operator boolean menjadi command untuk mencari database records yang memenuhi predikat
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 3 - 13
LANGUAGE PROCESSING SYSTEM
Sistem pemrosesan program untuk menghasilkan target program yang executable, sebagai berikut :
skeletal source program
preprocessor
source program
compiler
target assembly program
assembler
relocatable machine code
loader/link-editor library relocatable object files
absolute machine code
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 4 - 13
KELUARGA KOMPILER Preprocessor : menyiapkan input
bagi kompiler dan functions yang mungkin dilakukan seperti :a. Macroprocessing : system yang
yang diijinkan mendefinisikan macro statements
b. File Inclussion : system yang berfungsi untuk memasukkan berbagai header file ke dalam teks program
c. Rational Preprocessor : penye-diaan fasilitas flow of control dan struktur data misalnya pemakaian statement : while, if (apabila bahasa pemrograman itu tidak memilikinya)
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 5 - 13
d. Language Extention : meng- gabungkan perintah bahasa lain ke dalam teks program
Assembler : untuk menghasilkan relocatable machine code/ assembly code sebagai suatu job untuk selanjutnya di loader / link loader
Loader/ Link Loader : loader meng-ubah relocatable machine code dengan menempatkan perubahan data dan instruksi dalam memory sedangkan link loader menggabung beberapa file yang berisi relocatable machine code menjadi satu kesatuan
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 6 - 13
KLASIFIKASI KOMPILASI BERDASARKAN KONSTRUKSI DAN FUNGSINYA :
* Single - Pass* Multi - Pass* Load - And - Go* Debugging* Optimizing
TAHAPAN KOMPILASI
DUA BAGIAN UTAMA PROSES KOMPILASI
1. ANALYSIS : membagi program ke dalam
bagian-bagian kecil membuat “intermediate represen-
tation” dari source program
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 7 - 13
2. SYNTHESIS : membangun target program dari
intermediate representation
Secara konseptual kompiler beroperasi secara bertahap, dimana setiap tahap mentransformasikan source program dari suatu representasi ke representasi lainnya.
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 8 - 13
Tahap-tahap kompiler adalah sebagai berikut : source program
lexical analyzer
syntax analyzer
symbol-table error manager handler
Intermediate code
generator
code optimizer
code generator
target program
SYMBOL TABLE
Bahan Ajar Matakuliah oleh SINAR SINURAT
semantic analyer
Teknik Kompilasi 01 / 9 - 13
Struktur data yang berisi record untuk setiap identifier yang berisi field-field/ atribut-atribut dari identifier.
ERROR HANDLER
Fungsi yang menangani dan melapor- kan setiap error / kesalahan yang di-temukan (pada setiap tahapan)
LEXICAL ANALYSIS (linear analysis = Scanner)
Membaca source program (stream of chars) dari kiri ke kanan dan mengelompokkannya ke dalam token-token.
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 10 - 13
SYNTAX ANALYSIS (Hierarchical Analysis = Parser)
Menghasilkan struktur hirarki dari token-token.
Biasanya direpresentasikan dalam bentuk parse tree atau syntax tree.
SEMANTIC ANALYSIS
Memeriksa komponen tertentu bagian program secara bersama mengan-dung suatu arti yang benar.
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 11 - 13
INTERMEDIATE CODE GENERATION
Merepresentasi suatu program dalam coding sebagai mesin abstract dengan memperhatikan sifat berikut : - mudah menghasilkan- mudah mentranslasi target program
CODE OPTIMIZATION
Melakukan optimasi/ reduce terhadap code tanpa mengganggu sikuens eksistensi proses sehingga running dapat lebih cepat
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 12 - 13
CODE GENERATION
Menghasilkan target code dari inter-mediate code yang telah dioptimasi.
FRONT-BACK ENDS
Front-ends : mengenali source file program yang benar (analisis), meliputi : code generator dan modul optimasi.
Back-ends : menghasilkan code untuk target mesin (sintetis), yang meliputi : scanner, parser, constrainer.
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 13 - 13
Contoh translasi statement : position := initial + rate * 60
lexical analyzer
id1 := id2 + id3 * 60 Symbol Table
syntax analyzer
:=id1 +
id2 * id3 60
semantic analyzer
:=id1 +
id2 - id3 inttoreal
60
Intermediate code generator
temp1 := inttoreal(60)temp2 := id3 * temp1temp3 := id2 + temp2id1 := temp3
code optimizer MOV R2, id3MUL R2, 60.0
temp1 := id3 * 60.0 MOV R1, id2id1 := id2 + temp1 ADD R1, R2
MOV Id1, R1code generator
Bahan Ajar Matakuliah oleh SINAR SINURAT
1 Position ……
2 Initial ……
3 Rate ……
4 ……. ……
Teknik Kompilasi 01 / 14 - 13
ALAT BANTU KONSTRUKSI KOMPILER (Compiler Construction Tools) Parser Generator
Menghasilkan pohon sintaks oleh Syntax Analyzer (parser) dari input yang berdasarkan context free grammar.
Scanner GeneratorMenghasilkan input stream oleh Lexical Analyzer (scanner) dari spesifikasi input data berdasarkan regular expression.
Automatic Code GeneratorMengambil kumpulan rules yang akan mendefinisikan penerjemahan setiap operasi dari intermediate
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 01 / 15 - 13
language ke dalam machine language dari target machine
Data Flow EngineMengumpulkan informasi tentang bagaimana nilai-nilai ditranslasikan dari suatu bagian program ke bagian lainnya, untuk keperluan “data flow analysis” pada tahap optimasi code.
Bahan Ajar Matakuliah oleh SINAR SINURAT