bab 1 pendahuluan

6
TEKNIK KOMPILASI Tony Darmanto,ST / Smt V – S1 – TI / STMIK WIDYA DHARMA/ Hal 1 1. PENDAHULUAN Arti Kata Teknik Kompilasi v Teknik adalah suatu Metode atau Cara v 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 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 : Translator Suatu program dimana mengambil input sebuah program yang ditulis pada suatu bahasa program (source language ke bahasa lain (object or target language). 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.

Upload: katsuoono

Post on 23-Jun-2015

1.057 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Bab 1 Pendahuluan

TEKNIK KOMPILASITony Darmanto,ST / Smt V – S1 – TI / STMIK WIDYA DHARMA/ Hal 1

1. PENDAHULUAN

Arti Kata Teknik Kompilasiv Teknik adalah suatu Metode atau Carav Kompilasi adalah suatu Proses mengabungkan serta menterjemahkan sesuatu (source

program) menjadi bentuk lain.

Bahasa PemrogramanBahasa pemrograman berdasarkan tingkat ketergantungannya dengan mesin bisa meliputi jenisbahasa berikut ini.

• Bahasa AssemblyBahasa 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. Padabahsa assembly tersedia alat bantu untuk diagnostik atau debug yang tidak terdapat padabahasa 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 OrientedBahasa ini memungkinkan penyelesaian untuk suatu masalah atau aplikasi yang spesifik.

Contohnya : SQL (Stuctured Query Language) untuk aplikasi database, COGO untuk aplikasiteknik sipil. Bahasa Problem Oriented kadang dimasukkan sebagai bahasa tingkat tinggi.

Keuntungan bahasa tingkat tinggi dibandingkan bahasa tingkat rendah :

TranslatorSuatu program dimana mengambil input sebuah program yang ditulis pada suatu bahasa program(source language ke bahasa lain (object or target language).

Ada beberapa macam translator :1. AssemblerSource code adalah bahasa Assembly, object code adalah bahasa mesin. Contohnya : TurboAssembler dan Macro Assembler.

2. CompilerSource code adalah bahasa tingkat tinggi, object code adalah bahasa mesin atau bahasaassembly. Source code dan data diproses pada saat yang berbeda. Contoh Turbo Pascal.

Page 2: Bab 1 Pendahuluan

TEKNIK KOMPILASITony Darmanto,ST / Smt V – S1 – TI / STMIK WIDYA DHARMA/ Hal 2

3. InterpreterInterpreter tidak membangkitkan object code, hasil translasi hanya dalam bentuk internal.Contoh interpreter : Basic / GW-Basic, LISP, SmallTalk. Source code dan data diproses padasaat yang sama.

Model KompilatorPengembangan kompilator untuk sebuah bahasa merupakan pekerjaan yang kompleks.Kompleksitas kompilator bisa dikurangi bila perancang bahasa pemrogramanmempertimbangkan bermacam-macam faktor perancangan. Sebuah kompilator umumnyamemiliki dua tugas pokok sebagai berikut :

• Fungsi AnalisisFungsi 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 danoptimasi program objek.

Program sumber merupakan rangkaian karakter. Berikut ini hal-hal yang dilakukan oleh setiapfase pada proses kompilasi terhadap program sumber tersebut :• Penganalisa Leksikal

Membaca program sumber, karakter demi karakter. Sederetan (satu atau lebih) karakterdikelompokkan menjadi satu kesatuan mengacu kepada pola kesatuan kelompok karakter(token) yang ditentukan dalam bahasa sumber. Kelompok karakter yang membentuk sebuahtoken dinamakan lexeme untuk token tersebut. Setiap token yang dihasilkan disimpan didalam tabel simbol. Sederetan karakter yang tidak mengikuti pola token akan dilaporkansebagai token tak dikenal (unidentified token).Contoh : Misalnya pola token untuk identifier I adalah : I = huruf(hurufangka)*. Lexemeab2c dikenali sebagai token sementara lexeme 2abc atau abC tidak dikenal.

Page 3: Bab 1 Pendahuluan

TEKNIK KOMPILASITony Darmanto,ST / Smt V – S1 – TI / STMIK WIDYA DHARMA/ Hal 3

• Penganalisa SintaksMemeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan dalambahasa sumber. Sederetan token yang tidak mengikuti aturan sintaks akan dilaporkan sebagaikesalahan sintaks (sintax error). Secara logika deretan token yang bersesuaian dengansintaks 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 adalahekspresi 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 SemantikMemeriksa token dan ekspresi dari batasan-batasan yang ditetapkan. Batasan-batasantersebut 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.

• Pembangkit Kode AntaraMembangkitkan kode antara (intermediate code) berdasarkan pohon parsing. Pohon parseselanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah berdasarkansintak (syntax-directed translator). Hasil penerjemahan ini biasanya merupakan perintah tigaalamat (three-address code) yang merupakan representasi program untuk suatu mesinabstrak. 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 KodeMelakukan optimasi (penghematan space dan waktu komputasi), jika mungkin, terhadapkode antara.

• Pembangkit KodeMembangkitkan kode dalam bahasa target tertentu (misalnya bahasa mesin).

Berikut ini akan diberikan sebuah contoh skema penerjemahan suatu ekspresi dalam bahasasumber, yaitu : position := initial + rate * 60.

Page 4: Bab 1 Pendahuluan

TEKNIK KOMPILASITony Darmanto,ST / Smt V – S1 – TI / STMIK WIDYA DHARMA/ Hal 4

Lexical analyzer harus memproses blank dan komentar, meskipun keduanya bukan merupakanbagian executable.

Scanner memberikan token ke syntax analyzer. Token-token bisa berbentuk pasangan item. Itempertama memberikan alamat dari token pada tabel simbol. Item kedua adalah representasiinternal dari token.

Syntax analyzer lebih kompleks dari scanner. Fungsinya adalah untuk menentukan bagaimanadekomposisinya. Dalam analisis sintaksis dilakukan pengelompokan token ke dalam kelassintaksis, seperti expression, statement dan procedure.

Syntax Analyzer / Parser memberikan suatu pohon sintaks, yang mana daunnya adalah tokendan setiap elemen non-daun merepresentasikan suatu kelas sintaksis.Sekumpulan aturan yang disebut grammar dipergunakan untuk mendefinisikan/ menentukanstruktur dari program sumber.

Semantic analyzer adalah untuk menentukan ‘maksud’ dari suatu program sumber. AnalisisSemantik merupakan proses yang unik pada suatu kompilator. Semantic analyzer harusmenentukan 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 dariprogram sumber, biasanya ditranslasikan ke dalam bahasa assembly atau bahasa mesin. Contohtranslasi dari kuadrapel sebelumnya bisa menghasilkan instruksi bahasa assembly format1-alamat berikut :

LDA AADD BSTO T1LDA CADD DSTO T2LDA T1MUL T2STO T3

Keluaran dari code generator diberikan ke code optimizer. Proses ini bertujuan untukmenghasilkan program objek yang lebih efisien seperti mengevaluasi ekspresi konstan,pemakaian properti operator tertentu (asosiatif, komutatis dan distributif) dan deteksisubekspresi. Contoh :

LDA AADD BSTO T1LDA CADD DMUL T1STO T2

Page 5: Bab 1 Pendahuluan

TEKNIK KOMPILASITony Darmanto,ST / Smt V – S1 – TI / STMIK WIDYA DHARMA/ Hal 5

Optimasi global lebih lanjut bisa dilakukan. Optimasi ini termasuk optimasasi machine-independent. Alokasi register secara optimal merupakan salah satu contoh optimasasi yangmachine-dependent. Suatu code optimizer yang baik bisa menghasilkan kode yang lebih baikdaripada pemrogram assembler yang berpengalaman.

Pada beberapa kompilator, fase-fase kompilasi bisa dikombinasika. Interaksi antara scanner danparser terdapat dua kemungkinan sebagai berikut :

Beberapa kompilator membuat pass sesedikit mungkin. Faktor yang mempengaruhi jumlah passyang akan dilakukan tergantung pada :Mutu KompilatorMutu sebuah kompilator tergantung dari beberapa faktor sebagai berikut :

• Mutu Program ObjekMutu suatu program objek (hasil kompilasi) ditentukan oleh ukuran dan kecepatan eksekusidari program objek.

• Integrated EnvironmentIntegrated environment merupakan fasilitas-fasilitas terintegrasi yang dimiliki oleh kompilatortersebut. Biasa disebut juga sebagai IDE (Integrated Development Environment). Misal TurboPasca bisa untuk kompilasi dan debug dalam satu lingkungan pemrograman.

Pembuatan KompilatorBahasa 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

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 denganmenggunakan assembly secara keseluruhan.

Page 6: Bab 1 Pendahuluan

TEKNIK KOMPILASITony Darmanto,ST / Smt V – S1 – TI / STMIK WIDYA DHARMA/ Hal 6

Contoh Source Program ke dalam Kode Mesin: