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

dokumen-dokumen yang mirip
BAB VI CARA PENANGANAN KESALAHAN

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

Kesalahan Program dapat berupa

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

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

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

Perjalanan sebuah intruksi

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

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

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

Kuliah Online : TEKKOM [2013/VI]

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

SEMANTIK. Int vector[10];

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

MANAJEMEN MEMORI SISTEM OPERASI

BAB VII PENANGANAN KESALAHAN dan HELP-DOCUMENTATION

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

Pertemuan ke 6 Set Instruksi. Computer Organization Dosen : Eko Budi Setiawan

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

Arsitektur Set Instruksi. Abdul Syukur

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

Memory Management. Memory Ch. 8. Latar Belakang. Main-Memory Management

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

LANGUAGES AND TRANSLATOR

Web Site :

ALGORITMA PEMROGRAMAN 1C SEMANTIKS

ARSITEKTUR DAN ORGANISASI KOMPUTER

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM IX I/O INTERRUPT

ORGANISASI KOMPUTER DASAR

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

DASKOM & PEMROGRAMAN. Dani Usman

TEKNIK KOMPILASI. Firrar Utdirartatmo

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

Virtual Memory. Latar Belakang Demand Paging Pembuatan Proses Page Replacement Alokasi Frame Thrashing Contoh Sistem Operasi

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

Kelompok 55.1: Nilam Fitriah ( ) Nova Eka Diana ( ) Kritik :

Pengenalan JAVA. Farhat, ST., MMSI., MSc

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

P3 Pengantar Pemrograman C

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

Fase-fase proses sebuah kompilasi

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

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

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

Virtual Memory Ch. 9. Virtual Memory. SISTIM OPERASI (Operating System) IKI Johny Moningka

Pendahuluan. Kuliah online : Tekkom [2013/VI]

Pertemuan 2. Struktur Sistem Operasi

Bab 2: Struktur Sistem Operasi. Komponen Sistem Secara Umum

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI

Algoritma & Pemrograman #1. Antonius Rachmat C, S.Kom

BAB V ANALISA SEMANTIK

Pendahuluan. Tujuan Pembelajaran :

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

ilmu bahasa pemrograman ilmu c++ Copyright izie ilmu c++

Notasi Algoritma Separator Special Character Kesalahan pada program Yoannita

STRUKTUR CPU. Arsitektur Komputer

ALGORITMA & PEMROGRAMAN

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

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

LAPORAN PRAKTIKUM 1 TEKNIK KOMPILASI

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

Kumpulan instruksi lengkap yang dimengerti

Oleh: 1. Singgih Gunawan Setyadi ( ) 2. Handung Kusjayanto ( ) 3. Wahyu Isnawan ( )

SMK MUHAMMADIYAH 4 JAKARTA TEKNIK KOMPUTER DAN JARINGAN SISTEM OPERASI MENEJEMEN MEMORI

ALGORITMA PEMROGRAMAN 1C SINTAKS

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

Struktur Sistem Operasi

SMA SANTO PAULUS PONTIANAK

Tujuan. Pengenalan. Pengenalan Pemrograman Komputer. Komponen Dasar pada Komputer : Hardware. Komponen Dasar pada Komputer : Hardware

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

Konsep I/O Programming

PRODI PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER JURUSAN PENDIDIKAN TEKNIK ELEKTRO FAKULTAS TEKNIK

Gambar 1. Blok Utama Komputer

Pertemuan #5: Memori dan Memori Virtual

Struktur Sistem Operasi

ALGORITMA DAN PEMROGRAMAN #2

ARSITEKTUR KOMPUTER SET INSTRUKSI

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

TUGAS MATA KULIAH TEKNIK KOMPILASI

Compiler & Interpreter

TPI4202 e-tp.ub.ac.id

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

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

PENGANTAR TEKNIK KOMPILASI

Notasi Algoritma Separator Special Character. Dasar Pemrograman. Yoannita, S.Kom.

Sistem Operasi AGUS PAMUJI. Teknik Informatika

Pertemuan Ke-12 RISC dan CISC

Alih Kontrol dengan Flowchart

MODUL 2 KOMPONEN, LAYANAN SISTEM OPERASI M. R A J A B F A C H R I Z A L - S I S T E M O P E R A S I - C H A P T E R 2

SUMBER BELAJAR PENUNJANG PLPG

intruksi kepada CPU untuk mengakses sistem operasi. BIOS tersimpan pada Read Only

Input : Memasukkan data dari luar kedalam mikroprosesor Contoh: Keyboard, mouse

BAB 2 STRUKTUR SISTEM OPERASI. Komponen Sistem Operasi

PERTEMUAN MINGGU KE-5 ARSITEKTUR SET INSTRUKSI

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

IT234 ALGORITMA DAN STRUKTUR DATA

Unit Kendali (2) CONTROL UNIT. RegDst Branch. MemRead. MemToReg. Instruction (31-26) ALUOp MemWrite. ALUSrc. RegWrite

Tujuan perancangan bhs program

Arsitektur dan Organisasi Komputer. Set instruksi dan Pengalamatan

PENGANTAR KOMPUTER DAN TEKNOLOGI INFORMASI 1A

Transkripsi:

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

Code Generator Source code Front End Intermedate Code Code Optimizer Intermedate Code Code Generator Target Program Symbol Table

Code Generation Persyaratan Code Generation: Output kode harus benar dan berkualitas tinggi, menggunakan resources dan target machine secara efektif dan efisien Prakteknya proses ini tidak dapat diprediksi Bisa menggunakan teknik heuristik

Isu-isu pada Code Generation Target Program Output dari code generator adalah salah satu dari: Absolute Machine Language Mempunyai keuntungan dapat ditempatkan pada tempat yang fixed di dalam memori dan langsung dapat dieksekusi, program kecil. Relocatable Machine Language Obyek module dapat dikompilasi secara terpisah, satu set relocatable obyek modul dapat dilink bersama-sama dan dapat diload oleh linking loader untuk dieksekusi. Assembly Language Mempermudah proses code generation

Isu-isu Code Generation Apa yang harus diketahui tentang prosesor target? Untuk semua perintah yang mengandung operasi, kita harus tahu mana register yang diakses dari operand-nya Perintah-perintah yang bisa digunakan di mesin tersebut Bagaimana cara membaca input dan output dari mesin? (I/O) Bagaimana pengalokasian dan manajemen resourcenya (resource usage) Seberapa kecepatan input/output dan perintah-perintah yang digunakan latest write, fastest write, latest read, fastest write (latency) Exception handler Interupt handler

Isu-isu code generation Input untuk code generator Input adalah IR bersama dengan simbol-simbol dari tabel simbol yang digunakan untuk menentukan runtime address dari data obyek yang ditunjukkan oleh nama-nama dalam IR Diasumsikan sudah dilakukan type checking, type conversion, dan error handling (akan dibahas)

Isu-isu code generation Memory management Memetakan nama di dalam source program ke dalam addressnya. Semua nama-nama dalam IR diasumsikan merefer pada tabel simbol untuk nama tersebut Tipe dalam deklarasi menentukan lebar data (jumlah storage) yang diperlukan untuk nama yang dideklarasikan.

Isu-isu code generation Instruction Selection Harus uniform Memperhatikan instruction speed dan machine idiom Register Allocation mengalokasikan mana register-register yang akan dipakai (dialokasikan) Untuk nilai-nilai yang sering dipakai, gunakan Global Register Allocation Lebih bagus jika lebih banyak menggunakan register untuk operand daripada menggunakan operand di dalam memory. Selama register allocation dipilih variabel-variabel mana yang akan menetap pada register. Selama register assigment, diambil register khusus di mana variabel akan menetap.

Isu-isu code generation Algorithm analysis!! Latency Memory Latency Perhatikan juga latency operasi memori, bagaimana agar dua operasi bisa dilakukan secara sequensial. Hati-hati dengan page fault. Branch Latency Percabangan juga memiliki latency, kompiler harus menghitung keterlambatan yang mungkin terjadi antara percabangan yang menghasilkan instruksi lebih banyak dan yang lebih sedikit.

Isu-isu Error Handling Jika kompiler menemukan kesalahan atau error, maka kompiler harus menentukan tindakan apa yang harus dilakukan. Kesalahan dapat berupa: Kesalahan Leksikal Contoh : salah mengeja/menulis keyword; THEN ditulis TEN Kesalahan Sintaks Contoh : salah meletakkan kurung buka atau kurung tutup; jml = x + (a*(c+b) Kesalahan Semantik Tipe data salah: misal sudah dideklarasikan tipe integer, tapi diisi string Variabel belum didefiniskan tapi sudah dioperasikan

Langkah-langkah penanganan kesalahan Deteksi kesalahan Laporkan kesalahan Perbaikan kesalahan selama bisa diperbaiki, atau biarkan user yang membenarkannya.

Pelaporan Kesalahan Kode kesalahan Pesan kesalahan dalam bahasa natural Nama/atribut yang salah Tipe data yang terkait Contoh: error 150: unknown identifier error in line 10: class not found exception: java.lang.sytem.out

Reaksi Kompiler Reaksi yang tidak dapat diterima (tidak melaporkan error): Kompiler crash/hang. Kompiler masih dalam loop yang tidak pernah berhenti. Menghasilkan program obyek yang salah. Kompiler akan terus bekerja menghasilkan kode obyek yang salah, hal ini berbahaya jika tidak diketahui programmer. Kesalahan baru diketahui pada saat runtime

Reaksi Kompiler Reaksi yang benar tapi kurang benar Menemukan error, melaporkan error, lalu berhenti. Hal ini muncul jika kompiler menganggap bahwa kemungkinan terjadi error sangat kecil sehingga kemampuan mendeteksi error hanya satu untuk setiap kali kompilasi. Programmer akan membuang waktu untuk melakukan kompilasi untuk tiap error yang ada. Contoh: Program-program Interpreter

Reaksi Kompiler Kompiler menemukan error, melaporkan dan kemudian melakukan : Recovery (pemulihan) dan menemukan error lain jika masih ada dalam source code itu Contoh: Delphi/Pascal/C++ Repair (perbaikan kesalahan), lalu melanjutkan proses translasi dan melanjutkan membuat program obyek yang valid. Contoh? Challenge : kompiler tahu apa maksud programmer dan mengganti kesalahan sesuai dengan maksud programmer itu.

Error Recovery Bertujuan mengembalikan kondisi parser ke kondisi stabil, sehingga bisa melanjutkan proses parsing selanjutnya sehingga semua error bisa terbaca. Strateginya adalah: Proses Ad Hoc Reaksinya tergantung kompiler, tidak terikat pada aturan tertentu. Disebut juga Special Purpose Error Recovery Syntax Directed Recovery Melakukan recovery berdasarkan sintaks. Contoh: Begin A := A + 1 B := B + 1; C := C + 1; End Maka notasi BNF nya : begin<statement>?<statement>;<statement>;end Tanda? akan otomatis diganti menjadi ;

Error Recovery Secondary Error Recovery Berguna untuk melokalisir error: Panic Mode Maju terus dan mengabaikan teks sampai bertemu ; Contoh: IF A = 1 B := TRUE; Unit Deletion Menghapus keseluruhan unit / blok bagian error. Tipe ini tetap memelihara kebenaran sintaks dari program.

Error Recovery Context Sensitive Recovery Jika ada variabel yang belum dideklarasikan, maka kompiler akan mengira-ira tipe datanya berdasarkan kemunculannya.

Error Repair Bertujuan untuk mengubah source program menjadi benar agar bisa melanjutkan proses pembuatan program akhir. Mekanisme Ad Hoc : tergantung kompilernya (terserah) Syntax Directed Repair Mengganti / menyisipkan bagian yang error/salah

THE END Thanks for studying compiler God Bless You on your Final Exam! Open books Final Test : Bab 5 Bab 11!