Download pdf - Minggu kedua

Transcript
Page 1: Minggu kedua

SISTEM KOMPUTER

Page 2: Minggu kedua

Manusia selalu berpikir mengenai angka dalam

basis 10, akan tetapi angka dapat disajikan

dalam basis apapun. Contoh 12310 = 11110112

Sejak register merupakan bagian penting dari

semua instruksi, harus ada konversi untuk

memetakan nama register ke angka. Dalam

bahasa asembler MIPS, register $s0 hingga

$s7 dipetakan pada register 16 hingga 23, dan

register $t0 hingga $t7 dipetakan pada register

8 hingga 15. sehingga, $s0 berarti register

16, $s1 berarti register 17, dst; $t2 berarti

register 10, $t7 berarti register 15, dst.

Page 3: Minggu kedua

Instruksi MIPS asli

add $t0,$s1,$s2

Representasi desimal

Setiap segmen instruksi disebut field

Field pertama dan terakhir (dalam kasus ini berisi 0 dan

32) adalah kombinasi yang menyatakan bahwa operasi

yang akan dilakukan adalah penjumlahan

Field kedua menyatakan operand pertama ($s1=17)

Field ketiga menyatakan operand ketiga ($s2=18)

Field keempat menyatakan nomor register yang akan

menerima hasil penjumlahan ($t0 = 8)

Field kelima tidak digunakan maka diset 0

0 17 18 8 0 32

Page 4: Minggu kedua

Field-field yang ada di MIPS diberi nama, agar mudah

didiskusikan

6 bit 5 bit 5 bit 5 bit 5 bit

6 bit

Op : operasi dasar dari instruksi, biasa disebut

opcode

rs : register pertama dari sumber

rt : register kedua dari sumber

rd : register tujuan, mendapat hasil dari operasi.

shamt : shift amount. Sampai pada

waktunya, maka field ini akan

bernilai 0

funct : function. Field ini akan memilih operasi yang

op rs rt rd shamt funct

Page 5: Minggu kedua

Format sebelumnya dikenal sebagai tipe R (khusus untuk

Register) atau R-format. Tipe kedua dikenalsebagai

tipe I (untuk Immediate) atau I-format, digunakan untuk

instruksi immediate dan transfer data.

6 bit 5 bit 5 bit 16 bit

Reg = nomor register dari 0 hingga 31

Alamat = alamat 16 bit

- = field tidak tersedia pada format ini

op rs rt Konstanta atau

alamat

Instruksi Forma

t

op rs rt rd shamt funct alamat

add R 0 reg reg reg 0 3210 -

sub R 0 reg reg reg 0 3410 -

add

immediate

I 810 reg reg - - - konstan

ta

lw I 3510 reg reg - - - alamat

sw I 4510 reg reg - - - alamat

Page 6: Minggu kedua

Jika $t1 adalah base dan $s2 berhubungan dengan h, penugasan

A[300] = h + A[300];Akan dikompile menjadi

lw $t0,1200($t1) #register sementara $t0 mendapat A[300]

add $t0, $s2,$t0 #register sementara $t0 mendapat h+A[300]

sw $t0,1200($t1) #menyimpan h + A[300] kembali ke A[300]

Page 7: Minggu kedua

Instruksi lw diidentifikasi oleh 35 pada field pertama(op). Register base 9 ($t1) dispesifikasi padafieldkedua rs. Register tujuan 8 ($t0) dispesifikasi padafield ketiga rt. Offset untuk memilih A[300] (1200 = 300 x 4) ditemukan pada field terakhir (alamat)

Instruksi add diikuti oleh 0 pada field pertama (op), dan 32 pada field terakhir (funct). Tiga register operand (18,8,8) ditemukan pada field kedua, ketigadan keempat berhubungan dengan $s2, $t0, dan $t0

Instruksi sw ditentukan oleh 43 pada field pertama, dan sisanya sama seperti yang telah dijelaskansebelumny.

op rs rt rd Alamat /shamt funct

35 9 8 1200

0 18 8 8 0 32

43 9 8 1200

Page 8: Minggu kedua

Operasi pertama disebut shift. Ini akanmemindahkan semua bit dalam word ke kiri ataukanan, mengisi bit kosong dengan 0. sebagaicontoh register $s0 berisi

0000 0000 0000 0000 0000 0000 0000 0000 10012

= 910

Maka ketika instruksi shift left by 4 diekseskusi, maka nilainya akan menjadi

0000 0000 0000 0000 0000 0000 0000 1001 0000 2= 14410

Nama instruksi pada MIPS adalah shift left logical (sll) dan shift right logical (srl)

OPERASI

LOGIKA

BAHASA C BAHASA JAVA INSTRUKSI MIPS

SHIFT LEFT << << sll

SHIFT RIGHT >> >>> srl

BIT-BY-BIT AND & & and, andi

BIT-BY-BIT OR | | or, ori

BIT-BY-BIT NOT ~ ~ nor

Page 9: Minggu kedua

Instruksi untuk operasi diatas, asumsikan

hasilnya akan diberi ke register $t2

sll $t2, $s0, 4 #reg $t2 = reg $s0 << 4 bit

Sebelumnya, dilakukan penundaan penjelasan

tentang field shamt pada R format, ini

kepanjangan dari shift amount yang digunakan

pada instruksi shift. Untuk instruksi diatas, format

MIPSnya adalah

Nilai sll adalah 0 pada field op dan funct, rd berisi

$t2, rt berisi $s0 dan shamt berisi 4. field rs tidak

digunakan sehingga di set 0

op rs rt rd shamt funct

0 0 16 10 4 0

Page 10: Minggu kedua

Instruksi penting lainnya adalah AND,bit-by-bit

operation, yang hanya akan menghasilkan 1 jika

kedua bit operand bernilai 1. sebagai contoh, jika

register $t2 berisi

0000 0000 0000 0000 0000 0000 1101 0000 00002

Dan register $t1 berisi

0000 0000 0000 0000 0000 0011 1100 0000 00002

Maka setelah mengeksekusi intruksi MIPS

and $t0,$t1,$t2 #reg $t0=reg $t1 & $t2

Nilai register $t0 akan menjadi

0000 0000 0000 0000 0000 0000 1100 0000 00002

Page 11: Minggu kedua

Berbeda dengan operasi AND, maka operasi OR,

bit-by-bit operation, yang menghasilkan 1 jika

salah satu dari kedua bit operand bernilai 1.

Maka setelah mengeksekusi intruksi MIPS

or $t0,$t1,$t2 #reg $t0=reg $t1 | $t2

Nilai register $t0 akan menjadi

0000 0000 0000 0000 0000 0011 1101 0000 00002

Operasi NOT, bit-by-bit operation, akan

menghasilkan nilai yang berlawanan dengan nilai

bit operand. Sebagai contoh register $t3 bernilai

0. Maka setelah mengeksekusi intruksi MIPS

nor $t0,$t1,$t3 #reg $t0= ~ (reg $t1 | $t3)

Nilai register $t0 akan menjadi

1111 1111 1111 1111 1111 1100 0011 1111 11112

Page 12: Minggu kedua

Perintah Percabangan biasanya menggunakanstatement if, yang terkadang dikombinasikandengan statement go to dan label. Instruksi MIPS untuk percabangan adalah

Beq register1, register2, L1

instruksi ini berarti pergei ke statement berlabelL1 jika nilai register 1 sama dengan nilai register 2. ini adalah singkatan dari branch if equal.

Bne register1, register2, L1

instruksi ini berarti perge ke statement berlabel L1 jika nilai register 1 tidak sama dengan nilairegister 2. ini adalah singkatan dari branch if not equal.

Page 13: Minggu kedua
Page 14: Minggu kedua

Berdasarkan flowchart dapat terlihat bahwa diinginkanbeq, namun kode akan lebih efisien jika dilakukanpengetesan berdasarkan kondisi berlawanan

bne $s3,$s4,Else #go to Else if i≠ jInstruksi berikutnya adalah operasi tunggal

add $s0,$s1,$s2 #f = g+h (berarti i= j)Selanjutnya pada akhir statement if, ada unconditional branch, untuk itu digunakan instruksi jump

j Exit #go to ExitLakukan pemeriksaan pada cabang satunya, beri label Else

Else: sub $s0,$s1,$s2 # f = g-h (berarti i≠ j)Exit:

Page 15: Minggu kedua

1. Buatlah instruksi MIPS untuk program swap

dibawah ini:

temp = v[k];

v[k] = v[k+1]

v[k+1] = temp;

Petunjuk: ingat pengalamatan memori untuk

MIPS mengacu pada alamat byte, dan word

terbagi atas 4 byte. Untuk nilai index harus

dikali dengan 4, bukan 1.

Page 16: Minggu kedua

2. Buatlah komentar untuk instruksi MIPS dibawahini, asumsikan bahwa $a0 dan $a1 digunakanuntuk input dan berisi integer a dan b, dan $v0 digunakan sebagai output:

add $t0, $zero,$zero

loop: beq $a1,$zero, finish

add $t0,$t0,$a0

sub $a1,$a1,1

j loop

finish: addi $t0,$t0,100

add $v0, $t0,$zero


Recommended