Professional Documents
Culture Documents
HCM
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Cc lnh assembly MIPS trong ti liu ny s c din t theo tng hng trong bng 1
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
Lu hnh ni b
Page 2
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
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
Mt s ghi ch:
K hiu s:
K hiu 0x u c dng ch h 16
V d: 0xffff = ffffhex = ffff(16)
S ghi bnh thng s c hiu l ang trong h 10
Thanh ghi:
B x l cha 32 thanh ghi hot ng, mi thanh ghi 32 bits.
Mi thanh ghi s c tn gi nh v s th t tng ng ca n. Bng 2 m t s th t v tn gi nh
ca tng thanh ghi
Nh vy, khi lm vic vi thanh ghi c 2 vn cn quan tm: gi tr v a ch
Gi tr l gi tr ang c cha trong thanh ghi
a ch l ch s ca thanh ghi trong tp 32 thanh ghi.
V d: Nu ni thanh ghi $t3 c gi tr l 5, hoc thanh ghi $t3 bng 5, tc gi tr ang cha
trong $t3 l 5 v ch s/a ch ca $t3 l 11
Ch s tng
ng ca cc
thanh ghi
Mc ch s
dng ca tng
thanh ghi
Lu hnh ni b
Page 4
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
B nh:
Tng t nh thanh ghi, khi lm vic vi b nh c 2 vn cn quan tm: gi tr v a ch
Gi tr l gi tr ang c cha trong mt t nh (word), hoc trong byte
a ch a ch c gn cho word hoc byte .
V d:
Lu hnh ni b
Page 5
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
A. Xt cc lnh s hc
Lu hnh ni b
Page 6
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Cc lnh s hc:
add, addi, addiu, addu
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):
Lu hnh ni b
Page 8
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
V d:
a) addi $t0, $t1, 0x1
Gi s thanh ghi $t1 = 0x7fffffff
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.
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:
add, addi, addiu, addu
sub, subu
Nhn li ct ghi ch ca 6 lnh trn trong bng 1:
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
Lu hnh ni b
Page 9
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
(c i lm vic vi s tc thi)
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
slt / sltu
slti / sltiu
----------------------------------------------------------
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:
Lu hnh ni b
Page 10
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
Lu hnh ni b
Page 12
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
B. Cc lnh logic
Lu hnh ni b
Page 13
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
Lu hnh ni b
Page 15
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
Tng kt:
Cc lnh trong nhm:
and, andi
nor
or, ori
sll, srl
Trong ct ghi ch bng 1, ch ch c 2 lnh andi v ori c ghi ch (3) ghi ch zeroExtImm, tc cc lnh lm vic
vi s tc thi trong nhm ny khi m rng t s tc thi 16 bits sang s 32 bits th dng zeroExtImm, khng phi
SignExtImm nh nhm lnh s hc.
Lu hnh ni b
Page 17
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 18
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:
Lu hnh ni b
Page 19
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
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:
Lu hnh ni b
Page 21
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, s ny c to ra nh th no?
Lnh j label cch lnh cha nhn label 5 lnh, v vy lnh ny cch lnh cn nhy ti 5*4 = 20 byte
a ch ca lnh cn nhy ti = PC + 4 + s byte cch lnh s nhy ti
PC ca lnh j label = 0x00400004
s byte cch lnh s nhy ti = 20
Vy a ch ca lnh cn nhy ti = 0x00400004 + 410 + 2010
= 0x0040001C
Ch : Lnh ny ch cho nhy trong phm vi 256 MB = 228 byte
Lu lnh ny khc vi beq/bne l target trong syntax phi l nhn ca lnh cn nhy ti, khng th gn a ch trc tip
ca lnh cn nhy ti, tc khng th gn mt s vo y c. a ch ca lnh cn nhy ti s do compiler tnh ton v
gi cho processor trc khi thc hin.
Syntax (c php):
R[31] = PC + 4
Lu hnh ni b
Page 22
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
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
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
Lu hnh ni b
Page 23
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 08hex
Syntax (c php):
ngha: PC = R[rs]
Nhy ti lnh c a ch ang cha trong thanh ghi rs
V d:
Lu hnh ni b
Page 24
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
Lu hnh ni b
Page 25
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, compiler s t tnh ton ra
lnh cn nhy ti cch lnh hin ti bao nhiu lnh. a ch ca lnh cn nhy ti (JumpAddr) s c tnh bng cch
ly s lnh ny nhn 4 (dch tri 2 bits) v cng vi PC + 4. Tuy nhin, v lnh ny ch cho php nhy trong phm vi
256MB = 228 bytes, tc 4 bit cao nht trong PC + 4 khng i.
JumpAdd = PC + 4 + s lnh cch lnh s nhy ti * 4
Cch vit trong ghi ch (4) tng t ngha ny
{PC + 4[31:28], address, 2b0}: l s 32 bits
4 bits cao
nht t PC +
4 gia
nguyn
2 bits u tin
(bit 0 v 1) l
00 (do s tc
thi c dch
tri 2 bits)
Lu hnh ni b
Page 26
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 27
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)
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
Lu hnh ni b
Page 29
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Syntax (c php):
ngha:
Address = Offset(rs)
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:
Lu hnh ni b
Page 30
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:
Lu hnh ni b
Page 31
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
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 Byte 2 Byte 1 Byte 0
12
34
56
21
Lu hnh ni b
Page 32
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 Byte 2 Byte 1 Byte 0
12
34
43
21
Lu hnh ni b
Page 33
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:
Lu hnh ni b
Page 34
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 35
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 36
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 37
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 38
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
Lu hnh ni b
Page 39
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 40
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 41
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:
Lu hnh ni b
Page 42
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.
Lu hnh ni b
Page 43
Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM
Lu hnh ni b
Page 44
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 10hex; 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
Lu hnh ni b
Page 46