Optimalisasi pemakaian variabel / register

advertisement
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
Download