160 likes | 483 Views
Pertemuan 1 & 2 Pendahuluan. Matakuliah : T0174 / Teknik Kompilasi Tahun : 2005 Versi : 1/6. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Menjelaskan pentingnya penggunaan kompiler dalam pembuatan program komputer
E N D
Pertemuan 1 & 2Pendahuluan Matakuliah : T0174 / Teknik Kompilasi Tahun : 2005 Versi : 1/6
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
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 lain Bahasa sendiri Translator Target language Source 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.
Cousins of the compiler • Preprocessor • Untuk menggabungkan skeletal programyang menjadi input untuk compiler, dan melakukan fungsi-fungsi macro processing, file inclusion, rational preprocessor, dan language extensions. • Assembler • melakukan pemrosesan terhadap output dari compileryang 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 absolutemachine 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.
Target program Source program lexical analyzer syntaxanalyzer semantic analyzer symbol-table manager error handler intermediate code generator code optimizer code generator Tahapan kompilasi
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.
:= id1 + id2 * id3 60 := id1 + id2 * id3 inttoreal 60 Contoh penerjemahan position := initial +rate * 60 lexical analyzer id1 := id2 + id3 * 60 syntax analyzer Symbol Table 1 position…….. 2 initial…….. 3 rate…….. 4 semantic analyzer intermediate code generator
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 Lanjutan contoh ..
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.