Pages

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 


0 comments:

Post a Comment