Pengayaan Software/Hardware dan Pengantarmukaan
Teknik Dasar Kompiler Kompilator (compiler) adalah sebuah program yang membaca suatu program dari source code dan menterjemahkannya kedalam object code. Pengayaan Sw & Hw
bahasa tingkat tinggi (misal Pascal, C). Object code : Source code : bahasa tingkat tinggi (misal Pascal, C). Object code : bahasa mesin/bahasa assembly. Source code dan data diproses pada saat yang berbeda, contoh : Turbo Pascal, Turbo C Pengayaan Sw & Hw
Tahap-tahap Kompilasi Tahap analisis (front end) Bertugas melakukan dekomposisi program sumber menjadi bagian-bagian dasarnya. Tahap analisa terdiri dari : Lexical analysis Syntactic analysis Semantic analysis Intermediate code generation Pengayaan Sw & Hw
Tahap sintesis terdiri dari : Code optimization Object code generation 2. Tahap sintesis (back end) Bertugas melakukan pembangkitan dan optimasi program objek. Tahap sintesis terdiri dari : Code optimization Object code generation Pengayaan Sw & Hw
1. Lexical analyzer (scanner) Berfungsi memecah teks program sumber menjadi bagian-bagian kecil yang mempunyai satu arti yang disebut token, seperti : konstanta, nama variabel, keyword, operator Pengayaan Sw & Hw
2. Syntax analyzer (parser) Berfungsi mengambil program sumber (sudah dalam bentuk barisan token) dan menentukan kedudukan masing-masing token berdasarkan aturan sintaksnya memeriksa kebenaran dan urutan kemunculan token 3. Semantic analyzer Berfungsi menentukan validitas semantiks/keberartian program sumber. Biasanya bagian ini digabung dengan intermediate code generator. 4. Intermediate code generator Berfungsi membangkitkan kode antara sintaks dengan code table. Pengayaan Sw & Hw
5. Code optimation Berfungsi mengefisienkan kode yang dibentuk 6 5. Code optimation Berfungsi mengefisienkan kode yang dibentuk 6. Code generator Berfungsi membangkitkan kode program target dalam bahasa target yang ekivalen dengan bahasa sumber 7. Symbol table management Berfungsi mengelola tabel simbol selama proses kompilasi. Tabel simbol adalah struktur data yang memuat rekord untuk tiap identifier dengan atribut-atribut identifier itu. 8. Error handler Berfungsi menangani kesalahan yang berlangsung selama proses kompilasi Pengayaan Sw & Hw
position := initial + rate * 60 Penyelesaian dengan tahapan kompilasi Contoh: operasi position := initial + rate * 60 Penyelesaian dengan tahapan kompilasi 1. Lexical analysis Mengelompokkan pernyataan tersebut menjadi token-token sebagai berikut : Token identifier position Token simbol assignment := Token identifier initial Token tanda plus + Token identifier rate Token tanda perkalian * Token konstanta angka 60 Pengayaan Sw & Hw
Ketika identifier pada program sumber ditemukan lexical analyzer, maka identifier dimasukkan ke tabel simbol. position := initial + rate * 60 diubah menjadi id1 := id2 + id3 * 60 2. Syntax analysis Memparsing atau membentuk pohon sintaks pernyataan, yaitu : Pengayaan Sw & Hw
Memeriksa kebenaran arti program sumber 3. Semantic analysis Memeriksa kebenaran arti program sumber Mengumpulkan informasi tipe bagi tahap berikutnya. Menggunakan pohon sintaks tahap syntax analysis untuk identifikasi operator dan operand suatu ekspresi dan kalimat. Pengayaan Sw & Hw
position, initial, rate : real Komponen penting analisis semantik adalah pemeriksaan tipe, memeriksa operator yang harus mempunyai operand yang diijinkan oleh spesifikasi bahasa sumber. Contoh : var position, initial, rate : real Konstanta 60 dikonversi menjadi real dengan fungsi inttoreal(60) menjadi konstanta bilangan real Pengayaan Sw & Hw
4. Intermediate Code Generator Merupakan representasi perantara antara bentuk bahasa tingkat tinggi dengan bahasa mesin. temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 Pengayaan Sw & Hw
Kode-kode tersebut dioptimasi menjadi : temp1 := id3 * 60.0 5. Code Optimization Melakukan proses identifikasi dan membuang operasi-operasi yang tidak perlu dari intermediate code generation untuk penyederhanaan sehingga nantinya kode mesin hasil menjadi lebih cepat. Kode-kode tersebut dioptimasi menjadi : temp1 := id3 * 60.0 Id1 := id2 + temp1 Pengayaan Sw & Hw
6. Code Generator Merupakan tahap pembangkitan kode target/objek. Biasanya yang dapat direlokasi adalah kode mesin atau assembly. Pembangkitan kode sangat bergantung pada mesin yang dipakai, misal : MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1 Pengayaan Sw & Hw