SlideShare a Scribd company logo
1 of 27
Code Generation
Desain Kompiler
Nur Amalia Nasution – 207038026
S2 Teknik Informatika – Universitas Sumatera Utara
Code Generation
1 Apa itu kode perantara?
2 Dua representasi untuk mengekspresikan bahasa perantara
3 Notasi Postfix
4 Three-address Code
5 Struktur Data untuk Pembuatan Kode
6 P Code
7 Teknik Dasar Code Generation
1 Apa itu kode perantara?
Selama penerjemahan program sumber ke dalam kode objek
untuk mesin target, kompiler dapat menghasilkan kode bahasa
tingkat menengah, yang dikenal sebagai kode perantara atau teks
perantara. Kompleksitas kode ini terletak di antara kode bahasa
sumber dan kode objek. Kode antara dapat direpresentasikan
dalam bentuk notasi postfix, pohon sintaksis, graf berarah asiklik
(DAG), kode tiga alamat, quadruples, dan triples.
1 Apa itu kode perantara?
Manfaat menggunakan kode perantara dibandingkan pembuatan kode
langsung adalah sebagai berikut:
Kode perantara tidak bergantung pada mesin, yang memudahkan penargetan ulang
kompiler untuk menghasilkan kode untuk prosesor yang lebih baru dan berbeda
Kode perantara lebih dekat ke mesin target dibandingkan dengan bahasa sumber
sehingga lebih mudah untuk menghasilkan kode objek
Kode perantara memungkinkan pengoptimalan kode yang tidak bergantung pada
mesin. Beberapa teknik khusus digunakan untuk mengoptimalkan kode perantara
oleh ujung depan kompiler.
Terjemahan yang diarahkan sintaksis mengimplementasikan generasi kode
perantara dengan demikian, dengan menambah parser, itu dapat dilipat menjadi
parsing
High-level intermediate representation: Representasi ini lebih
dekat dengan program sumber. Dengan demikian, ini mewakili
struktur tingkat tinggi dari suatu program, yaitu, menggambarkan
struktur hierarki alami dari program sumber. Contoh representasi
ini adalah grafik asiklik terarah (DAG) dan pohon sintaksis.
Representasi ini cocok untuk tugas pemeriksaan tipe statis. Fitur
penting dari representasi tingkat tinggi diberikan sebagai berikut:
• mempertahankan struktur program karena lebih dekat ke
program sumber.
• dapat dibangun dengan mudah dari program sumber.
• Tidak mungkin untuk memecahkan program sumber untuk
mengekstrak tingkat berbagi kode karena pengoptimalan kode
dalam representasi ini menjadi sedikit rumit.
2 Dua representasi untuk mengekspresikan bahasa perantara
Dua representasi bahasa perantara dikategorikan sebagai berikut:
Low-level intermediate representation: Representasi ini lebih
dekat ke mesin target di mana ia mewakili struktur tingkat rendah
dari suatu program. Ini sesuai untuk tugas-tugas yang bergantung
pada mesin seperti alokasi register dan pemilihan instruksi. Contoh
khas dari representasi ini adalah kode tiga alamat. Fitur penting
dari representasi tingkat rendah diberikan sebagai berikut:
• dekat dengan mesin target.
• Itu membuat lebih mudah untuk menghasilkan kode objek.
• Upaya tinggi diperlukan oleh program sumber untuk
menghasilkan representasi tingkat rendah.
2 Dua representasi untuk mengekspresikan bahasa perantara
Dua representasi bahasa perantara dikategorikan sebagai berikut:
3 Notasi Postfix
Umumnya, kita menggunakan notasi infiks untuk mewakili ekspresi aritmatika
seperti perkalian dua operan a dan b. Dalam notasi infiks, operator selalu
ditempatkan di antara dua operan, seperti a * b. Namun dalam notasi postfix
(juga dikenal sebagai pemolesan terbalik atau notasi sufiks), operator digeser ke
ujung kanan, seperti ab*. Dalam notasi postfix, tanda kurung tidak diperlukan
karena posisi dan jumlah argumen operator hanya mengizinkan satu cara untuk
mendekode ekspresi postfix. Notasi postfix dapat diterapkan pada operator k-
ary untuk sembarang k > 1. Jika ß adalah operator k-ary dan a1, a2, . . . , ak
adalah ekspresi postfix apa pun, kemudian setelah menerapkan ß ke ekspresi,
ekspresi dalam notasi postfix direpresentasikan sebagai a1 a2 ...akß
3 Notasi Postfix
Sebagai contoh, perhatikan ekspresi infiks berikut dan notasi postfix yang
sesuai:
• (l + m) * n is an infix expression, the postfix notation will be l m + n *.
• p * (q + r) is an infix expression, the postfix expression will be p q r + *.
• (p - q) * (r + s) + (p - q) is an infix expression, the postfix expression will
be p q - r s + * p q - +.
3 Notasi Postfix
proses evaluasi ekspresi postfix
Notasi postfix dapat dengan mudah dievaluasi dengan menggunakan stack, dan
umumnya proses evaluasi memindai kode postfix dari kiri ke kanan.
1. Jika simbol pemindaian adalah operan, maka ia akan didorong ke tumpukan,
dan pemindaian dilanjutkan.
2. Jika simbol pemindaian adalah operator biner, maka dua operan paling atas
akan dikeluarkan dari tumpukan. Operator diterapkan ke operan ini, dan
hasilnya didorong kembali ke tumpukan.
3. Jika simbol pemindaian adalah operator unary, itu diterapkan ke bagian atas
tumpukan dan hasilnya didorong kembali ke tumpukan.
Note: Hasil dari operator unary dapat ditampilkan di dalam kurung. Sebagai
contoh, (−X).
3 Notasi Postfix
Evaluasi langkah demi langkah dari ekspresi postfix ini :
4 Three-address code
Apa itu three-address code?
String bentuk X: = Y OP Z, di mana op adalah operator biner, Y dan Z adalah
alamat operan, dan X adalah alamat hasil operasi, dikenal sebagai pernyataan
tiga alamat. Operator op dapat berupa operator aritmatika fixed atau
floating-point, atau operator logika. X, Y, dan Z dapat dianggap sebagai
konstanta atau sebagai nama yang telah ditentukan oleh programmer atau
nama sementara yang dihasilkan oleh compiler.
Pernyataan ini disebut sebagai "pernyataan tiga alamat" karena penggunaan
tiga alamat, satu untuk hasil dan dua untuk operan. Urutan pernyataan tiga
alamat tersebut dikenal sebagai kode tiga alamat.
Ekspresi aritmatika yang rumit tidak diperbolehkan dalam kode tiga alamat
karena hanya satu operasi yang diizinkan per pernyataan. Misalnya,
pertimbangkan ekspresi A + B * C, ekspresi ini berisi lebih dari satu operator
sehingga representasi ekspresi ini dalam pernyataan tiga alamat tunggal tidak
dimungkinkan.
4 Three-address code
Apa itu three-address code?
Oleh karena itu, kode tiga alamat dari ekspresi yang diberikan adalah sebagai
berikut:
T1: = B * C
T2: = A + T1
dimana T1 and T2 nama sementara yang dihasilkan oleh kompiler
4 Three-address code
Jenis Three-address code :
1. Assignment statements: Pernyataan-pernyataan ini dapat
direpresentasikan dalam bentuk berikut:
• X: = Y op Z, di mana op adalah setiap operator biner logis/aritmatika.
• X: = op Y, di mana op adalah operator unary seperti logika negasi, operator
konversi, dan operator shift.
• X: = Y, di mana nilai Y ditetapkan ke operan X.
2. Indexed assignment statements: Pernyataan-pernyataan ini dapat
direpresentasikan dalam bentuk berikut:
• X: = Y[I]
• X[I]: = Y, dimana X, Y dan saya merujuk ke objek data dan diwakili oleh
pointer ke tabel simbol.
4 Three-address code
Jenis Three-address code :
3. Address and pointer assignment statements: Pernyataan-pernyataan ini dapat
direpresentasikan dalam bentuk berikut: :
• X: = addr Y defines that X is assigned the address of Y.
• X: = *Y defines that X is assigned the content of location pointed to by Y.
• *X: = Y sets the r-value of the object pointed to by X to the r-value of Y.
4. Jump statements: Pernyataan lompat terdiri dari dua jenis — bersyarat dan tidak
bersyarat yang bekerja dengan operator relasional dan direpresentasikan dalam bentuk
berikut:
• Lompatan tanpa syarat direpresentasikan sebagai goto L, di mana L menjadi label.
Instruksi ini berarti bahwa pernyataan tiga alamat ke-L adalah yang berikutnya akan
dieksekusi.
• Lompatan bersyarat seperti jika X relop Y ke L, di mana relop menandakan operator
relasional (£, =, >, dll.) yang diterapkan antara X dan Y. Instruksi ini menyiratkan bahwa
jika hasil dari ekspresi X relop Y benar maka pernyataan berlabel L dieksekusi. Jika
tidak, pernyataan segera setelah jika X relop Y goto L dieksekusi.
4 Three-address code
Jenis Three-address code :
5. Procedure call/return statements: Pernyataan-pernyataan ini dapat didefinisikan dalam bentuk
berikut: :
• param X dan panggil P, n, di mana mereka diwakili dan biasanya digunakan dalam pernyataan
tiga alamat sebagai berikut:
param X1
param X2
.
.
.
param Xn
call P, n
Di sini, urutan pernyataan tiga alamat dihasilkan sebagai bagian dari panggilan prosedur P(X1, X2,
. . . , Xn), dan n dalam panggilan P, n didefinisikan sebagai bilangan bulat yang menentukan jumlah
total aktual parameter dalam panggilan.
• Y = panggilan p, n mewakili panggilan fungsi
• return Y, mewakili pernyataan return, di mana Y adalah nilai yang dikembalikan
5 Struktur Data untuk Pembuatan Kode
Implementasi yang paling umum adalah mengimplementasikan kode tiga
alamat pada dasarnya seperti yang ditunjukkan sebagai, yang berarti bahwa
empat bidang diperlukan. Satu untuk operasi dan tiga untuk alamat. Untuk
instruksi yang memiliki kurang dari tiga alamat, satu atau lebih bidang
alamat diberi nilai null atau "kosong". Pilihan bidang mana yang tergantung
pada implementasinya. Karena empat bidang diperlukan, representasi kode
tiga alamat seperti itu disebut quadruple.
5 Struktur Data untuk Pembuatan Kode
Contoh Tiny Program
{ sample program
in tiny language—
computes factorial
}
Read x; {input an integer}
If 0 < x then { don’t compute if x < = 0 }
fact := 1;
repeat
fact := fact * x;
x := x – 1
until x = 0;
write fact {output factorial of x }
end
5 Struktur Data untuk Pembuatan Kode
Three-address code untuk TINY program :
read x
t1 = x > 0
if_false t1 goto L1
fact = 1
label L2
t2 = fact * x
fact = t2
t3 = x – 1
x = t3
t4 = x == 0
if_false t4 goto L2
write fact
label L1
halt
5 Struktur Data untuk Pembuatan Kode
Penerapan Quadruple untuk three-address code
(rd, x, _, _)
(gt, x, 0, t1)
(if_f,t1,L1,_)
(asn,1,fact,_)
(lab,L2,_,_)
(mul,fact,x,t2)
(asn,t2,fact,_)
(sub,x,1,t3)
(asn,t3,x,_)
(eq,x,0,t4)
(if_f,t4,L2,_)
(wri,fact,_,_)
(lab,L1,_,_)
(halt,_,_._)
P-code (portable-code) adalah istilah yang dipakai untuk merepresentasikan
sejumlah instruksi yang ditujukan untuk meningkatkan efisiensi serta unjuk
kerja masa dieksekusi oleh perangkat lunak penerjemah (interpreter) atau
untuk mempermudah penerjemahan menjadi kode mesin.
6 P Code
Contoh ekspresi P-Code :
2*a + (b-3)
6 P Code
6 P Code
Versi P-Code untuk ekspresi ini adalah....
ldc 2 ; load constant 2
lod a ; load value of variable a
mpi ; integer multiplication
lod b ; load value of variable b
ldc 3 ; load constant 3
sbi ; interger substraction
adi ; integer addicition
7 Teknik Dasar Code Generation
Yaitu memodifikasi transversal postorder dari pohon syntax yang diimplementasikan
dengan grammar atribut selama proses parser jika sebuah pohon syntax tidak dihasilkan
secara jelas.
Algoritma dasar dapat digambarkan seperti prosedur rekursif berikut:
procedure genCode(T:treenode);
begin
if T is not nil then
generate code to prepare for code of left child of T;
genCode(left child of T);
generate code to prepare for code of right child of T;
genCode(right child of T);
generate code to implement the action of T;
end
7 Teknik Dasar Code Generation
Code generation dari intermediate code melibatkan 2 teknik standar, yaitu:
1. Macro Expansion, melibatkan pergantian dari masing-masing instruksi
intermediate code dengan sebuah rangkaian yang sama dengan instruksi kode
target.
2. Static Simulation, melibatkan simulasi straight-line dari efek intermediate code
dan menghasilkan kode target untuk mencocokkan efek tersebut
7 Teknik Dasar Code Generation
Code generation dari intermediate code melibatkan 2 teknik standar, yaitu:
1. Macro Expansion, melibatkan pergantian dari masing-masing instruksi
intermediate code dengan sebuah rangkaian yang sama dengan instruksi kode
target.
2. Static Simulation, melibatkan simulasi straight-line dari efek intermediate code
dan menghasilkan kode target untuk mencocokkan efek tersebut
Code generation dari intermediate code melibatkan 2 teknik standar, yaitu:
Jika kode antara mempunyai tipe data Boolean dan operasi logika seperti
and dan or, kemudian nilai dari ekspresi Boolean dapat dikomputasikan
dalam kode antara dengan cara yang sama seperti ekspresi aritmatika.
Pembuatan kode dari logical expression
THANKYOU!

More Related Content

Similar to Code Generation

Similar to Code Generation (20)

Teknik kompilasi
Teknik kompilasiTeknik kompilasi
Teknik kompilasi
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Pertemuan 9.1 pengalamatan juga
Pertemuan 9.1 pengalamatan jugaPertemuan 9.1 pengalamatan juga
Pertemuan 9.1 pengalamatan juga
 
Analisis Semantik - P6
Analisis Semantik - P6Analisis Semantik - P6
Analisis Semantik - P6
 
Algoritma 02
Algoritma 02Algoritma 02
Algoritma 02
 
Dasar dasar turbo pascal
Dasar dasar turbo pascalDasar dasar turbo pascal
Dasar dasar turbo pascal
 
Kbp dengan-c
Kbp dengan-cKbp dengan-c
Kbp dengan-c
 
Dasar pemrograman basic
Dasar pemrograman basicDasar pemrograman basic
Dasar pemrograman basic
 
Vb
VbVb
Vb
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Pseudocode
PseudocodePseudocode
Pseudocode
 
Set intruksi ppt
Set intruksi pptSet intruksi ppt
Set intruksi ppt
 
Laporan Praktikum Algoritma
Laporan Praktikum AlgoritmaLaporan Praktikum Algoritma
Laporan Praktikum Algoritma
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Bahasa Pemrograman C++
Bahasa Pemrograman C++Bahasa Pemrograman C++
Bahasa Pemrograman C++
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan Pemrograman
 
Function
FunctionFunction
Function
 
6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantik
 

Recently uploaded

MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASKurniawan Dirham
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKirwan461475
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxRizkyPratiwi19
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5KIKI TRISNA MUKTI
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxJamhuriIshak
 
Keterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UTKeterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UTIndraAdm
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxsukmakarim1998
 
Aksi nyata Malaikat Kebaikan [Guru].pptx
Aksi nyata Malaikat Kebaikan [Guru].pptxAksi nyata Malaikat Kebaikan [Guru].pptx
Aksi nyata Malaikat Kebaikan [Guru].pptxsdn3jatiblora
 
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptxMiftahunnajahTVIBS
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptArkhaRega1
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxssuser35630b
 
soal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxsoal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxazhari524
 
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDPPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDNurainiNuraini25
 
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatLatihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatArfiGraphy
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5ssuserd52993
 
Dinamika Hidrosfer geografi kelas X genap
Dinamika Hidrosfer geografi kelas X genapDinamika Hidrosfer geografi kelas X genap
Dinamika Hidrosfer geografi kelas X genapsefrida3
 
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdfsdn3jatiblora
 
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BModul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BAbdiera
 
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxTugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxmawan5982
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxssuser50800a
 

Recently uploaded (20)

MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
 
Keterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UTKeterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UT
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
 
Aksi nyata Malaikat Kebaikan [Guru].pptx
Aksi nyata Malaikat Kebaikan [Guru].pptxAksi nyata Malaikat Kebaikan [Guru].pptx
Aksi nyata Malaikat Kebaikan [Guru].pptx
 
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
soal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxsoal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptx
 
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDPPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
 
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatLatihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
 
Dinamika Hidrosfer geografi kelas X genap
Dinamika Hidrosfer geografi kelas X genapDinamika Hidrosfer geografi kelas X genap
Dinamika Hidrosfer geografi kelas X genap
 
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
 
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BModul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
 
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxTugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
 

Code Generation

  • 1. Code Generation Desain Kompiler Nur Amalia Nasution – 207038026 S2 Teknik Informatika – Universitas Sumatera Utara
  • 2. Code Generation 1 Apa itu kode perantara? 2 Dua representasi untuk mengekspresikan bahasa perantara 3 Notasi Postfix 4 Three-address Code 5 Struktur Data untuk Pembuatan Kode 6 P Code 7 Teknik Dasar Code Generation
  • 3. 1 Apa itu kode perantara? Selama penerjemahan program sumber ke dalam kode objek untuk mesin target, kompiler dapat menghasilkan kode bahasa tingkat menengah, yang dikenal sebagai kode perantara atau teks perantara. Kompleksitas kode ini terletak di antara kode bahasa sumber dan kode objek. Kode antara dapat direpresentasikan dalam bentuk notasi postfix, pohon sintaksis, graf berarah asiklik (DAG), kode tiga alamat, quadruples, dan triples.
  • 4. 1 Apa itu kode perantara? Manfaat menggunakan kode perantara dibandingkan pembuatan kode langsung adalah sebagai berikut: Kode perantara tidak bergantung pada mesin, yang memudahkan penargetan ulang kompiler untuk menghasilkan kode untuk prosesor yang lebih baru dan berbeda Kode perantara lebih dekat ke mesin target dibandingkan dengan bahasa sumber sehingga lebih mudah untuk menghasilkan kode objek Kode perantara memungkinkan pengoptimalan kode yang tidak bergantung pada mesin. Beberapa teknik khusus digunakan untuk mengoptimalkan kode perantara oleh ujung depan kompiler. Terjemahan yang diarahkan sintaksis mengimplementasikan generasi kode perantara dengan demikian, dengan menambah parser, itu dapat dilipat menjadi parsing
  • 5. High-level intermediate representation: Representasi ini lebih dekat dengan program sumber. Dengan demikian, ini mewakili struktur tingkat tinggi dari suatu program, yaitu, menggambarkan struktur hierarki alami dari program sumber. Contoh representasi ini adalah grafik asiklik terarah (DAG) dan pohon sintaksis. Representasi ini cocok untuk tugas pemeriksaan tipe statis. Fitur penting dari representasi tingkat tinggi diberikan sebagai berikut: • mempertahankan struktur program karena lebih dekat ke program sumber. • dapat dibangun dengan mudah dari program sumber. • Tidak mungkin untuk memecahkan program sumber untuk mengekstrak tingkat berbagi kode karena pengoptimalan kode dalam representasi ini menjadi sedikit rumit. 2 Dua representasi untuk mengekspresikan bahasa perantara Dua representasi bahasa perantara dikategorikan sebagai berikut:
  • 6. Low-level intermediate representation: Representasi ini lebih dekat ke mesin target di mana ia mewakili struktur tingkat rendah dari suatu program. Ini sesuai untuk tugas-tugas yang bergantung pada mesin seperti alokasi register dan pemilihan instruksi. Contoh khas dari representasi ini adalah kode tiga alamat. Fitur penting dari representasi tingkat rendah diberikan sebagai berikut: • dekat dengan mesin target. • Itu membuat lebih mudah untuk menghasilkan kode objek. • Upaya tinggi diperlukan oleh program sumber untuk menghasilkan representasi tingkat rendah. 2 Dua representasi untuk mengekspresikan bahasa perantara Dua representasi bahasa perantara dikategorikan sebagai berikut:
  • 7. 3 Notasi Postfix Umumnya, kita menggunakan notasi infiks untuk mewakili ekspresi aritmatika seperti perkalian dua operan a dan b. Dalam notasi infiks, operator selalu ditempatkan di antara dua operan, seperti a * b. Namun dalam notasi postfix (juga dikenal sebagai pemolesan terbalik atau notasi sufiks), operator digeser ke ujung kanan, seperti ab*. Dalam notasi postfix, tanda kurung tidak diperlukan karena posisi dan jumlah argumen operator hanya mengizinkan satu cara untuk mendekode ekspresi postfix. Notasi postfix dapat diterapkan pada operator k- ary untuk sembarang k > 1. Jika ß adalah operator k-ary dan a1, a2, . . . , ak adalah ekspresi postfix apa pun, kemudian setelah menerapkan ß ke ekspresi, ekspresi dalam notasi postfix direpresentasikan sebagai a1 a2 ...akß
  • 8. 3 Notasi Postfix Sebagai contoh, perhatikan ekspresi infiks berikut dan notasi postfix yang sesuai: • (l + m) * n is an infix expression, the postfix notation will be l m + n *. • p * (q + r) is an infix expression, the postfix expression will be p q r + *. • (p - q) * (r + s) + (p - q) is an infix expression, the postfix expression will be p q - r s + * p q - +.
  • 9. 3 Notasi Postfix proses evaluasi ekspresi postfix Notasi postfix dapat dengan mudah dievaluasi dengan menggunakan stack, dan umumnya proses evaluasi memindai kode postfix dari kiri ke kanan. 1. Jika simbol pemindaian adalah operan, maka ia akan didorong ke tumpukan, dan pemindaian dilanjutkan. 2. Jika simbol pemindaian adalah operator biner, maka dua operan paling atas akan dikeluarkan dari tumpukan. Operator diterapkan ke operan ini, dan hasilnya didorong kembali ke tumpukan. 3. Jika simbol pemindaian adalah operator unary, itu diterapkan ke bagian atas tumpukan dan hasilnya didorong kembali ke tumpukan. Note: Hasil dari operator unary dapat ditampilkan di dalam kurung. Sebagai contoh, (−X).
  • 10. 3 Notasi Postfix Evaluasi langkah demi langkah dari ekspresi postfix ini :
  • 11. 4 Three-address code Apa itu three-address code? String bentuk X: = Y OP Z, di mana op adalah operator biner, Y dan Z adalah alamat operan, dan X adalah alamat hasil operasi, dikenal sebagai pernyataan tiga alamat. Operator op dapat berupa operator aritmatika fixed atau floating-point, atau operator logika. X, Y, dan Z dapat dianggap sebagai konstanta atau sebagai nama yang telah ditentukan oleh programmer atau nama sementara yang dihasilkan oleh compiler. Pernyataan ini disebut sebagai "pernyataan tiga alamat" karena penggunaan tiga alamat, satu untuk hasil dan dua untuk operan. Urutan pernyataan tiga alamat tersebut dikenal sebagai kode tiga alamat. Ekspresi aritmatika yang rumit tidak diperbolehkan dalam kode tiga alamat karena hanya satu operasi yang diizinkan per pernyataan. Misalnya, pertimbangkan ekspresi A + B * C, ekspresi ini berisi lebih dari satu operator sehingga representasi ekspresi ini dalam pernyataan tiga alamat tunggal tidak dimungkinkan.
  • 12. 4 Three-address code Apa itu three-address code? Oleh karena itu, kode tiga alamat dari ekspresi yang diberikan adalah sebagai berikut: T1: = B * C T2: = A + T1 dimana T1 and T2 nama sementara yang dihasilkan oleh kompiler
  • 13. 4 Three-address code Jenis Three-address code : 1. Assignment statements: Pernyataan-pernyataan ini dapat direpresentasikan dalam bentuk berikut: • X: = Y op Z, di mana op adalah setiap operator biner logis/aritmatika. • X: = op Y, di mana op adalah operator unary seperti logika negasi, operator konversi, dan operator shift. • X: = Y, di mana nilai Y ditetapkan ke operan X. 2. Indexed assignment statements: Pernyataan-pernyataan ini dapat direpresentasikan dalam bentuk berikut: • X: = Y[I] • X[I]: = Y, dimana X, Y dan saya merujuk ke objek data dan diwakili oleh pointer ke tabel simbol.
  • 14. 4 Three-address code Jenis Three-address code : 3. Address and pointer assignment statements: Pernyataan-pernyataan ini dapat direpresentasikan dalam bentuk berikut: : • X: = addr Y defines that X is assigned the address of Y. • X: = *Y defines that X is assigned the content of location pointed to by Y. • *X: = Y sets the r-value of the object pointed to by X to the r-value of Y. 4. Jump statements: Pernyataan lompat terdiri dari dua jenis — bersyarat dan tidak bersyarat yang bekerja dengan operator relasional dan direpresentasikan dalam bentuk berikut: • Lompatan tanpa syarat direpresentasikan sebagai goto L, di mana L menjadi label. Instruksi ini berarti bahwa pernyataan tiga alamat ke-L adalah yang berikutnya akan dieksekusi. • Lompatan bersyarat seperti jika X relop Y ke L, di mana relop menandakan operator relasional (£, =, >, dll.) yang diterapkan antara X dan Y. Instruksi ini menyiratkan bahwa jika hasil dari ekspresi X relop Y benar maka pernyataan berlabel L dieksekusi. Jika tidak, pernyataan segera setelah jika X relop Y goto L dieksekusi.
  • 15. 4 Three-address code Jenis Three-address code : 5. Procedure call/return statements: Pernyataan-pernyataan ini dapat didefinisikan dalam bentuk berikut: : • param X dan panggil P, n, di mana mereka diwakili dan biasanya digunakan dalam pernyataan tiga alamat sebagai berikut: param X1 param X2 . . . param Xn call P, n Di sini, urutan pernyataan tiga alamat dihasilkan sebagai bagian dari panggilan prosedur P(X1, X2, . . . , Xn), dan n dalam panggilan P, n didefinisikan sebagai bilangan bulat yang menentukan jumlah total aktual parameter dalam panggilan. • Y = panggilan p, n mewakili panggilan fungsi • return Y, mewakili pernyataan return, di mana Y adalah nilai yang dikembalikan
  • 16. 5 Struktur Data untuk Pembuatan Kode Implementasi yang paling umum adalah mengimplementasikan kode tiga alamat pada dasarnya seperti yang ditunjukkan sebagai, yang berarti bahwa empat bidang diperlukan. Satu untuk operasi dan tiga untuk alamat. Untuk instruksi yang memiliki kurang dari tiga alamat, satu atau lebih bidang alamat diberi nilai null atau "kosong". Pilihan bidang mana yang tergantung pada implementasinya. Karena empat bidang diperlukan, representasi kode tiga alamat seperti itu disebut quadruple.
  • 17. 5 Struktur Data untuk Pembuatan Kode Contoh Tiny Program { sample program in tiny language— computes factorial } Read x; {input an integer} If 0 < x then { don’t compute if x < = 0 } fact := 1; repeat fact := fact * x; x := x – 1 until x = 0; write fact {output factorial of x } end
  • 18. 5 Struktur Data untuk Pembuatan Kode Three-address code untuk TINY program : read x t1 = x > 0 if_false t1 goto L1 fact = 1 label L2 t2 = fact * x fact = t2 t3 = x – 1 x = t3 t4 = x == 0 if_false t4 goto L2 write fact label L1 halt
  • 19. 5 Struktur Data untuk Pembuatan Kode Penerapan Quadruple untuk three-address code (rd, x, _, _) (gt, x, 0, t1) (if_f,t1,L1,_) (asn,1,fact,_) (lab,L2,_,_) (mul,fact,x,t2) (asn,t2,fact,_) (sub,x,1,t3) (asn,t3,x,_) (eq,x,0,t4) (if_f,t4,L2,_) (wri,fact,_,_) (lab,L1,_,_) (halt,_,_._)
  • 20. P-code (portable-code) adalah istilah yang dipakai untuk merepresentasikan sejumlah instruksi yang ditujukan untuk meningkatkan efisiensi serta unjuk kerja masa dieksekusi oleh perangkat lunak penerjemah (interpreter) atau untuk mempermudah penerjemahan menjadi kode mesin. 6 P Code
  • 21. Contoh ekspresi P-Code : 2*a + (b-3) 6 P Code
  • 22. 6 P Code Versi P-Code untuk ekspresi ini adalah.... ldc 2 ; load constant 2 lod a ; load value of variable a mpi ; integer multiplication lod b ; load value of variable b ldc 3 ; load constant 3 sbi ; interger substraction adi ; integer addicition
  • 23. 7 Teknik Dasar Code Generation Yaitu memodifikasi transversal postorder dari pohon syntax yang diimplementasikan dengan grammar atribut selama proses parser jika sebuah pohon syntax tidak dihasilkan secara jelas. Algoritma dasar dapat digambarkan seperti prosedur rekursif berikut: procedure genCode(T:treenode); begin if T is not nil then generate code to prepare for code of left child of T; genCode(left child of T); generate code to prepare for code of right child of T; genCode(right child of T); generate code to implement the action of T; end
  • 24. 7 Teknik Dasar Code Generation Code generation dari intermediate code melibatkan 2 teknik standar, yaitu: 1. Macro Expansion, melibatkan pergantian dari masing-masing instruksi intermediate code dengan sebuah rangkaian yang sama dengan instruksi kode target. 2. Static Simulation, melibatkan simulasi straight-line dari efek intermediate code dan menghasilkan kode target untuk mencocokkan efek tersebut
  • 25. 7 Teknik Dasar Code Generation Code generation dari intermediate code melibatkan 2 teknik standar, yaitu: 1. Macro Expansion, melibatkan pergantian dari masing-masing instruksi intermediate code dengan sebuah rangkaian yang sama dengan instruksi kode target. 2. Static Simulation, melibatkan simulasi straight-line dari efek intermediate code dan menghasilkan kode target untuk mencocokkan efek tersebut
  • 26. Code generation dari intermediate code melibatkan 2 teknik standar, yaitu: Jika kode antara mempunyai tipe data Boolean dan operasi logika seperti and dan or, kemudian nilai dari ekspresi Boolean dapat dikomputasikan dalam kode antara dengan cara yang sama seperti ekspresi aritmatika. Pembuatan kode dari logical expression