Back to IF2224 Teori Bahasa Formal dan Otomata
Topic: Notasi Triples dan Quadruples
Questions/Cues
Format Triples
Presedensi Operator
Indirect Triples
Format Quadruples
Keuntungan Quadruples
Peran Code Generator
Reference Points
- Slide 16_2025: Hal 6 - 12
1. Notasi Triples
Notasi Triples menggunakan format tiga elemen:
<operator> <operand> <operand>.Aturan Operasional:
Operand dapat berupa konstanta, variabel, atau nomor urut instruksi sebelumnya (ditulis dalam kurung, misal
(1)).Presedensi operator (perkalian/pembagian sebelum penjumlahan/pengurangan) harus diperhatikan saat menyusun urutan instruksi.
Contoh:
*, D, C
/, B, E
+, (1), (2)
:=, A, (3)2. Indirect Triples
Digunakan untuk mengatasi kesulitan optimasi pada notasi Triples standar. Sistem ini memiliki dua daftar:
Daftar Instruksi: Berisi notasi triples asli.
Daftar Eksekusi: Mengatur urutan eksekusi instruksi tersebut.
3. Notasi Quadruples
Notasi Quadruples menggunakan format empat elemen:
<operator> <operand> <operand> <result>.Karakteristik:
resultadalah variabel sementara (temporary variable) sepertiT1,T2, dst.Variabel sementara ini nantinya ditempatkan pada memori atau register mesin.
Contoh:
*, D, C, T1
/, B, E, T2
+, T1, T2, A4. Pembangkit Kode (Code Generator)
Bertugas mentransformasikan kode antara ke dalam bahasa assembly atau bahasa mesin.
Contoh Translasi (Single Accumulator):
Operasi +, A, B, T1 ditranslasikan menjadi:
LDA A(Isi A ke accumulator).
ADD B(Tambahkan accumulator dengan B).
STO T1(Simpan isi accumulator ke T1).5. Alur Instruksi Lengkap
Program Sumber: Analisis Leksikal menghasilkan token.
Sintaks & Semantik: Menghasilkan pohon sintaks atau kode antara.
Pembangkit Kode: Mengubah kode antara menjadi assembly.
Optimasi Kode: Memperbaiki assembly agar lebih efisien (misal menghapus penyimpanan yang tidak perlu).
Triples dan Quadruples adalah metode N-Tuple untuk merepresentasikan kode antara. Triples mereferensikan hasil operasi melalui nomor instruksi, sementara Quadruples menggunakan variabel sementara (Result). Indirect Triples memisahkan definisi instruksi dari urutan eksekusinya. Code Generator kemudian mengubah representasi ini menjadi instruksi assembly konkret yang siap dioptimasikan lebih lanjut.
Additional Information
Manajemen Variabel Sementara
Masalah utama dalam notasi Quadruples adalah bagaimana mengelola jumlah variabel sementara agar seminimal mungkin. Penggunaan variabel sementara yang berlebihan dapat meningkatkan penggunaan memori atau register secara tidak efisien pada tahap akhir pembangkitan kode.
Hirarki Operator (Presedensi)
Kompiler harus mengenali bahwa operator dengan prioritas tinggi harus dieksekusi terlebih dahulu. Dalam implementasi Triples, ini berarti operasi perkalian harus muncul pada baris instruksi dengan nomor urut yang lebih kecil sebelum operasi penjumlahan yang bergantung padanya.
Spaced Repetition Questions (Review)
1. Apa perbedaan utama antara notasi Triples dan Quadruples?
Triples mereferensikan hasil operasi berdasarkan nomor urut baris instruksi, sedangkan Quadruples menggunakan variabel sementara (T1, T2, dst.) untuk menyimpan hasil.2. Mengapa Indirect Triples dikembangkan?
Dikembangkan untuk memudahkan proses optimasi kode, karena memungkinkan perubahan urutan eksekusi tanpa harus mengubah daftar instruksi utama.