Pertemuan 13 Code Genarator

Slides:



Advertisements
Presentasi serupa
Pilihan Perancangan Assembler One-Pass dan Multi-Pass Assembler
Advertisements

Pengayaan Software/Hardware dan Pengantarmukaan
Arsitektur Komputer “Instruksi Set Arsitektur”
Teknik Kompilasi Febuari 2013.
MANAJEMEN MEMORY.
Chapter 20 Pembentukan Kode.
Pengantar Teknik Kompilasi
TEKNIK KOMPILASI.
ARSITEKTUR SET INSTRUKSI
Perkembangan Bahasa.
Analisis Semantik.
TEKNIK OPTIMASI.
ARSITEKTUR SET INSTRUKSI
Struktur Sistem Komputer
Pertemuan 4 (Set Instruksi ARM)
Fitur Assembler yang Tidak Berorientasi Mesin Literal, Statement yang Mendefinisikan Simbol, Ekspresi, Blok Program, Control Sections dan Program Linking.
Pengantar Teknik Kompilasi
Pertemuan 12 Procedure dan Macro
Struktur Sistem Komputer
Pertemuan 1 & 2 Pendahuluan
1 Pertemuan 9 Loaders Matakuliah: H0182/Pemrograman Sistem Tahun: 2006 Versi: 01.
Instruksi dalam CPU.
Pengenalan Assembler.
ARSITEKTUR SET INSTRUKSI
Pengantar Teknik Kompilasi
Set Instruksi:.
Manajemen Memori.
9. Manajemen Memori Utama
Pertemuan 3 (Bahasa Assembly)
PENGANTAR TEKNIK KOMPILASI
Teknik Kompilasi “Translator”
Pertemuan III SET Instruksi.
PENGANTAR LOGIKA & TEKNIKPEMROGRAMAN
Matakuliah : H0162/ Mikroprosesor Tahun : 2006 Versi : 1/0
ARSITEKTUR SET INSTRUKSI
Analisis semantik, kode antara dan pembangkitan kode
Mode Pengalamatan &Jenis-Jenis Instruksi
ORGANISASI & ARSITEKTUR KOMPUTER 2 SET INSTRUKSI IBP WIDJA, MT
Pengenalan Assembler.
Pengantar Teknik Kompilasi
Semantics Analyser Contoh : A := ( A+B) * (C+D)
Set Instruksi:.
William Stallings Computer Organization and Architecture
Teknik Optimasi.
TEKNIK OPTIMASI Menghasilkan kode program dengan ukuran yang lebih kecil, sehingga lebit cepat eksekusinya. Berdasarkan ketergantungan pada mesin : Machine.
Pertemuan 14 Operating System 2
ASSEMBLER #1 MK. PEMROGRAMAN SISTEM
ASSEMBLER #2 MK. PEMROGRAMAN SISTEM
ASSEMBLER #3 MK. PEMROGRAMAN SISTEM
PENDAHULUAN PEMROGRAMAN SISTEM
Teknik Kompilasi “Translator”
Computer Organization and Architecture
ARSITEKTUR SET INSTRUKSI
PENGANTAR LOGIKA & TEKNIK PEMROGRAMAN
TEKNIK KOMPILASI PERTEMUAN II.
Teknik Kompilasi Abdul Wahid, ST, M.Kom
TEKNIK OPTIMASI Menghasilkan kode program dengan ukuran yang lebih kecil, sehingga lebit cepat eksekusinya. Berdasarkan ketergantungan pada mesin : Machine.
ARSITEKTUR SET INSTRUKSI
MANAJEMEN MEMORY.
Pengantar Teknik Kompilasi
Ilustrasi Proses Kompilasi
Pengantar Teknik Kompilasi
MANAJEMEN MEMORY.
TEKNIK OPTIMASI.
Semantics Analyser by Kustanto
TEKNIK OPTIMASI.
TEKNIK OPTIMASI & TABEL INFORMASI
ARSITEKTUR SET INSTRUKSI
Karakteristik Set Instruksi 14 JP. Karakteristik Set Instruksi Pengertian Set Instruksi Set instruksi adalah kumpulan dari instruksi yang dapat dijalankan.
Transcript presentasi:

Pertemuan 13 Code Genarator Matakuliah : T0522 / Teknik Kompilasi Tahun : 2005 Versi : 1/6 Pertemuan 13 Code Genarator

Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mahasiswa dapat menunjukkan hasil code generation dari suatu input string program (C3)

Outline Materi Issues dalam disain code generator The target machine Basic block dan flow graph Representasi DAG dari basic block Register allocation and assignment

Posisi Code Generation Tahap terakhir dari kompiler adalah code generator. Input code generator adalah intermediate representation dari source program, sedangkan outputnya adalah target program yang ekivalen. Posisi code generator dalam kompiler adalah sebagai berikut : intermediate code front end optimizer generator symbol table source program target

Persyaratan code generator : output code harus benar dan berkualitas tinggi, yaitu harus menggunakan resources dari target machine secara efektif. harus efisien. Secara matematis, masalah untuk membangkitkan code yang optimal adalah undecidable. Secara praktek, kita akan mengguna-kan teknik heuristik yang bagus, tapi tidak selalu berarti optimal code.

Issue-issue dalam Code Generator Design Walaupun sangat tergantung kepada target machine dan operating system, masalah-masalah yang penting dalam code generation adalah : Input untuk code generator Target program Memory Management Instruction Selection Register Allocation Pemilihan Urutan Evaluation Pendekatan Code Generator

Input Untuk Code Generator Input untuk code generator terdiri dari intermediate representation dari source program yang dihasilkan oleh front-end, bersama dengan informasi di dalam symbol table yang digunakan untuk menentukan run time address dari data object yang ditunjukkan oleh nama-nama dalam intermediate representation. Diasumsikan bahwa sebelum code generation, front-end telah men-scan, men-parse, & menerjemahkan source program ke dalam intermediate repre-sentation detail. Selain itu, diasumsikan telah dilakukan type checking, sehingga type-conver-sion operator telah di-insert dimana perlu & semantic error telah dideteksi.

Target Program Output dari code generator adalah target program, yang bisa mengambil bentuk : Absolute Machine Language Relocatable Machine Language Assembly Language Target program dalam bentuk Absolute machine language mem-punyai keuntungan dapat ditempatkan dalam lokasi yang fixed di dalam memory & langsung dapat dieksekusi. Program yang kecil dapat di-kompile dan dieksekusi dengan cepat. Contoh : sejumlah “student-job” compiler, seperti WATFIV dan PL/C Keuntungan target program dalam bentuk Relocatable Machine Language Program (Object Module) adalah sub-program dapat di-kompile secara terpi-sah.Satu set relocatable object module dapat di-link bersama-sama & di-load oleh linking loader untuk dieksekusi. Walaupun keluar usaha ekstra untuk linking & loading,namun kita mendapat fleksibilitas karena dapat mengkompile subroutine secara terpisah. Assembly Language program sbg tar-get program mempunyai keuntungan kemudahan proses code generation. Kita dapat men-generate symbolic instruction & menggunakan fasilitas makro dari assembler untuk men-generate code. Biaya yang harus dikeluarkan adalah tahap assembly setelah code generation.

Memory Management MOV (move source to destination) Memetakan nama di dalam source program ke address dari data object dalam run-time memory dikerjakan bersama-sama oleh front-end dan code generator. Diasumsikan bahwa nama dalam three-address statement merefer kepada symbol-table entry untuk nama tersebut. Tipe dalam deklarasi menentukan lebar (jumlah storage) yang diperlukan untuk nama yang dideklarasikan. –         Register R0, R1, . . ., Rn-1 –         op source, destination MOV (move source to destination) ADD (add source to destination) SUB (subtract source to destination) –         Address mode –         Instruction Cost

Instruction Selection Uniformity dan completeness dari instruction set adalah faktor yang penting. Selain itu, faktor yang penting lainnya adalah instruction speed dan machine idiom. Contoh : Setiap three-address statement dalam bentuk : x := y + z dimana x, y, dan z dialokasikan secara static, dapat diterjemahkan ke dalam sekuens code : MOV y, R0 /* load y ke register R0 */ ADD z, R0 /* add z ke R0 */ MOV R0, x /* store R0 ke dalam x */ Namun statement-by-statement code generation ini sering menghasilkan code yang buruk. Contoh : Sekuens dari statement a := b + c d := a + e dapat diterjemahkan ke dalam : MOV b, R0 ADD c, R0 MOV R0, a MOV a, R0 ADD e, R0 MOV R0, d Di sini statement ketiga dan keempat akan redundant, juga statement yang ketiga jika a tidak digunakan secara berurutan.

Register Allocation Instruksi yang melibatkan register operand biasanya lebih pendek dan lebih cepat daripada yang melibatkan operand di dalam memory. Karena itu, penggunaan register yang efisien sangat penting untuk membangkitkan code yang baik. Penggunaan register dibagi ke dalam 2 sub-masalah : Selama register allocation, dipilih variable-variable yang akan mene-tap di dalam register pada suatu titik dalam program. Selama register assignment, diam-bil register khusus dimana variabel akan menetap. Menemukan optimal assignment dari register untuk variabel sulit, walaupun dengan single register. Secara matematis, problem ini adalah NP-Complete.

Pemilihan Urutan Evaluasi Urutan dilakukannya komputasi dapat mempengaruhi efisiensi dari target code. Beberapa urutan komputasi memerlukan register yang lebih sedikit untuk menampung intermediate result daripada yang lainnya. Mengambil urutan terbaik adalah NP-Complete Problem.

Pendekatan Code Generator Kriteria terpenting untuk code genera-tor adalah menghasilkan code yang baik. Salah satu tujuan perancangan yang penting dari Code Generator adalah : mudah diimplementasikan mudah ditest mudah di-maintain

Run-Time Storage Strategi alokasi : Static dan Stack Static allocation Pada static allocation statement call diterjemahkan menjadi : Move #here + 20, callee.static_area GOTO calle.code_area Three-Address Code /* code for c */ action1 call p action2 halt /* code for p */ action3 return Activation Record for c (64 bytes) 0:return address 8: arr 56:i 60:j Activation Record for p (88 bytes) 0:return address 4: buf 84:n