0% menganggap dokumen ini bermanfaat (0 suara)
387 tayangan6 halaman

Nama: Simon Pahala NIM: 2602216935: Compilation Techniques

Dokumen tersebut berisi tugas personal Simon Pahala yang membahas tiga topik yaitu perbedaan compiler dan interpreter, bagaimana C compiler menerjemahkan if-statement menjadi three-address code meskipun C tidak memiliki tipe boolean, dan membuat DAG untuk ekspresi matematika tertentu.

Diunggah oleh

simon pahala
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
387 tayangan6 halaman

Nama: Simon Pahala NIM: 2602216935: Compilation Techniques

Dokumen tersebut berisi tugas personal Simon Pahala yang membahas tiga topik yaitu perbedaan compiler dan interpreter, bagaimana C compiler menerjemahkan if-statement menjadi three-address code meskipun C tidak memiliki tipe boolean, dan membuat DAG untuk ekspresi matematika tertentu.

Diunggah oleh

simon pahala
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd

Nama : Simon Pahala

NIM : 2602216935

Tugas Personal ke-1

Week 3

Soal.

1. Apa perbedaan dari compiler dengan interpreter? Apa keuntungan dari compiler
dibanding interpreter dan interpreter dibanding compiler?

2. Bahasa pemrograman C tidak memiliki tipe boolean. Jelaskan bagaimana C compiler


dapat menerjemahkan if-statement menjadi three-address code!

3. Buatlah DAG untuk ekspresi berikut:

((x + y) - ( (x + y) * (x - y) ) ) + ( (x + y) * (x - y))

Jawaban.

1. Compiler dan interpreter adalah dua jenis perangkat lunak yang digunakan untuk
menjalankan program. Berikut adalah perbedaan utama antara keduanya:

Compiler:

Proses Eksekusi:

Compilation Techniques
Compiler: Menerjemahkan seluruh kode program secara keseluruhan sebelum eksekusi.
Hasilnya adalah file biner atau kode mesin yang dapat dijalankan secara langsung.

Keuntungan: Program yang dikompilasi umumnya memiliki kinerja yang lebih cepat
karena sudah diterjemahkan ke dalam bahasa mesin.

Kesalahan Kode:

Compiler: Menemukan dan melaporkan kesalahan selama proses kompilasi. Program


tidak akan dijalankan jika ada kesalahan.

Keuntungan: Kesalahan dapat dideteksi sebelum program dijalankan, memungkinkan


perbaikan sebelum waktu eksekusi.

Waktu Kompilasi:

Compiler: Waktu kompilasi mungkin memerlukan waktu yang lebih lama karena seluruh
program diterjemahkan sekaligus.

Keuntungan: Setelah kompilasi, program dapat dieksekusi berkali-kali tanpa memerlukan


proses kompilasi lagi.

Interpreter:

Proses Eksekusi:

Interpreter: Menerjemahkan dan menjalankan kode baris per baris secara langsung tanpa
menghasilkan file biner terpisah.

Keuntungan: Proses ini memungkinkan pengujian dan pengembangan yang lebih


interaktif.

Compilation Techniques
Kesalahan Kode:

Interpreter: Menemukan kesalahan pada saat eksekusi dan memberikan laporan pada saat
itu juga. Eksekusi berhenti jika kesalahan ditemukan.

Keuntungan: Fasilitas debugging yang lebih mudah karena kesalahan dilaporkan saat
eksekusi.

Waktu Eksekusi:

Interpreter: Umumnya memiliki waktu eksekusi yang lebih lambat karena setiap baris
kode diterjemahkan secara langsung saat program berjalan.

Keuntungan: Tidak memerlukan waktu kompilasi sebelum eksekusi, membuatnya lebih


fleksibel untuk skrip kecil dan pengembangan iteratif.

Keuntungan dan Kekurangan:

Compiler:

Keuntungan: Kinerja yang lebih cepat setelah kompilasi, deteksi kesalahan sebelum
eksekusi, dapat menghasilkan kode mesin yang dioptimalkan.

Kekurangan: Waktu kompilasi mungkin memakan waktu, tidak sefleksibel untuk


pengembangan iteratif.

Interpreter:

Keuntungan: Proses pengembangan yang lebih cepat, kemampuan debugging yang lebih
baik, lebih fleksibel untuk skrip kecil.

Kekurangan: Kinerja eksekusi umumnya lebih lambat, tidak menghasilkan file biner yang
dapat dijalankan secara langsung.

Compilation Techniques
2. Bahasa pemrograman C memang tidak memiliki tipe data boolean bawaan seperti yang
ada dalam beberapa bahasa pemrograman modern. Namun, dalam bahasa C, nilai-nilai
yang bersifat kebenaran sering kali direpresentasikan dengan menggunakan integer, di
mana 0 diasumsikan sebagai nilai "false," dan nilai selain 0 diasumsikan sebagai "true."

Sebagai contoh, ketika Anda menggunakan sebuah if statement dalam bahasa C, compiler
dapat mengubahnya menjadi tiga alamat (three-address code). Mari kita lihat contoh
sederhana berikut:

Dalam contoh ini, pernyataan if (x > 0) akan diubah oleh compiler menjadi three-address
code yang mungkin terlihat seperti ini:

Compilation Techniques
Dalam tiga alamat ini, LOAD digunakan untuk memuat nilai variabel x ke dalam register.
Kemudian, CMP digunakan untuk membandingkan nilai di register dengan 0. Instruksi
JLE adalah instruksi "Jump if Less Than or Equal," yang akan melompat ke alamat yang
ditentukan (dalam hal ini else_label) jika hasil perbandingan adalah kurang dari atau
sama dengan 0.

Selanjutnya, compiler dapat menambahkan instruksi-instruksi tambahan untuk


mengimplementasikan blok if true dan else sesuai dengan logika program.

Meskipun bahasa C tidak memiliki tipe boolean, compiler dapat menggunakan nilai-nilai
integer dan instruksi kondisional untuk mengimplementasikan logika percabangan seperti
yang terlihat dalam if-statement.

Compilation Techniques
3.

Compilation Techniques

Anda mungkin juga menyukai