z
KODE ANTARA
(INTERMEDIATE CODE)
Desain Kompiler
Irfannur Diah (1 8 7 0 3 8 0 3 9 )
z
Tahapan Kompilasi
Tahapan
Analisis
•Analisis Leksikal
•Analisis Sintaks
•Analisis Semantik
Tahapan Sintesis
• Kode Antara
•Optimasi Kode
•Kode Generator
Tabel Simbol
Error Handler
z
Kode Antara ?
 Merupakan tahapan kedua setelah hasil dari tahapan analisis yang
dibuat oleh kompilator pada saat mentranslasikan dari bahasa
tingkat tinggi.
 Kode antara atau dalam bahasa inggrisnya intermediate code
merupakan pembangkit kode berdasarkan hasil parsing.
 Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah
yang dinamakan penerjemah berdasarkan sintak (syntax-directed
translator). Hasil penerjemahan ini biasanya merupakan perintah
tiga alamat (three-address code) yang merupakan representasi
program untuk suatu mesin abstrak. Perintah tiga alamat bisa
berbentuk quadruples (op, arg1, arg2, result), tripels (op, arg1,
arg2). Ekspresi dengan satu argumen dinyatakan dengan
menetapkan arg2 dengan – (strip, dash)
z
Kode Antara
Intermediate Code
Generation
Source Code Target Code
Kode perantara antara front-end (mesin independen) menuju
kepada backend (mesin dependen)
z
Fungsi Kode Antara
 Memperkecil bagian-bagian dalam proses
kompilasi dari sejumlah bahasa ke sejumlah
mesin.
 Hasil dari kode antara dapat digunakan lagi pada
mesin lainnya.
 Membuat proses optimalisasi menjadih mudah
dan mudah dipahami dari pada bahasa mesin.
z
Jenis – Jenis Kode Antara
 Triples, quadruples, indirect triples, abstract syntax trees
merupakan bentuk klasik yang biasa digunakan dalam optimasi
mesin independen dan pembangkitan kode mesin.
 Static Single Assignment form (SSA) adalah bentuk terbaru dan
mengadakan optimasi yang lebih efektif.
 Program Dependence Graph (PDG) berguna pada paralesasi
otomatis, penjadawalan instruksi, dan pipelining perangkat
lunak.
z
Notasi Kode Antara
 Terdapat dua macam kode antara yaitu notasi postfix dan n-
tuple
 Notasi postfix
<operand> <operand> <operator>
contohnya
( x + y ) * ( p + q )
maka hasil dari notasi postfixnya adalah
xy+ pq+ *
z
Notasi Postfix
Semua pada instruksi kontrol program yang ada akan diubah
menjadi notasi postfix, misalnya
 IF <expr> THEN <stmt1> ELSE <stmt2>
Diubah ke postfix menjadi ;
 <expr> <label1> BZ <stmt1> <label2> BR < stmt2>
 BZ : Branch if zero (salah) BR: melompat tanpa harus ada
kondisi yang ditest
Contoh : IF a > b THEN c := d ELSE c := e
z
Notasi Triples
Notasi pada triple dengan format
 <operator> <operand> <operand>
Contoh:
 A := D * C + B / E Jika dibuat intermidiate code triple: 1. * , D, C 2. /, B, E
3. +, (1), (2) 4. :=, A, (3)
Pada contoh tersebut perlu diperhatikan presedensi (hirarki) dari operator,
operator perkalian dan pembagian mendapatkan prioritas lebih dahulu dari
oada penjumlahan dan pengurangan.
Kelemahan dari notasi triple adalah sulit pada saat melakukan optimasi, maka
dikembangkan Indirect triples yang memiliki dua list; list instruksi dan list
eksekusi. List Instruksi berisikan notasi triple, sedangkan list eksekusi
mengatur eksekusinya
z
Referensi
 Bergmann, Seth D., "Compiler Design: Theory, Tools, and
Examples" (2016).
 https://www.geeksforgeeks.org/intermediate-code-generation-in-
compiler-design/
 https://www.tutorialspoint.com/compiler_design/compiler_design
_intermediate_code_generations.htm
 https://en.wikipedia.org/wiki/Code_generation_%28compiler%29
z
TERIMA KASIH
Mirror : Irfnrdh.com/kode-antara

Desain Kompiler - Kode Antara

  • 1.
    z KODE ANTARA (INTERMEDIATE CODE) DesainKompiler Irfannur Diah (1 8 7 0 3 8 0 3 9 )
  • 2.
    z Tahapan Kompilasi Tahapan Analisis •Analisis Leksikal •AnalisisSintaks •Analisis Semantik Tahapan Sintesis • Kode Antara •Optimasi Kode •Kode Generator Tabel Simbol Error Handler
  • 3.
    z Kode Antara ? Merupakan tahapan kedua setelah hasil dari tahapan analisis yang dibuat oleh kompilator pada saat mentranslasikan dari bahasa tingkat tinggi.  Kode antara atau dalam bahasa inggrisnya intermediate code merupakan pembangkit kode berdasarkan hasil parsing.  Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah berdasarkan sintak (syntax-directed translator). Hasil penerjemahan ini biasanya merupakan perintah tiga alamat (three-address code) yang merupakan representasi program untuk suatu mesin abstrak. Perintah tiga alamat bisa berbentuk quadruples (op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresi dengan satu argumen dinyatakan dengan menetapkan arg2 dengan – (strip, dash)
  • 4.
    z Kode Antara Intermediate Code Generation SourceCode Target Code Kode perantara antara front-end (mesin independen) menuju kepada backend (mesin dependen)
  • 5.
    z Fungsi Kode Antara Memperkecil bagian-bagian dalam proses kompilasi dari sejumlah bahasa ke sejumlah mesin.  Hasil dari kode antara dapat digunakan lagi pada mesin lainnya.  Membuat proses optimalisasi menjadih mudah dan mudah dipahami dari pada bahasa mesin.
  • 6.
    z Jenis – JenisKode Antara  Triples, quadruples, indirect triples, abstract syntax trees merupakan bentuk klasik yang biasa digunakan dalam optimasi mesin independen dan pembangkitan kode mesin.  Static Single Assignment form (SSA) adalah bentuk terbaru dan mengadakan optimasi yang lebih efektif.  Program Dependence Graph (PDG) berguna pada paralesasi otomatis, penjadawalan instruksi, dan pipelining perangkat lunak.
  • 7.
    z Notasi Kode Antara Terdapat dua macam kode antara yaitu notasi postfix dan n- tuple  Notasi postfix <operand> <operand> <operator> contohnya ( x + y ) * ( p + q ) maka hasil dari notasi postfixnya adalah xy+ pq+ *
  • 8.
    z Notasi Postfix Semua padainstruksi kontrol program yang ada akan diubah menjadi notasi postfix, misalnya  IF <expr> THEN <stmt1> ELSE <stmt2> Diubah ke postfix menjadi ;  <expr> <label1> BZ <stmt1> <label2> BR < stmt2>  BZ : Branch if zero (salah) BR: melompat tanpa harus ada kondisi yang ditest Contoh : IF a > b THEN c := d ELSE c := e
  • 9.
    z Notasi Triples Notasi padatriple dengan format  <operator> <operand> <operand> Contoh:  A := D * C + B / E Jika dibuat intermidiate code triple: 1. * , D, C 2. /, B, E 3. +, (1), (2) 4. :=, A, (3) Pada contoh tersebut perlu diperhatikan presedensi (hirarki) dari operator, operator perkalian dan pembagian mendapatkan prioritas lebih dahulu dari oada penjumlahan dan pengurangan. Kelemahan dari notasi triple adalah sulit pada saat melakukan optimasi, maka dikembangkan Indirect triples yang memiliki dua list; list instruksi dan list eksekusi. List Instruksi berisikan notasi triple, sedangkan list eksekusi mengatur eksekusinya
  • 10.
    z Referensi  Bergmann, SethD., "Compiler Design: Theory, Tools, and Examples" (2016).  https://www.geeksforgeeks.org/intermediate-code-generation-in- compiler-design/  https://www.tutorialspoint.com/compiler_design/compiler_design _intermediate_code_generations.htm  https://en.wikipedia.org/wiki/Code_generation_%28compiler%29
  • 11.
    z TERIMA KASIH Mirror :Irfnrdh.com/kode-antara