Professional Documents
Culture Documents
Cac Lenh MIPS Co Ban - v1
Cac Lenh MIPS Co Ban - v1
Cac Lenh MIPS Co Ban - v1
HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Tn
lnh
(y
)
Tn
lnh
Lnh
thuc
nhm
g (R, I
hay J)
Mt s ghi
ch cho lnh
tng ng,
c lm r
cui bng
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Nhng lnh c phn ghi ch (1) s mt thng bo li, hay cn gi l gy ra mt ngoi l (exception) khi
php ton b trn (overflow)
(2) SignExtImm = {16 {immediate[15]}, immediate}
Nhng lnh c phn ghi ch (2) lun cha mt s tc thi 16 bits (c du dng b 2), v s ny c m
rng thnh s 32 bits theo kiu m rng c du.
Vit theo cu trc ca Verilog
16{immediate[15]}: l mt chui 16 bits; 16 bit ny c tao ra ging y nh bit th 15 ca
immediate
{16{immediate[15]}, immediate}: l chui 32 bits, 16 bit thuc na cao c tao ra ging nh bit
th 15 ca immediate, v 16 bit thuc na thp chnh l s tc thi
V d:
SignExtImm ca 0011 1110 1101 1100 l 0000 0000 0000 0000 0011 1110 1101 1100
SignExtImm ca 1011 1110 1101 1100 l 1111 1111 1111 1111 1011 1110 1101 1100
SignExtImm ca 0011 1110 1101 1100 l 0000 0000 0000 0000 0011 1110 1101 1100
SignExtImm ca 1011 1110 1101 1100 l 0000 0000 0000 0000 1011 1110 1101 1100
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
2 lnh ny lin quan n mt s l thuyt khng nm trong phn ging dy l thuyt, v vy b qua 2 lnh
ny
Mt s ghi ch:
K hiu s:
K hiu 0x u c dng ch h 16
V d: 0xffff = ffffhex = ffff(16)
Thanh ghi:
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Tn gi nh
ca cc
thanh ghi
B nh:
Ch s tng
ng ca cc
thanh ghi
Mc ch s
dng ca tng
thanh ghi
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
A. Xt cc lnh s hc
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Cc lnh s hc:
add, addi, addiu, addu
GV Bin son: TTNNguyet-Khoa KTMT-UIT
Lu hnh ni b
Page 7
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
sub, subu
R vit tt ca Register
V d: R[rs] hiu l gi tr ca thanh ghi rs
2. Lnh addi
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
V d:
a) addi $t0, $t1, 3
b) addi $t0, $t1, -3
c) addi $t0, $t1, 32768
Gi s gi tr ang cha trong thanh ghi $t1 cho c 3 cu u l 4
Kt qu:
a) Sau khi addi thc hin xong, gi tr ca $t0 l 7
Quy trnh lnh thc hin:
s tc thi l 3(10) = 0000 0000 0000 0011(2) (s 16 bit c du)
SignExtImm ca 3(10) = 0000 0000 0000 0000 0000 0000 0000 0011(2)
Gi tr thanh ghi $t1 = 0000 0000 0000 0000 0000 0000 0000 0100(2)
Gi tr trong $t1 + SingExtImm ca 3(10) = 0000 0000 0000 0000 0000 0000 0000 0111(2)
b) Sau khi addi thc hin xong, gi tr ca $t0 l 1
Quy trnh lnh thc hin:
s tc thi l -3(10) = 1111 1111 1111 1101(2) (s 16 bit c du, biu din theo b 2)
SignExtImm ca 3(10) = 1111 1111 1111 1111 1111 1111 1111 1101 (2)
Gi tr thanh ghi $t1 = 0000 0000 0000 0000 0000 0000 0000 0100(2)
Gi tr trong $t1 + SingExtImm ca 3(10) = 0000 0000 0000 0000 0000 0000 0000 0001(2)
c) Lnh b bo li, do 32768 ra khi gii hn ca s 16 bits c du
Tuy nhin, addiu v addu khng xt kt qu c b overflow hay khng, trong khi addi v add s bo khi overflow
xut hin
Syntax (c php):
V d:
a) addi $t0, $t1, 0x1
Gi s thanh ghi $t1 = 0x7fffffff
GV Bin son: TTNNguyet-Khoa KTMT-UIT
Lu hnh ni b
Page 9
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Kt qu:
0x1 + 0x7fffffff = 0x80000000
Cng mt s dng vi mt s dng, kt qu ra mt s m => overflow
Khi lnh addi trn thc hin, mt thng bo overflow s xut hin
b) addiu $t0, $t1, 1
Gi s thanh ghi $t1 = 0x7fffffff
Kt qu: $t0 = 0x80000000
Khi lnh addi trn thc hin, thanh ghi $t0 vn nhn gi tr 0x8000000 v khng c bt k thng bo
overflow no xut hin.
4. Lnh sub v subu
Lnh sub c c php tng t nh lnh add, nhng
add thc hin php ton cng 2 thanh ghi, kt qu lu vo thanh ghi th 3
trong khi , sub thc hin php ton tr 2 thanh ghi, kt qu lu vo thanh ghi th 3
Lnh subu c c php v chc nng ging nh sub, nhng
subu khng xt n kt qu c b overflow hay khng
sub c xt n kt qu c b overflow hay khng; nu b overflow, s c thng bo
Syntax (c php):
Lu : khng c lnh subi (tc tr mt thanh ghi vi mt s tc thi) v c lnh addi v s tc thi trong addi c
th m hoc dng, nn subi khng cn thit.
Tng kt:
Ch c lnh addi v addiu c ghi ch (2) tc 2 lnh ny lm vic vi s tc thi, v s tc thi 16 bits ny
c m rng c du thnh thnh s 32 bits
(c i lm vic vi s tc thi)
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Cc lnh khng c u theo sau: add, addi, sub c thm ghi ch (1); Cc lnh c u theo sau nh: addiu, addu v
subu khng c ghi ch (1) tc cc lnh khng c u s bo khi c overflow, cn cc lnh c u s khng bo
khi c overflow
5. Lnh slt/sltu
Hai lnh ny thuc nhm lnh R-format, c opcode l 0 v funct trong slt l 2ahex, trong sltu l 2bhex
Syntax:
ngha:
slt:
sltu: ngha thc hin ging nh slt. Nhng vic kim tra gi tr thanh ghi rs c nh hn thanh ghi rt hay khng
trong lnh slt thc hin trn s c du, cn trong sltu thc hin trn s khng du
V d:
GV Bin son: TTNNguyet-Khoa KTMT-UIT
Lu hnh ni b
Page 11
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
6. Lnh slti/sltiu
Hai lnh ny thuc nhm lnh I-format. Opcode ca slti l ahex, opcode ca sltiu l bhex
Syntax:
ngha:
slti/sltiu:
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
ngha 2 lnh ny ging nhau l so snh gi tr mt thanh ghi vi mt s tc thi, nu gi tr trong thanh ghi rs
nh hn s tc thi th thanh ghi rd nhn gi tr l 1; ngc li thanh ghi rd s nhn gi tr 0
S tc thi cho php trong lnh ny l s 16 bits. Trc khi so snh vi thanh ghi rs, s tc thi c m rng c
du (SignExtImm) thnh s 32 bits
slti khc sltiu l slti so snh 2 gi tr theo kiu c du dng b 2, trong khi sltiu so snh theo kiu s khng du
V d:
c. slti $t0, $t1, 0x73
Gi s $t1 = 0xfffffff1
Kt qu: $t0 = 1
Lnh slt so snh theo kiu so snh 2 s c du dng b 2
$t1 = 0xfffffff1 = 1111 1111 1111 1111 1111 1111 1111 0001(2) = -15(10)
S tc thi = 0x73 = 01110011(2)
SignExtImm(0x73) = 0000 0000 0000 0000 0000 0000 0111 0011(2) = 115(10)
Vy $t1 < $t2 gi tr trong thanh ghi $t0 = 1
d. sltiu $t0, $t1, 0x83
Gi s $t1 = 0xfffffff1
Kt qu: $t0 = 0
Lnh slt so snh theo kiu so snh 2 s khng du
$t1 = 0xfffffff1 = 1111 1111 1111 1111 1111 1111 1111 0001(2) = 4294967281(10)
$t2 = 0x83 = 10000011(2)
SignExtImm(0x83) = 1111 1111 1111 1111 1111 1111 1000 0011(2) = 4294967171(10)
Vy $t1 > $t2 gi tr trong thanh ghi $t0 = 0
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
B. Cc lnh logic
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
8. Lnh andi
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lnh ny thc hin and tng bit gi tr thanh ghi rs v mt s tc thi. S tc thi ang l s 16 bits, m rng
thnh s 32 bits theo kiu ZeroExtImm, tc 16 bits na cao cn thiu s in 0 vo. Sau thc hin and tng bit gi tr
ca thanh ghi rs v s tc thi c m rng thnh 32 bits vi nhau, kt qu lu vo thanh ghi rd
V d:
a) andi $t0, $t1, 0xffff
Gi s gi tr ang cha trong thanh ghi $t1 l 0x12345678.
Kt qu: sau lnh trn, gi tr thanh ghi $t0 = 0x00005678
Quy trnh lnh thc hin:
S tc thi: 0xffff = 1111 1111 1111 1111 (2)
ZeroExtImm(0xffff) = 0000 0000 0000 0000 1111 1111 1111 1111 (2)
$t0 = $t1 & ZeroExtImm(0xffff) = 0x00005678
lnh dch tri s hc, thuc nhm lnh R, c opcode l 0 v funct 00hex
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
lnh dch phi s hc, thuc nhm lnh R, opcode l 0 v funct l 02hex
Syntax (c php):
ngha:
sll: R[rd] = R[rt] << shamt
Thanh ghi rt dch tri shamt bit v kt qu lu vo thanh ghi rd ( << l k hiu ca php ton dch tri)
srl: R[rd] = R[rt] >>> shamt
Thanh ghi rt dch phi shamt bit v kt qu lu vo thanh ghi rd ( >>> l k hiu ca php ton dch phi)
V d:
a. sll $t0, $t1, 5
Gi s thanh ghi $t1 ang cha gi tr 0x12345678
Kt qu: sau lnh trn, thanh ghi $t0 = 0x468ACF00
Quy trnh lnh thc hin: lnh trn dch tri 5 bit thanh ghi $t1
$t1 = 0x12345678 = 0001 0010 0011 0100 0101 0110 0111 1000(2)
Dch tri 5 bit $t1 = 0100 0110 1000 1010 1100 1111 0000 0000(2) = 0x468ACF00
Vy kt qu thanh ghi $t0 = 0x468ACF00
b.
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lnh beq c 2 cch vit cho v tr label, label c th l mt nhn c vit bng ch, hoc c th l s
V d 1: label vit bng ch:
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khi lp trnh, ta c th s dng mt trong 2 cch nh 2 v d trn. Nhng thc t lnh m b x l hiu l lnh
nh v d 2. Khi ta lp trnh theo nh v d 1 th lnh cng s c chuyn v nh v d 2 gi cho b x l.
Nh vy beq chun theo dng:
beq rs, rt, label/imm
S tc thi label/imm ny chnh l s lnh m lnh beq hin ti cch lnh s nhy ti bao nhiu, c lu vo 16 bits
ca offset
ngha:
if(R[rs] = = R[rt]) PC = PC + 4 + BranchAddr
Nu gi tr thanh ghi rs bng rt th chng trnh nhy ti lnh m cch lnh beq ang xt l imm lnh, tc
a ch con tr/thanh ghi PC s chuyn thnh PC + 4 + imm*4 (i vi trng hp mi lnh lu trong mt word
4 bytes) = PC + 4 + BranchAddr
BranchAddr = imm * 4 (i vi trng hp mi lnh lu trong mt word 4 bytes)
12. Lnh bne:
Cch vit tng t nh beq, nhng ngha tri ngc:
beq: kim tra nu 2 thanh ghi bng nhau th nhy n lnh mong mun
bne: kim tra nu 2 thanh ghi khng bng nhau th nhy n lnh mong mun
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Ngoi ra, cn mt s lnh so snh v nhy khc (trong bng psedoInstruction Set)
bge $t1, $t2, label Nhy ti label thc hin lnh nu thanh ghi $t1 >= $t2
bgt $t1, $t2, label Nhy ti label thc hin lnh nu thanh ghi $t1 > $t2
ble $t1, $t2, label Nhy ti label thc hin lnh nu thanh ghi $t1 <= $t2
blt $t1, $t2, label Nhy ti label thc hin lnh nu thanh ghi $t1 < $t2
V d:
Chy on lnh sau trn MARS 4.4:
beq $t1, $t2, label
j label
add $t1, $t2, $t3
add $t1, $t2, $t3
add $t1, $t2, $t3
add $t1, $t2, $t3
add $t1, $t2, $t3
label: add $t1, $t2, $t3
Kt qu: sau khi ti lnh j label, chng trnh s nhy n lnh add cui cng s thc tip
Qu trnh thc hin lnh:
Khi bin dch on lnh trn trong MARS 4.4, ta c hnh nh sau:
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Ct Source l ct cha cc lnh t chng trnh m ta vit, ct ny c th cha mt s lnh gi (pseudo-code); Ct basic
l ct cha cc lnh m thc s processor s chun b chy.
Lnh j label khi tht s chy s chuyn thnh j 0x0040001c
Ch : Lnh ny ch cho nhy trong phm vi 256 MB = 228 byte
15. Lnh jal
Syntax (c php):
R[31] = PC + 4
ngha:
R[31] = PC + 4; PC = JumpAddr
Lnh ny thc hin vic nhy ging y nh lnh j; nhng a ch ca lnh ngay sau lnh jal c lu vo thanh ghi
31 (thanh ghi ra) trc khi nhy
Lnh ny nhm phc v cho vic gi mt hm con. Theo quy tc, sau khi hm con c gi v thc hin xong s
quay tr v chng trnh chnh. Do vic lu li a ch ca lnh ngay sau jal vo ra nhm lu li a ch quay v
ny
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
V d:
Chy on lnh sau trn MARS 4.4:
jal label
add $t1, $t2, $t3
add $t1, $t2, $t3
add $t1, $t2, $t3
add $t1, $t2, $t3
add $t1, $t2, $t3
label: add $t1, $t2, $t3
Khi bin dch:
Ta thy:
jal label c chuyn thnh jal 0x0040018 (gi tr target trong format lnh lc ny s bng 0x0040018)
trc khi gi cho processor
a ch ca lnh ny hin ti l 0x00400000
Khi chng trnh chy:
-
PC = 0x00400000
u tin, lnh theo sau jal c lu li vo thanh ghi ra ra = PC + 4 = 0x00400004
Sau lnh s nhy n lnh th 7, tc PC ang bng = 0x00400000 s chuyn thnh PC= target/JumpAddr
= 0x0040018
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
$ra = 0x00400004
16. Lnh jr
Lnh thuc nhm lnh R (nhng kh c bit - ch quan tm vng thanh ghi rs), c opcode 0 v funct 08 hex
Syntax (c php):
ngha: PC = R[rs]
Nhy ti lnh c a ch ang cha trong thanh ghi rs
V d:
GV Bin son: TTNNguyet-Khoa KTMT-UIT
Lu hnh ni b
Page 26
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Gi s lc ny gi tr trong thanh ghi $s1 = 0x0040000c, lnh or s c thc hin ngay sau jr khi chng trnh chy.
Gi s lc ny gi tr trong thanh ghi $s1 = 0x00400018, lnh sub s c thc hin ngay sau jr khi chng trnh chy.
Tng kt
Nhm lnh:
beq, bne
j, jal, jr
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
ng trn phng din thit k processor, nh th no processor tnh ton ra a ch ca lnh tip theo cn nhy ti
da vo cc label hoc cc s_16_bits ny?
Nhn li bng 1 ta thy beq/bne c ghi ch (4), cn nhm j/jal c ghi ch (5), trong khi jr khng c ghi ch g c:
14 bits cn li y nh
bit th 15 ca s tc
thi
Trong khi i vi lnh j/jal, ngi lp trnh a vo nhn ca a ch cn nhy ti, nhn ny chuyn thnh a
ch tng ng vi nhn (ch khng cch lnh nhy ti bao nhiu lnh nh beq). JumpAddr c tnh nh sau:
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Cc lnh xt:
lbu, lhu, lui, lw
sb, sh, sw
Ch : lnh ll v sc b qua
-------------------------------------------17. Lnh lw
Address = Offset(rs)
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Address = Offset(rs)
Syntax (c php):
ngha:
Address =
Offset(rs)
R[rt] = {24b0, M[R[rs] + SignExtImm](7:0)}
Khng ging lw l load ht ton b 1 t nh vo thanh ghi rt, lnh ny ch load v 1 byte u tin trong t nh
vo rt
V rt l thanh ghi 32 bits nn 24 bit cn li ca rt c 2 kiu m rng du:
lb: sign-ext
lbu: zero-ext
V d:
a. lbu $t1, 8($t0)
gi s $t0 = 0x10010000
v t nh ti a ch 0x10010008 c gi tr 0x12345678
T nh ny cha 4 bytes:
Byte 4
12
Byte 2
34
Byte 1
56
Byte 0
78
Lnh lbu thc hin vic load mt byte vo thanh ghi $t1, v byte c load l byte 0. Nhng do thanh ghi $t1 l
32 bits, nn 24 bits cn li l 0
Kt qu: $t1 = 0x00000078
b. lb $t1, 8($t0)
gi s $t0 = 0x10010000
v t nh ti a ch 0x10010008 c gi tr 0x123456f8
T nh ny cha 4 bytes:
Byte 4
12
Byte 2
34
Byte 1
56
Byte 0
f8
Lnh lb thc hin vic load mt byte vo thanh ghi $t1, v byte c load l byte 0. Nhng do thanh ghi $t1 l 32
bits, nn 24 bits cn li trong lnh ny c m rng c du theo bit ln nht ca byte c load v
Kt qu: $t1 = 0xfffffff8
GV Bin son: TTNNguyet-Khoa KTMT-UIT
Lu hnh ni b
Page 31
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Syntax (c php):
ngha:
Address =
Offset(rs)
R[rt] = {16b0, M[R[rs] + SignExtImm](15:0)}
lh: sign-ext
lhu: zero-ext
V d:
a. lhu $t1, 8($t0)
gi s $t0 = 0x10010000
v t nh ti a ch 0x10010008 c gi tr 0x12345678
T nh ny cha 4 bytes:
Byte 4
12
Byte 2
34
Byte 1
56
Byte 0
78
Lnh lhu thc hin vic load 2 byte vo thanh ghi $t1, v byte c load l byte 0 v byte 1. Nhng do thanh ghi
$t1 l 32 bits, nn 16 bits cn li l 0
Kt qu: $t1 = 0x00005678
b. lh $t1, 8($t0)
gi s $t0 = 0x10010000
v t nh ti a ch 0x10010008 c gi tr 0x123456f8
T nh ny cha 4 bytes:
GV Bin son: TTNNguyet-Khoa KTMT-UIT
Lu hnh ni b
Page 32
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Byte 4
12
Byte 2
34
Byte 1
56
Byte 0
f8
Lnh lh thc hin vic load 2 byte vo thanh ghi $t1, v byte c load l byte 0 v byte 1. Nhng do thanh ghi
$t1 l 32 bits, nn 16 bits cn li trong lnh ny c m rng c du theo bit ln nht ca byte c load v
Kt qu: $t1 = 0x000056f8
c. lh $t1, 8($t0)
gi s $t0 = 0x10010000
v t nh ti a ch 0x10010008 c gi tr 0x12348cde
T nh ny cha 4 bytes:
Byte 4
12
Byte 2
34
Byte 1
8c
Byte 0
de
Lnh lh thc hin vic load 2 byte vo thanh ghi $t1, v byte c load l byte 0 v byte 1. Nhng do thanh ghi
$t1 l 32 bits, nn 16 bits cn li trong lnh ny c m rng c du theo bit ln nht ca byte c load v
Kt qu: $t1 = 0xffff8cde
20. Lnh sw
Address = Offset(rs)
T nh ny cha 4 bytes:
GV Bin son: TTNNguyet-Khoa KTMT-UIT
Lu hnh ni b
Page 33
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Byte 4
12
Byte 2
34
Byte 1
56
Byte 0
78
Byte 2
65
Byte 1
43
Byte 0
21
21. Lnh sb
Address = Offset(rs)
Byte 2
34
Byte 1
56
Byte 0
78
Lnh sb thc hin vic lu byte 0 ca thanh ghi t1 (0x21) vo byte 0 ca t nh ti a ch 0x10010008. Nn sau
lnh trn, hnh nh t nh:
Byte 4
12
Byte 2
34
Byte 1
56
Byte 0
21
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
22. Lnh sh
Byte 2
34
Byte 1
56
Byte 0
78
Lnh sh thc hin vic lu byte 0 v byte 1 ca thanh ghi t1 (0x4321) vo byte 0 v byte 1 ca t nh ti a ch
0x10010008. Nn sau lnh trn, hnh nh t nh:
Byte 4
12
Byte 2
34
Byte 1
43
Byte 0
21
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
24. Lnh li
ngha: a mt s tc thi (32 bits) vo mt thanh ghi
V d:
li $t0, 0x12345
Kt qu: $t0 = 0x00012345
Lu :
S a vo lui ch c php l s 16 bits, cn s a v li c th ln n 32 bits
Lnh li ny thc cht l lnh gi, lnh ny c chuyn thnh 2 lnh (lui v or) khi processor chy tht s:
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Nhn: mult/multu
Chia: div/divu
Hai lnh h tr: mfhi/mflo
Lnh mult/multu
Hai lnh ny thuc nhm lnh R-format, c opcode l 0. Lnh mult c funct l 18, lnh multu c funct l 19
Syntax:
ngha:
{Hi, Lo} = R[rs] * R[rt]
Gi tr trong thanh ghi rs (s 32 bits) nhn vi gi tr trong thanh ghi rt (s 32 bits), kt qu l s 64 bits. 32 bits
thuc na thp ca kt qu c lu trong thanh ghi Lo, v 32 bits thuc na cao ca kt qu c lu trong
thanh ghi Hi
Ch : Hi v Lo l 2 thanh ghi ph thm cho processor khi thc hin php ton nhn chia. V cc thanh ghi u l 32 bits,
m kt qu php ton nhn l 64 bits, nn phi dng 2 thanh ghi tm ny ghp li
mult: nhn 2 s c du
multu: nhn 2 s khng du
V d:
a. mult $t1, $t2
Gi s $t1 = 0x00008765
$t2 = 0x12345678
Kt qu:
$hi = 0x000009a0
$lo = 0xc83f6558
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Chia: div/divu
Hai lnh ny thuc nhm lnh R-format, c opcode l 0. Lnh div c funct l 1ahex, lnh divu c funct l 1bhex
Syntax:
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
ngha:
rdest, rsrcl v src2 l 3 thanh ghi.
Hai lnh trn ly gi tr trong thanh ghi rsrcl chia cho src2, thng s t vo thanh ghi rdest. ng thi thanh ghi
Lo cng cha thng s ging than ghi rdest v thanh ghi Hi cha phn d.
V d:
a.
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Ch : cc lnh .s l lm vic vi chnh xc n, c trng fmt lun bng 10 hex; cc lnh .d l lm vic vi
chnh xc kep, c trng fmt lun bng 11hex
add.s
Syntax
ngha:
F[fd] = F[fs] + F[ft]
Gi tr trong thanh ghi fs cng vi gi tr trong thanh ghi ft, tng lu vo thanh ghi fd
add.d
Syntax
ngha:
{F[fd], F[fd+1]} = {F[fs], F[fs+1]} + {F[ft], F[ft+1]}
S tc thi lc ny do biu din trong chnh xc kp nn cn 64 bits, tc phi cn 2 thanh ghi f lin tc nhau.
Lnh add.d s thc hin vic cng gi tr ca s floating point chnh xc kp ang lu trong
Gi tr trong thanh ghi fs cng vi gi tr trong thanh ghi ft, tng lu vo thanh ghi fd