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
© Copyright 2024 Paperzz