MATERI PERKULIAHAN TEKNIK KOMPILASI KODE ANTARA PEMBANGKITAN KODE

MATERI PERKULIAHAN TEKNIK KOMPILASI KODE ANTARA & PEMBANGKITAN KODE 12 Ken Kinanti Purnamasari

Kode Antara & Pembangkitan Kode Tahapan kompilasi yang dibuat untuk menerjemahkan program dari bahasa tingkat tinggi.

Kode Antara

Kode Antara Kode yang dibuat sebelum bahasa tingkat tinggi diterjemahkan ke dalam bahasa assembly

Keuntungan Kode Antara - meringankan proses penerjemahan dari bahasa tingkat tinggi ke bahasa mesin - meringankan proses optimasi - meringankan proses pembacaan kode internal

Kerugian Kode Antara - Butuh waktu yang lebih lama karena melakukan penerjemahan dua kali.

Jenis Kode Antara - Notasi Postfix - N-Tuple

Notasi Postfix - Notasi Suffix atau Reverse Polish - Posisi operator di paling akhir Format: <operan><operator> (a+b)*(c+d) ab+cd+*

IF <exp> THEN <stmt 1> ELSE <stmt 2> <exp> <label 1> BZ <stmt 1> <label 2> BR <stmt 2> label 1 label 2 Keterangan : BZ : branch if zero (zero = salah ) {bercabang/meloncat jika kondisi yang dites salah} BR : branch {bercabang/meloncat tanpa ada kondisi yang dites}

Notasi Postfix <exp> <label 1> BZ <stmt 1> <label 2> BR <stmt 2> label 1 label 2 Contoh : IF a > b THEN c : = d ELSE c : = e; Notasi Postfixnya : 1. 2. 3. 4. a b > 11 6. 7. 8. 9. c d : = 14 5. BZ 10. BR 11. c 12. e 13. : = 14.

Notasi Postfix WHILE <exp> DO <stmt> <exp> <label 2> BZ <stmt> <label 1> BR label 1 label 2

Notasi Postfix <exp> <label 2> BZ <stmt> <label 1> BR label 1 label 2 Contoh : a: =1; WHILE a < 5 DO a: = a + 1; Notasi Postfixnya : 1. 2. 3. 4. a 1 : = a 5. 6. 7. 8. 5 < 16 BZ 9. 10. 11. 12. a a 1 + 13. : = 14. 4 15. BR 16.

N-Tuple Setiap baris boleh terdiri dari beberapa tupel Format : operator. . . N-1 operan

N-Tuple Triples Notation Format : <operator><operan>

N-Tuple Contoh : IF a > b THEN c : = d ELSE c : = e; Notasi Triples Notation-nya : 1 >, a, b 2 BZ, (1), (5) 3 : =, c, d 4 BR, , (6) 5 : =, c, e 6

N-Tuple Quadraples Notation Format : <operator><operan><hasil>

N-Tuple Contoh : A : = D * C + B / E Notasi Quadraples Notation-nya : 1 *, D, C, T 1 2 / , B, E, T 2 3 +, T 1, T 2, A

Pembangkitan Kode

Pembangkitan Kode Penerjemahan ke bahasa assembly

Pembangkitan Kode Contoh : (A+B) * (C+D) Quadraples Notation: 1 +, A, B, T 1 2 +, C, D, T 2 3 *, T 1, T 2, T 3

Pembangkitan Kode Ditranslasikan ke dalam bahasa Assembly menjadi: {muat isi A ke akumulator} {tambahkan isi akumulator dengan B} {simpan isi akumulator ke T 1} LDA A ADD B STO T 1 LDA C ADD D STO T 2 LDA T 1 MUL T 2 STO T 3

Pembangkitan Kode assembly tersebut dapat dioptimasi menjadi : {muat isi A ke akumulator} {tambahkan isi akumulator dengan B} {simpan isi akumulator ke T 1} LDA A ADD B STO T 1 LDA C ADD D MUL T 1 STO T 3

(A+B) * (C+D) 1 +, A, B, T 1 2 +, C, D, T 2 3 *, T 1, T 2, T 3 ASSEMBLY 1 ASSEMBLY 2 LDA A ADD B STO T 1 LDA C ADD D STO T 2 LDA T 1 MUL T 2 STO T 3 LDA A ADD B STO T 1 LDA C ADD D MUL T 1 STO T 3

Pembangkitan Kode Alur tahapan kompilasi hingga pembangkitan kode

REFERENSI. . . Firrar U. , Teknik Kompilasi, J&J Learning Yogyakarta, 2001 Alfred v. a. & ullman J. D. , Compilers Principles Technique and Tools, Addison Wesley, 1988

TUGAS KELOMPOK Buatlah program Compiler yang mengandung Scanner, Parser, Semantic_Analyzer, dan Pembangkitan Kode ! Deadline : H-1 pertemuan selanjutnya
- Slides: 26