Pertemuan 1 & 2 Pendahuluan Matakuliah : T0174 / Teknik Kompilasi Tahun : 2005 Versi : 1/6 Pertemuan 1 & 2 Pendahuluan
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
Cousins of the compiler Language Processing System Tahapan kompilasi Outline Materi Pengertian kompilasi Grouping of phases Cousins of the compiler Language Processing System Tahapan kompilasi Contoh penerjemahan Compiler construction tools
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 Bahasa lain Translator Source Language Target language Compiler
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.
Klasifikasi kompiler single pass multi pass load-and-go Debugging optimizing.
Gambaran umum kompiler
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.
Language Processing System skeletal souce program Preprocessor souce program Compiler target assembly program Assembler relocatable machine code Library, relocatable Object files Loader / Link-editor absolute machine code
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.
intermediate code generator Tahapan kompilasi lexical analyzer semantic analyzer code optimizer code generator intermediate code generator syntax analyzer error handler Target program symbol-table manager Source program
Tahapan kompilasi Tahap analisis: Tahap sintesis: Symbol table manager 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.
Contoh penerjemahan lexical analyzer id1 := id2 + id3 * 60 position := initial +rate * 60 lexical analyzer id1 := id2 + id3 * 60 syntax analyzer id1 := * 60 + id2 id3 Symbol Table 1 position…….. 2 initial…….. 3 rate…….. 4 semantic analyzer id3 60 id1 := * inttoreal + id2 intermediate code generator
intermediate code generator Lanjutan contoh .. code generator temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 temp1 := id3 * 60.0 id1 := id2 + temp1 MOVF id3, R2 MULF #60.0, R2 MOVF id2 ,R1 MOVF R2, R1 MOVF R1, id1 intermediate code generator code optimizer
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.
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.