Chapter 20 Pembentukan Kode.

Slides:



Advertisements
Presentasi serupa
Fungsi Konsep Pemrograman.
Advertisements

ASSEMBLER PERTEMUAN KE-1
BAB III BAHASA DAN PENGEMBANGAN PROGRAM MIKROPROSESOR
Manajemen Memory Kelompok 7 : M. Khoirur Roziqin ( )
Sistem Input/output (I/O)
Pembentukan Kode Intermediate
FUNGSI Deklarasi dan Definisi fungsi Void dan Non-void Fungsi main.
Gambaran Umum Sistem Operasi
Arsitektur Komputer “Mode Pengalamatan”
Mode Pengalamatan.
Teknik Kompilasi Febuari 2013.
PERTEMUAN KE-17 PERKULIAHAN SISTEM OPERASI
DEBUG.
TEKNIK KOMPILASI.
Situasi Saat Program Berjalan (Run-time Environment)
MEMORY (Manajemen Memori)
Analisis Semantik.
ARSITEKTUR SET INSTRUKSI
Struktur Sistem Operasi PART 2.
SET INSTRUKSI.
REGISTER.
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
Pengantar Bahasa Rakitan
Bahasa Mesin dan Assembly
Arsitektur Komputer CISC dan RISC
Pertemuan 4 (Set Instruksi ARM)
SISTEM OPERASI MEMORY MANAGEMENT.
Reduced Instruction Set Computers
Pertemuan 5 (SET INSTRUKSI ARM, MOTOROLA, DAN INTEL)
Manajemen Memori.
Pertemuan 13 Code Genarator
Management Memory.
Sistem Input/output (I/O)
Pengenalan Assembler.
Pengantar Teknik Kompilasi
Manajemen Memori.
BAB IV Teknik Pemrograman
Sistem Paging Edi Sugiarto, S.Kom.
MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR Dosen Pengampu:
FUNGSI UMUM BAGIAN KOMPILATOR Dosen Pengampu: Istiqomah, s.kom
MEMORY MANAGEMENT PART 2
Pertemuan 3 (Bahasa Assembly)
MODE PENGALAMATAN DAN SET INSTRUKSI
REGISTER.
Manajemen Memori (2).
Mode Pengalamatan &Jenis-Jenis Instruksi
SEMANTIKS Pertemuan Ke-3.
ORGANISASI & ARSITEKTUR KOMPUTER 2 SET INSTRUKSI IBP WIDJA, MT
ARSITEKTUR KOMPUTER.
Pengenalan Assembler.
MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR Dosen Pengampu:
Semantics Analyser Contoh : A := ( A+B) * (C+D)
William Stallings Computer Organization and Architecture
Reduced Instruction Set Computers
ASSEMBLER #1 MK. PEMROGRAMAN SISTEM
ASSEMBLER #2 MK. PEMROGRAMAN SISTEM
ASSEMBLER #3 MK. PEMROGRAMAN SISTEM
Computer Organization and Architecture
Pertemuan 2 (INSTRUKSI MESIN DAN PROGRAM)
TEK 2524 Organisasi Komputer
Pengantar Bahasa Rakitan
TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI)
Pengantar Bahasa Rakitan
Ilustrasi kinerja CPU.
Manajemen Memori (2).
PANDANGAN UMUM SISTEM OPERASI DAN SISTEM KOMPUTER
Manajemen Memori (2).
Pengantar Bahasa Rakitan
CHAP 6 SET INSTRUKSI MEMORI
Karakteristik Set Instruksi 14 JP. Karakteristik Set Instruksi Pengertian Set Instruksi Set instruksi adalah kumpulan dari instruksi yang dapat dijalankan.
Transcript presentasi:

Chapter 20 Pembentukan Kode

Pembentukan Kode (Code Generation) Input : - Representasi intermediate : Representasi tiga alamat (quadrupels) Notasi posfik Representasi mesin virtual Representasi grafik ( pohon sintak dan DAG) Program sasaran (target) Bentuk : - Bahasa mesin absolut Bahasa mesin relocatable Bahasa assembly

Pembentukan Kode (Code Generation) Bahasa mesin absolut Dapat ditempatkan pada lokasi yang pasti dalam memori Dapat langsung dieksekusi Bahasa mesin relocatable Subprogram-subprogram dapat dikompilasi secara terpisah Bahasa assembly Pembentukan kode sangat mudah Instruksi simbol dapat dibuat Fasilitas makro assembler dapat dipakai

Pembentukan Kode (Code Generation) Memory management Jika kode mesin dibuat,label-label pada statement tiga alamat harus diubah menjadi address instruksi. Proses ini dikenal dengan backpatching. Pemilihan instruksi Tidak peduli efisiensi  pemilihan / pemakaian instruksi sangat mudah. Masing-masing statement tiga alamat dibuatkan kodenya. Kode yang dihasikan ‘buruk’ dan tidak efusueb (tetapi, ini yang dipakai dikelas )

Pembentukan Kode (Code Generation) dapat diubah menjadi: MOV b, R0 ADD c, R0 MOV R0, a ADD e, R0 MOV R0, d Contoh : a := b+c d := a+e Kualitas kode yang terbentuk dapat ditentukan dengan jumlah dan macam instruksi yang dimiliki. Misalnya : inc a dapat menggantikan a := a+1

Pembentukan Kode (Code Generation) Alokasi Register Instruksi yang memakai register untuk operand biasanya lebih singkat dan cepat dibanding dengan operand/instrusksi yag memakai memory(dikelas kita pakai ‘memory’) Pemakaian register Alokasi register, pilih variable-variable yang akan menempati register. Register assignment, pilih register mana yang akan ditempati oleh variable

Pembentukan Kode (Code Generation) Memilih register yang optimal  sulit Secara matematis : NP-Complete. Dipersulit lagi oleh keadaan hardware dan OS dimana mesin targetnya dipakai,yang memberikan syarat tentang pemakaian register. Contoh : IBM System/370 perkalian M x,y x harus diregister genap y harus diregister tunggal

Pembentukan Kode (cont) Model mesin register yang dipakai pada beberapa komputer mini address mesinnya dinyatakan dalam satuan byte, dimana satu word didefinisinikan sebagai 4 byte. punya n register, R0, R1, …, Rn-1 Punya instruksi dua-alamat / address dalam bentuk op sumber, tujuan dimana op adalah kode-op, dan sumber serta tujuan adalah field-field data.

Pembentukan Kode (cont) Kode-kode op yang dipunyai diantaranya: MOV (pindahkan sumber ke tujuan) ADD (tambahkan sumber pada tujuan) SUB (kurangkan sumber dari tujuan) Sumber dan tujuan suatu instruksi ditentukan dengan menggabungkan register serta lokasi memori dengan mode-mode address.

Pembentukan Kode (cont) Mode-mode addressnya adalah sbb:

Pembentukan Kode (cont) Contoh: MOV R0, M simpan isi dari register R0 pada lokasi memori M MOV 4(R0), M simpan nilai dari isi(4 + isi(R0)) pada lokasi memori M MOV *4(R0), M simpan nilai dari isi(isi(4 + isi(R0))) pada lokasi memori M

Pembentukan Kode (cont) Ongkos instruksi = satu + ongkos yang berkaitan dengan mode address dari sumber dan tujuan. Ongkos ini menggambarkan panjangnya suatu instruksi (dalam word). Dalam pembentukan kode  ongkos harus diminimumkan

Pembentukan Kode (cont) Contoh: MOV R0, R1 punya ongkos 1 MOV R5, M punya ongkos 2 satu untuk instruksi satu untuk M ADD #1, R3 punya ongkos 2 satu untuk konstan SUB 4(R0), *12(R0) punya ongkos 3 dua untuk 4 dan 12

Pembentukan Kode (cont) Contoh beberapa macam instruksi untuk membentuk kode dari a:= b + c, dimana b, c merupakan variabel sederhana pada lokasi memori berbeda

Pembentukan Kode (cont) Jika R0, R1, R2 mengandung address dari a, b dan c, maka dapat dipakai:

Pembentukan Kode (cont) Jadi, gunakan kemampuan pengaddressan secara efisien !!!

Pengaturan Storage pada saat Run time (terutama pada saat suatu prosedur dipanggil) Beberapa statement tiga alamat untuk pemanggilan prosedur: 1. Call 2. Return 3. Halt 4. Action Asumsi, memori terbagi atas 3 bagian: 1. Kode 2. Data statis 3. Stack

Kode untuk Call Dimana: #here + 20 adalah address dari instruksi setelah goto. area_statis.proc_yg_dipanggil adalah konstan yang merupakan address dari record aktifasinya. area_kode.proc_yg_dipanggil adalah konstan yang merupakan address dari instruksi pertama proc_yg_dipanggil.

Kode untuk return Untuk alokasi record aktifasi pada saat prosedur dipanggil. SP = register yang merupakan pointer menunjuk ke awal record aktifasi (display[i] dalam tugas di kelas). Variabel dapat diakses dengan menambahkan offsetnya pada SP. Alokasi record aktifasi dilakukan dengan menaikkan SP sebanyak ‘besarnya’ record aktifasi, didealokasi dengan mengurangi / menurunkan nilai SP.

Kode untuk return (cont) Instruksi-instruksinya: Prosedur pertama menginisialisasi stack: MOV #stackstart, SP /*inisialisasi stack */ kode prosedur pertama HALT /* akhir eksekusi */ Memanggil prosedur ADD #ukuran_record_pemanggil, SP MOV #here + 16, SP /* simpan return address */ GOTO area_kode.proc_yg_dipanggil return sequence GOTO *0(SP) /*kembali ke pemanggil */ SUB #ukuran_record_pemanggil, SP /* mengembalikan sp ke tempat semula */