Anda di halaman 1dari 20

Bab 2.

Instructions: Bahasa dari Komputer

• Introduction ke MIPS machine


• Set dari MIPS instruction

MMD 2405 Andi WRE 1


Register vs. Memori
• Komponen dari sebuah komputer
– Prosesor, memori, input, dan output
• Komponen dari sebuah prosesor
– Control dan Datapath (ALU dan register)
• Compiler mengasosiasikan variable - variabel dengan register
-registernya
– Bagaimana dengan program yang memiliki banyak variabel?

Control Input
Memory
Datapath Output

Processor I/O

MMD 2405 Andi WRE 2


Organisasi Memori MIPS
• Dapat dipandang sebagai sebuah array single
dimensi yang besar, dengan sebuah alamat / address
• Sebuah address memori adalah index dari array
• Terdapat 232 bytes dengan alamat byte dari 0 sampai
0 8 bits of data
232-1
1 8 bits of data
– Apakah least 2 significant bit dari sebuah word address?
2 8 bits of data
• “Byte addressing” berarti bahwa indeks menunjuk
3 8 bits of data pada sebuah byte di memori.
4 8 bits of data • Bytes sudah baik, namun banyak item data
5 8 bits of data menggunakan “word” yang lebih besar
8 bits of data • Untuk MIPS, sebuah word adalah 32 bit atau 4 byte
• Jadi, MIPS mempunyai 230 word dengan alamat byte
di 0, 4, 8, ... , 232-4

MMD 2405 Andi WRE 3


Organisasi Register MIPS
Name Register number Usage
$zero 0 the constant value 0
$v0-$v1 2-3 values for results and expression evaluation
$a0-$a3 4-7 arguments
$t0-$t7 8-15 temporaries
$s0-$s7 16-23 saved
$t8-$t9 24-25 more temporaries
$gp 28 global pointer
$sp 29 stack pointer
$fp 30 frame pointer
$ra 31 return address

Register 1 ($at) disimpan untuk assembler, 26-27 untuk operating system

MMD 2405 Andi WRE 4


MIPS ISA
• The MIPS instruction set
architecture
– serupa dengan arsitektur lain
yang dikembangkan sejak 1400
Other
1980-an 1300
1200
SPARC
Hitachi SH

– Hampir 100 juta prosesor 1100 PowerPC


Motorola 68K
1000

MIPS dibuat sejak 2002 900


MIPS
IA-32
800 ARM
– Digunakan oleh NEC, 700

Nintendo, Cisco, Silicon


600
500

Graphics, Sony, ... 400


300
200
100
0
1998 1999 2000 2001 2002

MMD 2405 Andi WRE 5


Instruksi Aritmetika dari MIPS
• Semua instruksi memiliki 3 operands
• Urutan instruksi adalah tetap (yang pertama adalah tujuan)
• Operand harus register - register (tidak bisa memori)
– Salah: add 48($s3), $s2, 32($s3)
• Hanya terdapat 32 register, setiap register terdiri dari 32 bit

Contoh 1:
C code: a = b + c
MIPS instruction: add a, b, c

Contoh 2:
C code: a = b + c + d
MIPS instructions: add a, b, c
add a, a, d

MMD 2405 Andi WRE 6


Instruksi Memori dari MIPS
• Instruksi: load (lw) dan store (sw)
• Contoh: diasumsikan bahwa A adalah sebuah array dari 100 word dan
compile mengasosiasikannya variabel h dengan register $s2. Base
address dari A adalah $s3.

C code: A[12] = h + A[8];

MIPS code: lw $t0, 32($s3)


add $t0, $s2, $t0
sw $t0, 48($s3)

• Kita dapat mengacu register dengan namanya (misal $s2, $t2) selain
dengan angkanya
• Perintah store: tujuan di akhir

MMD 2405 Andi WRE 7


Beberapa Instruksi MIPS

Instruksi Arti

add $s1, $s2, $s3 $s1 = $s2 + $s3


sub $s1, $s2, $s3 $s1 = $s2 – $s3
lw $s1, 100($s2) $s1 = Memory[$s2+100]

sw $s1, 100($s2) Memory[$s2+100] = $s1

MMD 2405 Andi WRE 8


Sebuah Contoh

• Apakah kita dapat mengetahui kode dan angka awal dari


register $4 dan $5?
swap(int v[], int k);
{ int temp;
temp = v[k]
v[k] = v[k+1];
v[k+1] = temp;
swap:
}
muli $2, $5, 4
add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31

MMD 2405 Andi WRE 9


Format Instruksi MIPS
• Instruksi, seperti register dan data word, juga dalam 32 bit
– Contoh: add $t0, $s1, $s2
– Register memiliki angka, $t0=8, $s1=17, $s2=18

• Format Instruksi:
000000 10001 10010 01000 00000 100000

op rs rt rd shamtm funct
op=0 $s1=17 $s2=18 $t0=8 =0 =32

• Dapat menebak arti dari singkatan diatas?


– Op: opcode, rs: 1st register source, rt: 2nd register source, rd: register
destination, shamt: shift amount, funct: function code

MMD 2405 Andi WRE 10


Tiga Format Instruksi MIPS
• R-type:
op rs rt rd shamtm funct

6bits 5bits 5bits 5bits 5bits 6bits

• I-type:
op rs rt 16 bit number

6bits 5bits 5bits 16 bits

• J-type:
op 26 bit address

6bits 26 bits
MMD 2405 Andi WRE 11
Instruksi Transfer Data MIPS
(memori)
• Perhatikan instruksi load-word dan store-word,
• Contoh: lw $t0, 32($s2)
35 18 8 32
op rs rt 16 bit number

• Contoh: sw $t0, 48($s2)


43 18 8 48
op rs rt 16 bit number

MMD 2405 Andi WRE 12


Instruksi Kontrol MIPS
• Instruksi pengambil keputusan
– mengubah aliran kontrol
– seperti, mengubah instruksi selanjutnya yang akan dieksekusi

• Instruksi percabangan kondisional MIPS:


bne $t0, $t1, Label
beq $t0, $t1, Label

• Contoh: if (i==j) h = i + j;
bne $s0, $s1, Label
add $s3, $s0, $s1
Label: ....
MMD 2405 Andi WRE 13
Instruksi Kontrol MIPS (II)

• Instruksi MIPS percabangan tanpa kondisional


j label
• Contoh:

if (i!=j) beq $s4, $s5, Lab1


h=i+j; add $s3, $s4, $s5
else j Lab2
h=i-j; Lab1: sub $s3, $s4,
$s5
Lab2: ...

MMD 2405 Andi WRE 14


Instruksi MIPS yang Telah
Dijelaskan

• Instruksi Arti

add $s1,$s2,$s3 $s1 = $s2 + $s3


sub $s1,$s2,$s3 $s1 = $s2 – $s3
lw $s1,100($s2) $s1 = Memory[$s2+100]
sw $s1,100($s2) Memory[$s2+100] = $s1
bne $s4,$s5,L Next instr. is at Label if $s4 ≠ $s5
beq $s4,$s5,L Next instr. is at Label if $s4 = $s5
j Label Next instr. is at Label

MMD 2405 Andi WRE 15


Konstanta
Konstanta kecil sangat sering dipakai (50% dari operands)
contoh, A = A + 5;
B = B + 1;
C = C - 18;
• Solusi? Bagaimana kalau?
• Menempatkan “konstanta tipikal” dalam memori dan me-load-nya
• Menciptakan register yang ditanam di perangkat keras (seperti $zero) untuk
konstanta seperti satu (one).

• Instruksi MIPS:
addi $29, $29, 4
slti $8, $18, 10
andi $29, $29, 6
ori $29, $29, 4

MMD 2405 Andi WRE 16


Ringkasan dari Mode Addressing
Contoh:
1. Immediate addressing
op rs rt Immediate

2. Register addressing
op rs rt rd ... funct Registers
Register
1. Addi $29, $29, 4
3. Base addressing
op rs rt Address Memory

Register + Byte Halfword Word 1. Add $s1, $s2, $s3

4. PC-relative addressing
op rs rt Address Memory 1. Lw $s1, 32($s2)
PC + Word

1. Beq $s1, $s2, 25


5. Pseudodirect addressing
op Address Memory

PC Word

1. J Label

MMD 2405 Andi WRE 17


Ringkasan dari Register dan Memori

MIPS operands
Name Example Comments
$s0-$s7, $t0-$t9, $zero, Fast locations for data. In MIPS, data must be in registers to perform
32 registers $a0-$a3, $v0-$v1, $gp, arithmetic. MIPS register $zero always equals 0. Register $at is
$fp, $sp, $ra, $at reserved for the assembler to handle large constants.
Memory[0], Accessed only by data transfer instructions. MIPS uses byte addresses, so
230 memory Memory[4], ..., sequential words differ by 4. Memory holds data structures, such as arrays,
words Memory[4294967292] and spilled registers, such as those saved on procedure calls.

MMD 2405 Andi WRE 18


Ringkasan dari Instruksi Umum
MIPS assembly language
Category Instruction Example Meaning Comments
add add $s1, $s2, $s3 $s1 = $s2 + $s3 Three operands; data in registers

Arithmetic subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 Three operands; data in registers

add immediate addi $s1, $s2, 100 $s1 = $s2 + 100 Used to add constants
load word lw $s1, 100($s2) $s1 = Memory[$s2 + 100] Word from memory to register
store word sw $s1, 100($s2) Memory[$s2 + 100] = $s1 Word from register to memory
Data transfer load byte lb $s1, 100($s2) $s1 = Memory[$s2 + 100] Byte from memory to register
store byte sb $s1, 100($s2) Memory[$s2 + 100] = $s1 Byte from register to memory
load upper immediate lui $s1, 100 $s1 = 100 * 2 16 Loads constant in upper 16 bits

branch on equal beq $s1, $s2, 25 if ($s1 == $s2) go to Equal test; PC-relative branch
PC + 4 + 100

branch on not equal bne $s1, $s2, 25 if ($s1 != $s2) go to Not equal test; PC-relative
PC + 4 + 100
Conditional
branch set on less than slt $s1, $s2, $s3 if ($s2 < $s3) $s1 = 1; Compare less than; for beq, bne
else $s1 = 0

set less than slti $s1, $s2, 100 if ($s2 < 100) $s1 = 1; Compare less than constant
immediate else $s1 = 0

jump j 2500 go to 10000 Jump to target address


Uncondi- jump register jr $ra go to $ra For switch, procedure return
tional jump jump and link jal 2500 $ra = PC + 4; go to 10000 For procedure call
MMD 2405 Andi WRE 19
MMD 2405 Andi WRE 20

Anda mungkin juga menyukai