Tuesday, 18 December 2012
MIPS
Daftar Penggunaan :
$zero :value 0 (reg 0)
$v0, $v1: result values (reg’s 2 and 3)
$a0 – $a3: arguments (reg’s 4 – 7)
$t0 – $t7: temporaries (reg 8-15)
$s0 – $s7: saved (reg 16-23)
$t8 – $t9: temporaries (reg 24-25)
$gp: global pointer for static data (reg 28)
$sp: stack pointer (reg 29)
$fp: frame pointer (reg 30)
$ra: return address (reg 31)
Pertukaran C code kepada
MIPS code:
Contoh 1:
C code : v = w + x + y + z
MIPS code : add v,
w, x
add v,
v, y
add v,
v, z
Tambah w dan x kepada v dahulu. Selepas itu, tambah y dengan v, pada
masa ini, nilai v ditukar jadi w + x + y. Tambah z kepada v semula, nilai v
ditukar jadi jumlah w, x, y, dan z. (Penambahan yang tidak mempunyai constant
pakailah ‘add’.)
Contoh 2:
C code : a
= (b + c) – (d + e)
MIPS code : add $t0, b, c
add $t1,
d, e
sub a, $t0,
$t1
Siapkan solution yang dalam kurungan
dahulu. Tambah b dengan c kepada $t0. $t0 merupakan satu variable yang
sementara untuk simpan nilai b tambah c. Selepas itu, tambah d dengan e kepada
$t1. $t1 merupakan satu variable yang sementara untuk simpan nilai d tambah e.
Akhirnya tolak $t0 dengan $t1 bersama dengan a. (Penolakan yang tidak mempunyai
constant pakailah ‘sub’.)
Contoh 3:
C code : a
= (b + c) – (d + e)
MIPS code : add $t0, $s1, $s2
add
$t1, $s3, $s4
sub
$s0, $t0, $t1
Sama dengan contoh 2, hanya semua a, b, c, d, dan e register kepada
$s0, $s1, $s2, $s3, dan $s4. $t0 dan $t1 digunakan untuk melancarkan kiraan.
Contoh 4:
C code : m = n + A[3]
MIPS code : lw $s0, 12($s3)
add $s1, $s2, $s0
Dalam kes data komposit, nombor yang dalam ‘alamat’,[] kali dengan 4
dan muatkan nilainya dengan lw kepada $s0. Penambahan akan dibuat
seterusnya.(lw, load word)
Contoh 5:
C code : A[5] = m + A[3]
MIPS code : lw
$t0, 12($s3)
add $t0, $s2 ,$t0
sw $t0, 15($s3)
Contoh 5 juga adalah kes data komposit, nombor yang dalam ‘alamat’,[]
kali dengan 4 dan muatkan nilainya dengan lw kepada $s0 (yang di sebelah kanan ‘=’).
Nombor yang dalam [] kali dengan 4 dan simpan daripada $t0 kepada $t0(yang di
sebelah kiri ‘=’) selepas penambahan dibuat .(sw, store word)
Contoh 6:
C code : x = y + 7
MIPS code : addi $s3, $s3, 4
Kes penambahan yang mempunyai nombor constant, addi digunakan untuk
menambahnya.
Contoh 7:
C code : x = y – 9
MIPS code : addi $s2, $s2, -9
Semua penambahan dan penolakan yang mempunyai constant disiapkan dengan
menggunakan penambahan, hanya constant itu dianggap sebagai nombor negatif.
by : TEE SONG WEI
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment