Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Chapter 20 Pembentukan Kode. Pembentukan Kode (Code Generation) Input : - Representasi intermediate : Representasi tiga alamat (quadrupels) Notasi posfik.

Presentasi serupa


Presentasi berjudul: "Chapter 20 Pembentukan Kode. Pembentukan Kode (Code Generation) Input : - Representasi intermediate : Representasi tiga alamat (quadrupels) Notasi posfik."— Transcript presentasi:

1 Chapter 20 Pembentukan Kode

2 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

3

4 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

5 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 )

6 Pembentukan Kode (Code Generation) 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 dapat diubah menjadi: MOV b, R 0 ADD c, R 0 MOV R 0, a ADD e, R 0 MOV R 0, d

7 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

8 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

9

10 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, R 0, R 1, …, R n-1 Punya instruksi dua-alamat / address dalam bentuk opsumber, tujuan dimana op adalah kode-op, dan sumber serta tujuan adalah field-field data.

11 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.

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

13 Pembentukan Kode (cont) Contoh: MOV R 0, Msimpan isi dari register R 0 pada lokasi memori M MOV 4(R 0 ), Msimpan nilai dari isi(4 + isi(R 0 )) pada lokasi memori M MOV *4(R 0 ), Msimpan nilai dari isi(isi(4 + isi(R 0 ))) pada lokasi memori M

14 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

15 Pembentukan Kode (cont) Contoh: MOV R 0, R 1 punya ongkos 1 MOV R 5, Mpunya ongkos 2 satu untuk instruksi satu untuk M ADD #1, R 3 punya ongkos 2 satu untuk instruksi satu untuk konstan SUB 4(R 0 ), *12(R 0 )punya ongkos 3 satu untuk instruksi dua untuk 4 dan 12

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

17 Pembentukan Kode (cont) Jika R 0, R 1, R 2 mengandung address dari a, b dan c, maka dapat dipakai:

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

19 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

20 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.

21 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.

22 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 */


Download ppt "Chapter 20 Pembentukan Kode. Pembentukan Kode (Code Generation) Input : - Representasi intermediate : Representasi tiga alamat (quadrupels) Notasi posfik."

Presentasi serupa


Iklan oleh Google