TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

dokumen-dokumen yang mirip
Fase-fase proses sebuah kompilasi

Pendahuluan. Kuliah online : Tekkom [2013/VI]

MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR. Dosen Pengampu: Utami Dewi Widianti,S.Kom

TEKNIK KOMPILASI. Alamat untuk tugas: Informasi: DADANG MULYANA. dadang mulyana 2013

TEKNIK KOMPILASI. Firrar Utdirartatmo

Teori Komputasi 10/15/2015. Bab 1: Pendahuluan. Teori Komputasi dan Teknik Kompilasi. Teori Komputasi dan Teknik Kompilasi

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

Pendahuluan. Tujuan Pembelajaran :

TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I

PENGANTAR TEKNIK KOMPILASI

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

BAB V ANALISA SEMANTIK

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK

Compiler & Interpreter

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

SEMANTIK. Int vector[10];

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa.

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

ALGORITMA PEMROGRAMAN 1C SEMANTIKS

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16

UNIVERSITAS GUNADARMA

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

LANGUAGES AND TRANSLATOR

Perjalanan sebuah intruksi

ALGORITMA PEMROGRAMAN 1C SINTAKS

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

Algoritma dan Struktur Data

Bab III Semantik. Konsep Semantik Bahasa Pemrograman (Semantik Analisis)

ALGORITMA DAN PEMROGRAMAN #2

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

Algoritma dan Struktur Data

1. Algoritma & Pemrograman

Web Site :

BAB I PENGENALAN TEKNIK KOMPILASI

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom

Kesalahan Program dapat berupa

BAB VI CARA PENANGANAN KESALAHAN

Learning Outcomes. akan mampu : (C3) perancangan compiler yang paling optimal (C4)

Implementasi OOP Pada Perangkat Lunak Pemrograman

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

BAB I PENDAHULUAN. 1.1 Latar Belakang

Pengayaan Software/Hardware dan Pengantarmukaan

BAB II DASAR TEORI. 2.1 Kompilator

Dasar Pemrograman. Nisa ul Hafidhoh

Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Pengenalan Algoritma

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Algoritma Pemrograman

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

TEKNIK KOMPILASI. Oleh. Hartono

TUGAS MATA KULIAH TEKNIK KOMPILASI

Dasar Pemrograman. Nisa ul Hafidhoh

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Pengenalan Algoritma & Pemrograman

BAB I PENGANTAR Pendahuluan Penyajian 1.1 Latar Belakang 1.2 Algoritma dan Struktur Data

Algoritma Pemrograman

BAHASA PEMROGRAMAN. Merupakan prosedur/tata cara penulisan program.

dilakukan oleh bahasa mesin dapat dilakukan oleh C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C dalam pemakainnya memerlukan

BAB II ANALISA LEKSIKAL (SCANNER)

ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Kesalahan Program Penanganan Kesalahan Reaksi Compiler Pada kesalahan Error Recovery Error repair

Algoritma Pemrograman 2C

Algoritma Pemrograman

BAB II SINTAKS 2.1. SINTAKS

TEKNIK OPTIMASI. Dependensi Optimasi. Optimasi Lokal. Menghasilkan kode program dengan ukuran yang lebih kecil, sehingga lebih cepat eksekusinya.

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 ASSEMBLER. Jurusan Sistem Komputer-S1 Universitas Gunadarma

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs

Pemrograman dan Bahasa Pemrograman

Program. Instruksi-instruksi yang diberikan kepada komputer agar dapat melaksanakan tugas-tugas tertentu

Kuliah Online : TEKKOM [2013/VI]

Pemrograman. Fery Updi,M.Kom

Teknik Kompiler 1. oleh: antonius rachmat c, s.kom

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

Materi Pelajaran : Algoritma Pemrograman. Siswa memahami tentang dasar dasar Algoritma Pemrograman

COMPILER Aspek Kompilasi

Algoritma Pemrograman I

Teknik optimasi. Teknik optimasi kode program Tujuan: menghasilkan kode program yang berukuran lebih kecil dan lebih cepat pada saat dieksekusi.

Tahap pengembangan program

Pengantar Teknologi Informasi. Software Komputer

21/11/2016. Pohon Sintaks. Syntax?? Proses Penurunan. Analisis Syntax (Parser) Metode Parsing ANALISIS SINTAKS TEKNIK KOMPILASI

PENDAHULUAN PEMROGRAMAN KOMPUTER. Mengapa Belajar Pemrograman Komputer?

BAHASA SUMBER. DEFINISI bahasa sumber

Teknik Optimasi. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Pemrograman Komputer Pendahuluan

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

BAB I PENDAHULUAN 1.1 Latar Belakang

KOM204 : BAHASA PEMROGRAMAN

IT234 - Algoritma dan Struktur Data. Ramos Somya

ALGORITMA PEMROGRAMAN 1C PENDAHULUAN KONSEP BAHASA PEMROGRAMAN

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

PEMROGRAMAN KOMPUTER DASAR. Kuliah ke-1

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

Pertemuan Ke-1 (Pengantar Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

Transkripsi:

1. PENDAHULUAN TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1 Arti Kata Teknik Kompilasi Teknik adalah suatu Metode atau Cara Kompilasi adalah suatu Proses mengabungkan serta menterjemahkan sesuatu (source program) menjadi bentuk lain. Bahasa Pemrograman Bahasa pemrograman berdasarkan tingkat ketergantungannya dengan mesin bisa meliputi jenis bahasa berikut ini. Bahasa Mesin Bahasa mesin merupakan bentuk terendah dari bahasa komputer. Setiap instruksi dalam program direpresen-tasikan dengan kode numerik, yang secara fisik berupa deretan angka 0 dan 1. Sekumpulan instruksi dalam bahasa mesin bisa dibentuk menjadi microcode (prosedur dalam bahasa mesin) Bahasa Assembly Bahasa Assembly merupakan bentuk simbolik dari bahasa mesin. Setiap kode operasi memiliki kode simbolik, misalnya ADD untuk penjumlahan dan MUL untuk perkalian. Sekumpulan instruksi dalam bahasa assembly dapat dibentuk menjadi makroinstruksi. Pada bahsa assembly tersedia alat bantu untuk diagnostik atau debug yang tidak terdapat pada bahasa mesin. Contoh : Turbo Assembler, Macro Assembler, DEBUG dan Turbo Debugger. Bahasa Tingkat Tinggi (User Oriented) Disebut bahasa tingkat tinggi karena lebih dekat dengan bahas manusia. Bahasa ini memberikan fasilitas yang lebih banyak, kontrol program yang terstruktur, block dan prosedur. Contohnya Pascal, Basic dan lain-lain. Bahasa Problem Oriented Bahasa ini memungkinkan penyelesaian untuk suatu masalah atau aplikasi yang spesifik. Contohnya : SQL (Stuctured Query Language) untuk aplikasi database, COGO untuk aplikasi teknik sipil. Bahasa Problem Oriented kadang dimasukkan sebagai bahasa tingkat tinggi. Keuntungan bahasa tingkat tinggi dibandingkan bahasa tingkat rendah : 1. Kemudahan untuk dipelajari, tidak membutuhkan latar belakang pengetahuan mengenai perangkat keras. 2. Lebih mendekati permasalahan yang akan diselesaikan. 3. Pemrogram tidak perlu mengetahui bagaimana representasi data ke dalam bentuk internal di memory. Kemampuan untuk konversi data. 4. Memberikan banyak pilihan struktur kontrol seperti kondisional (If..then..else), looping (repeat..until, for), struktur blok (begin.. End). 5. Program lebih mudah di-debug. 6. Kemampuan struktur data yang lebih baik. 7. Ketersediaan feature seperti prosedur. 8. Kompatibilitas dan dokumentasi yang lebih baik dalam pengembangan program. 9. Tidak bergantung pada mesin. Translator Suatu program dimana mengambil input sebuah program yang ditulis pada suatu bahasa program (source language ke bahasa lain (object or target language).

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 2 Ada beberapa macam translator : 1. Assembler Source code adalah bahasa Assembly, object code adalah bahasa mesin. Contohnya : Turbo Assembler dan Macro Assembler. 2. Compiler Source code adalah bahasa tingkat tinggi, object code adalah bahasa mesin atau bahasa assembly. Source code dan data diproses pada saat yang berbeda. Contoh Turbo Pascal. 3. Interpreter Interpreter tidak membangkitkan object code, hasil translasi hanya dalam bentuk internal. Contoh interpreter : Basic / GW-Basic, LISP, SmallTalk. Source code dan data diproses pada saat yang sama. Model Kompilator Pengembangan kompilator untuk sebuah bahasa merupakan pekerjaan yang kompleks. Kompleksitas kompilator bisa dikurangi bila perancang bahasa pemrograman mempertimbangkan bermacam-macam faktor perancangan. Sebuah kompilator umumnya memiliki dua tugas pokok sebagai berikut : Fungsi Analisis Fungsi Analisis biasa disebut sebagai Front End. Tugasnya melakukan dekomposisi program sumber menjadi bagian-bagian dasarnya. Fungsi Sintesis Fungsi Sintesis biasa disebut sebagai Back End. Tugasnya melakukan pembangkitan dan optimasi program objek.

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 3 Program sumber merupakan rangkaian karakter. Berikut ini hal-hal yang dilakukan oleh setiap fase pada proses kompilasi terhadap program sumber tersebut : Penganalisa Leksikal Membaca program sumber, karakter demi karakter. Sederetan (satu atau lebih) karakter dikelompokkan menjadi satu kesatuan mengacu kepada pola kesatuan kelompok karakter (token) yang ditentukan dalam bahasa sumber. Kelompok karakter yang membentuk sebuah token dinamakan lexeme untuk token tersebut. Setiap token yang dihasilkan disimpan di dalam tabel simbol. Sederetan karakter yang tidak mengikuti pola token akan dilaporkan sebagai token tak dikenal (unidentified token). Contoh : Misalnya pola token untuk identifier I adalah : I = huruf(hurufangka)*. Lexeme ab2c dikenali sebagai token sementara lexeme 2abc atau abc tidak dikenal. Penganalisa Sintaks Memeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan dalam bahasa sumber. Sederetan token yang tidak mengikuti aturan sintaks akan dilaporkan sebagai kesalahan sintaks (sintax error). Secara logika deretan token yang bersesuaian dengan sintaks tertentu akan dinyatakan sebagai pohon parsing (parse tree). Contoh : Misalnya sintaks untuk ekspresi if-then E adalah : E if L then, L IOA, I = huruf(hurufangka)*, O < = > <=>=, A 0 1...9. Ekspresi if a2 < 9 then adalah ekspresi sesuai sintaks; sementara ekspresi if a2 < 9 do atau if then a2b < 9 tidak sesuai. Perhatikan bahwa contoh ekspresi terakhir juga mengandung token yang tidak dikenal. Penganalisa Semantik Memeriksa token dan ekspresi dari batasan-batasan yang ditetapkan. Batasan-batasan tersebut misalnya : a. panjang maksimum token identifier adalah 8 karakter, b. panjang maksimum ekspresi tunggal adalah 80 karakter, c. nilai bilangan bulat adalah -32768 s/d 32767, d. operasi aritmatika harus melibatkan operan-operan yang bertipe sama.

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 4 Pembangkit Kode Antara Membangkitkan kode antara (intermediate code) berdasarkan pohon parsing. Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah berdasarkan sintak (syntax-directed translator). Hasil penerjemahan ini biasanya merupakan perintah tiga alamat (three-address code) yang merupakan representasi program untuk suatu mesin abstrak. Perintah tiga alamat bisa berbentuk quadruples (op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresi dengan satu argumen dinyatakan dengan menetapkan arg2 dengan - (strip, dash) Pengoptimal Kode Melakukan optimasi (penghematan space dan waktu komputasi), jika mungkin, terhadap kode antara. Pembangkit Kode Membangkitkan kode dalam bahasa target tertentu (misalnya bahasa mesin). Berikut ini akan diberikan sebuah contoh skema penerjemahan suatu ekspresi dalam bahasa sumber, yaitu : position := initial + rate * 60. Lexical analyzer harus memproses blank dan komentar, meskipun keduanya bukan merupakan bagian executable. Scanner memberikan token ke syntax analyzer. Token-token bisa berbentuk pasangan item. Item pertama memberikan alamat dari token pada tabel simbol. Item kedua adalah representasi internal dari token.

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 5 Syntax analyzer lebih kompleks dari scanner. Fungsinya adalah untuk menentukan bagaimana dekomposisinya. Dalam analisis sintaksis dilakukan pengelompokan token ke dalam kelas sintaksis, seperti expression, statement dan procedure. Syntax Analyzer / Parser memberikan suatu pohon sintaks, yang mana daunnya adalah token dan setiap elemen non-daun merepresentasikan suatu kelas sintaksis. Sekumpulan aturan yang disebut grammar dipergunakan untuk mendefinisikan/ menentukan struktur dari program sumber. Semantic analyzer adalah untuk menentukan maksud dari suatu program sumber. Analisis Semantik merupakan proses yang unik pada suatu kompilator. Semantic analyzer harus menentukan aksi apa yang ditentukan oleh operator aritmatika. Rutin ini akan memeriksa apakah operan telah dideklarasikan. Analisis semantik bisa menghasilkan intermediate form dari program sumber. Misalkan ekspresi (A+B)*(C+D), kode antaranya bisa berupa kuadrupel berikut : (+, A, B, T1) (+, C, D, T2) (*, T1, T2, T3) Suatu ekspresi infix bisa saja diubah ke bentuk antara dalam notasi Polish, maka ekspresi infix (A+B)*(C+D) akan dikonversi ke notasi Polish-sufix : AB+CD+* Keluaran dari semantic analyzer diberikan ke code generator. Pada tahap ini bentuk antara dari program sumber, biasanya ditranslasikan ke dalam bahasa assembly atau bahasa mesin. Contoh translasi dari kuadrapel sebelumnya bisa menghasilkan instruksi bahasa assembly format1-alamat berikut : LDA A ADD B STO T1 LDA C ADD D STO T2 LDA T1 MUL T2 STO T3 Keluaran dari code generator diberikan ke code optimizer. Proses ini bertujuan untuk menghasilkan program objek yang lebih efisien seperti mengevaluasi ekspresi konstan, pemakaian properti operator tertentu (asosiatif, komutatis dan distributif) dan deteksi subekspresi. Contoh : LDA A ADD B STO T1 LDA C ADD D MUL T1 STO T2

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 6 Optimasi global lebih lanjut bisa dilakukan. Optimasi ini termasuk optimasasi machineindependent. Alokasi register secara optimal merupakan salah satu contoh optimasasi yang machine-dependent. Suatu code optimizer yang baik bisa menghasilkan kode yang lebih baik daripada pemrogram assembler yang berpengalaman. Pada beberapa kompilator, fase-fase kompilasi bisa dikombinasika. Interaksi antara scanner dan parser terdapat dua kemungkinan sebagai berikut : Beberapa kompilator membuat pass sesedikit mungkin. Faktor yang mempengaruhi jumlah pass yang akan dilakukan tergantung pada : 1. Ketersediaan memori. 2. Ukuran dan kecepatan kompilator 3. Ukuran dan kecepatan program objek 4. Fasilitas debugging yang diperlukan 5. Teknik deteksi dan pemulihan kesalahan yang diinginkan. 6. Jumlah orang dan waktu yang diperlukan untuk menyelesaikan proyek penulisan kompilator. Mutu Kompilator Mutu sebuah kompilator tergantung dari beberapa faktor sebagai berikut : 1. Kecepatan dan waktu proses kompilasi. Mutu ini tergantung dari hal-hal berikut: Penulisan algoritma kompilator Kompilator pengkompilasi 2. Mutu Program Objek Mutu suatu program objek (hasil kompilasi) ditentukan oleh ukuran dan kecepatan eksekusi dari program objek. 3. Integrated Environment Integrated environment merupakan fasilitas-fasilitas terintegrasi yang dimiliki oleh kompilator tersebut. Biasa disebut juga sebagai IDE (Integrated Development Environment). Misal Turbo Pasca bisa untuk kompilasi dan debug dalam satu lingkungan pemrograman. Pembuatan Kompilator Bahasa Mesin Sangat sukar dan sangat sedikit kemungkinannya untuk membuat compiler dengan bahasa ini, karena manusia susah mempelajari bahasa mesin, Sangat tergantung pada mesin, Bahasa mesin kemungkinan digunakan pada saat pembuatan Assembler. Assembly Hasil dari program mempunyai ukuran yang relatif kecil Sulit dimengerti karena statement/ perintahnya singkat-singkat, butuh usaha yang besar untuk membuat compiler dengan bahasa ini Fasilitas yang dimiliki terbatas

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 7 Bahasa Tingkat Tinggi (High Level Language) Lebih mudah dipelajari Fasilitas yang dimiliki lebih baik (banyak) Memiliki ukuran yang relatif besar, misal membuat compiler pascal dengan menggunakan bahasa C Untuk mesin yang berbeda perlu dikembangkan tahapan-tahapan tambahan. Misal membuat compiler C pada DOS berdasarkan compiler C pada Unix BootStrap Untuk membangun sesuatu yang besar, dibangun/dibuat dulu bagian intinya (Niklaus Wirth-saat membuat Pascal Compiler) P0 dibuat dengan Assembly, P1 dibuat dari P0, dan P2 dibuat dari P1, jadi compiler untuk bahasa P dapat dibuat tidak harus dengan menggunakan assembly secara keseluruhan. Contoh Source Program ke dalam Kode Mesin:

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 8