Optimalisasi pemakaian variabel (register) Proses ini bertujuan untuk mengoptimalkan pemakaian variabel/register pada source code. Menggunakan ilustrasi contoh penyelesaian perhitungan matematika sederhana. Beberapa instruksi yang digunakan: Instruksi a. Perkalian (multiplication) b. Pembagian (division) c. Pengurangan (subtraction) d. Penjumlahan (addition) e. Mengisi operand1 dengan nilai operand 2 f. Mengisi operand2 dengan nilai operand1 Mnemonic MPY DIV SUB ADD LOAD operand1, operand2 STORE operand1, operand2 Catatan: instruksi a dan b memiliki derajat pengerjaan lebih tinggi dari instruksi c dan d. Contoh soal: Z = (A/B + C*D) / (E*F – G*H/I) Akan dikerjakan menggunakan cara: instruksi 2 address dan instruksi 3 address. Proses optimalisasi dapat diamati pada jumlah baris instruksi dan jumlah variabel yang digunakan. A. Instruksi no 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 2 address instruksi LOAD R1, DIV R1, LOAD R2, MPY R2, ADD R1, STORE R1, LOAD R1, MPY R1, LOAD R2, MPY R2, DIV R2, SUB R1, LOAD R2, DIV R2, STORE R2, A B C D R2 Z E F G H I R2 Z R1 Z 1 Contoh soal: Z = (A/B + C*D) / (E*F – G*H/I) B. Instruksi no 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 2 address (alternatif) instruksi LOAD R1, E MPY R1, F LOAD R2, G MPY R2, H DIV R2, I SUB R1, R2 STORE R1, Z LOAD R1, A DIV R1, B LOAD R2, C MPY R2, D ADD R1, R2 LOAD R2, Z DIV R1, R2 STORE R1, Z kesimpulan: Untuk menyelesaikan contoh soal tersebut dengan mengunakan instruksi 2 address, maka memerlukan 15 baris instruksi dan 2 buah variabel (register, R1 dan R2). 2 Contoh soal: Z = (A/B + C*D) / (E*F – G*H/I) C. Instruksi no 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 3 address instruksi LOAD R1, A LOAD R2, B DIV R3, R1, R2 LOAD R4, C LOAD R5, D MPY R6, R4, R5 ADD R7, R3, R6 LOAD R8, E LOAD R9, F MPY R10, R8, R9 LOAD R11, G LOAD R12, H MPY R13, R11, R12 LOAD R14, I DIV R15, R13, R14 SUB R16, R10, R15 DIV R17, R7, R16 STORE R17, Z Pemakaian variabel (register) belum dioptimalisasi. Langkah-langkah proses optimalisasi pemakaian variabel (register)… 3 Proses optimalisasi pemakaian variabel (register) instruksi 3 address Tabel pemakaian register nomor perintah 1 2 3 4 5 6 . . . . . . var R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 - - - - - 7 . 8 . 9 . 10 11 12 13 14 15 16 17 18 . . . . . . . . . - - - - - - - - - - - - - - - - - - - - - - - Graf yang dihasilkan dari tabel pemakaian variabel (register) W1 W2 W3 W4 W5 {R1, R4, R7} {R2, R5, R8, R11, R14, R16} {R3, R9, R12, R15, R17} {R6, R10} {R13} Pemakaian variabel (register) sebelum dioptimalisasi 17 buah, yaitu: R1, R2,…R17 Pemakaian variabel (register) setelah dioptimalisasi 5 buah, yaitu: W1, W2, W3, W4, W5. (pada source code, variabel W1 diganti R1, W2 Æ R2, W3 Æ R3, W4 Æ R4, dan W5 ÆR5) 4 Contoh soal: Z = (A/B + C*D) / (E*F – G*H/I) D. Instruksi no 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 3 address (setelah dioptimalisasi) instruksi LOAD R1, A LOAD R2, B DIV R3, R1, R2 LOAD R1, C LOAD R2, D MPY R4, R1, R2 ADD R1, R3, R4 LOAD R2, E LOAD R3, F MPY R4, R2, R3 LOAD R2, G LOAD R3, H MPY R5, R2, R3 LOAD R2, I DIV R3, R5, R2 SUB R2, R4, R3 DIV R3, R1, R2 STORE R3, Z 5