KODE ANTARA & PEMBANGKITAN KODE Ken Kinanti Purnamasari MATERI PERKULIAHAN TEKNIK KOMPILASI KODE ANTARA & PEMBANGKITAN KODE 12 Ken Kinanti Purnamasari
Tahapan kompilasi yang dibuat untuk menerjemahkan program Kode Antara & Pembangkitan Kode Tahapan kompilasi yang dibuat untuk menerjemahkan program dari bahasa tingkat tinggi.
Kode Antara
Kode yang dibuat sebelum 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
Butuh waktu yang lebih lama karena melakukan penerjemahan dua kali. 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><operan><operator> (a+b)*(c+d) ab+cd+*
IF <exp> THEN <stmt1> ELSE <stmt2> <exp> <label1> BZ <stmt1> <label2> BR <stmt2> label1 label2 Keterangan : BZ : branch if zero (zero = salah ) {bercabang/meloncat jika kondisi yang dites salah} BR : branch {bercabang/meloncat tanpa ada kondisi yang dites}
IF a > b THEN c := d ELSE c := e; Notasi Postfixnya : <exp> <label1> BZ <stmt1> <label2> BR <stmt2> label1 label2 Contoh : IF a > b THEN c := d ELSE c := e; Notasi Postfixnya : 1. a 6. c 11. 2. b 7. d 12. e 3. > 8. := 13. 4. 11 9. 14 14. 5. BZ 10. BR
WHILE <exp> DO <stmt> Notasi Postfix WHILE <exp> DO <stmt> <exp> <label2> BZ <stmt> <label1> BR label1 label2
a:=1; WHILE a < 5 DO a:= a + 1; Notasi Postfixnya : <exp> <label2> BZ <stmt> <label1> BR label1 label2 Contoh : a:=1; WHILE a < 5 DO a:= a + 1; Notasi Postfixnya : 1. a 5. 5 9. 13. := 2. 1 6. < 10. 14. 4 3. 7. 16 11. 15. BR 4. 8. BZ 12. + 16.
N-Tuple Setiap baris boleh terdiri dari beberapa tupel Format : operator ... N-1 operan
N-Tuple Triples Notation Format : <operator><operan><operan>
N-Tuple Contoh : IF a > b THEN c := d ELSE c := e; Notasi Triples Notation-nya : >, a, b BZ, (1), (5) :=, c, d BR, ,(6) :=, c, e
N-Tuple Quadraples Notation Format : <operator><operan><operan><hasil>
N-Tuple Contoh : A := D * C + B / E Notasi Quadraples Notation-nya : *, D, C, T1 / , B, E, T2 +, T1, T2, A
Pembangkitan Kode
Penerjemahan ke bahasa assembly Pembangkitan Kode Penerjemahan ke bahasa assembly
(A+B) * (C+D) Pembangkitan Kode Contoh : Quadraples Notation: +, A, B, T1 +, C, D, T2 *, T1, T2, T3
Pembangkitan Kode Ditranslasikan ke dalam bahasa Assembly menjadi: {muat isi A ke akumulator} LDA A {tambahkan isi akumulator dengan B} ADD B {simpan isi akumulator ke T1} STO T1 LDA C ADD D STO T2 LDA T1 MUL T2 STO T3
Pembangkitan Kode Kode assembly tersebut dapat dioptimasi menjadi : {muat isi A ke akumulator} LDA A {tambahkan isi akumulator dengan B} ADD B {simpan isi akumulator ke T1} STO T1 LDA C ADD D MUL T1 STO T3
(A+B) * (C+D) +, A, B, T1 +, C, D, T2 *, T1, T2, T3 LDA A ADD B STO T1 ASSEMBLY 1 ASSEMBLY 2 LDA A ADD B STO T1 LDA C ADD D STO T2 LDA T1 MUL T2 STO T3 MUL T1
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