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
- Slides: 25