MATERI PERKULIAHAN TEKNIK KOMPILASI KODE ANTARA & PEMBANGKITAN KODE 9 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 bahasa tingkat tinggi diterjemahkan ke dalam Kode Antara Kode yang dibuat sebelum bahasa tingkat tinggi diterjemahkan ke dalam bahasa assembly
Jenis Kode Antara Notasi Postfix N-Tuple
Keuntungan Kode Antara meringankan proses penerjemahan beberapa 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.
Notasi Postfix Notasi Sufix atau Reverse Polish Posisi operator di paling akhir Format: <operan><operan><operator> (a+b)*(c+d) ab+cd+*
IF <exp> THEN <stmt1> ELSE <stmt2> Notasi Postfix 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}
Notasi Postfix Contoh : IF a > b THEN c := d ELSE c := e; Notasi Postfixnya : 1 a 9 2 b 10 15 3 > 11 BR 4 12 12 c 5 BZ 13 e 6 c 14 := 7 d 15 8 :=
WHILE <exp> DO <stmt> Notasi Postfix WHILE <exp> DO <stmt> <exp> <label2> BZ <stmt> <label1> BR label1 label2
Notasi Postfix Contoh : a:=1; WHILE a < 5 DO a:= a + 1; Notasi Postfixnya : 1 a 9 a 2 1 10 a 3 := 11 1 4 a 12 + 5 5 13 := 6 < 14 4 7 16 15 BR 8 BZ 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 : Notasi Quadraples Notation-nya : +, A, B, T1 +, C, D, T2 *, T1, T2, T3
Pembangkitan Kode Ditranslasikan ke dalam bahasa Assembly menjadi: LDA A {muat isi A ke akumulator} ADD B {tambahkan isi akumulator dengan B} STO T1 {simpan isi akumulator ke T1} LDA C ADD D STO T2 LDA T1 MUL T2 STO T3
Pembangkitan Kode Kode assembly tersebut dapat dioptimasi menjadi : LDA A {muat isi A ke akumulator} ADD B {tambahkan isi akumulator dengan B} STO T1 {simpan isi akumulator ke T1} LDA C ADD D MUL T1 STO T3
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