3. cac lenh mips co ban

46
Khoa K  thut Máy tính   Trường Đại hc Công Ngh Thông Tin   ĐHQG Tp. HCM Lưu hành ni b Page 1 Mt s lnh assembly MIPS cơ bn Bng 1. Tóm tt các lnh MIPS cơ bn (tham kho [1])

Upload: ki-ki

Post on 16-Oct-2015

941 views

Category:

Documents


72 download

TRANSCRIPT

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 1

    Mt s lnh assembly MIPS c bn

    Bng 1. Tm tt cc lnh MIPS c bn (tham kho [1])

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 2

    Cc lnh assembly MIPS trong ti liu ny s c din t theo tng hng trong bng 1

    (1) May cause overflow exception

    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)

    Tn

    lnh

    (y

    )

    Tn

    lnh

    Lnh

    thuc

    nhm

    g (R, I

    hay J)

    Lnh thc hin chc

    nng g

    Chc nng ca tng lnh

    c din t theo kiu

    vit ca Verilog. Verilog

    l ngn ng lp trnh

    dng m t thit k

    phn cng (sinh vin

    nm 1, 2, 3 cha hc).

    Mt s ghi

    ch cho

    lnh tng

    ng, c

    lm r

    cui bng

    opcode v funct cho

    tng lnh tng

    ng.

    V d: lnh add c

    s ct ny l

    0/20hex, tc opcode

    ca add l 0; trng

    funct trong R-

    format ca add l

    20hex

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 3

    (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.

    (3) ZeroExtImm = {16{1b0}, immediate}

    Nhng lnh c phn ghi ch (3) 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 Zero, tc khng cn bit y l m hay dng, 16 bits ca na cao

    thm vo u l 0.

    (4) BranchAddr = {14{immediate[15]}, immediate, 2b0}

    s c gii thch trong phn lnh beq v bne

    (5) JumpAddr = { PC + 4[31:28], address, 2b0}

    s c gii thch trong phn lnh j v jal

    (6) Operations considered unsigned numbers (vs. 2comp.)

    Nhng lnh c phn ghi ch (6) lun lm vic trn s khng du (unsigned)

    (7) Atomic test&set pair; R[rt] = 1 if pair atomic, 0 if not atomic

    Trong bng 1, ch c 2 lnh ll v sc l c ghi ch (7)

    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

    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

    C th hiu n gin, nu s tc thi l dng th 16 bits ca na cao thm vo s l 0, cn

    nu s tc thi l m, th 16bits ca na cao thm vo s l 1

    Vit theo cu trc ca Verilog

    16{1b0}: l mt chui 16 bits m tt c cc bit u l 0

    {16{1b0}, immediate}: l chui 32 bits, 16 bit thuc na cao l 0 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 0000 0000 0000 0000 1011 1110 1101 1100

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 4

    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

    Bng 2. M t cc thanh ghi (trch t bng 1)

    Tn gi

    nh ca cc

    thanh ghi

    Ch s tng

    ng ca cc

    thanh ghi

    Mc ch s

    dng ca tng

    thanh ghi

    Thanh ghi no Yes l

    nhng thanh ghi cn c lu

    tr li khi thc hin vic gi

    mt hm con

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 5

    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:

    Hnh 3. Mt v d v hnh nh b nh t phn mm m phng (simulator) MARS 4.4

    y l word (4 bytes) ti a

    ch 0x10010004, v c gi tr

    l 0x12345678

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 6

    A. Xt cc lnh s hc

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 7

    Cc lnh s hc:

    add, addi, addiu, addu

    sub, subu

    --------------------------------------------

    1. Lnh add

    Lnh ny thuc dng R-format, c opcode l 0 v trng funct gi tr l 20hex

    Syntax (c php): (tham kho Appendix B ca sch tham kho [1])

    ngha: R[rd] = R[rs] + R[rt]

    Thc hin cng gi tr thanh ghi rs vi gi tr thanh ghi rt, tng a vo thanh ghi rd

    V d:

    add $t0, $t1, $t2

    Gi s gi tr ang cha trong thanh ghi $t1 l 3, gi tr ang cha trong thanh ghi $t2 l 4

    Kt qu: Sau khi lnh add trn thc hin, gi tr trong thanh ghi $t0 l 7 (4 + 3 = 7).

    2. Lnh addi

    Lnh ny thuc dng I-format, c opcode 8hex

    Syntax (c php):

    ngha: R[rt] = R[rs] + SignExtImm

    Thc hin cng gi tr thanh ghi rs vi s tc thi, kt qu a vo thanh ghi rt.

    Lu : Phm vi cho s tc thi trong lnh ny l 16 bits. S tc thi trc khi cng vi thanh ghi rs phi c

    m rng c du thnh (SignExtImm) thnh s 32 bits.

    R vit tt ca Register

    V d: R[rs] hiu l gi tr ca thanh ghi rs

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 8

    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

    3. Lnh addiu v addu

    Addiu c c php v thc hin chc nng ging addi

    Addu c c php v thc hin chc nng ging add

    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):

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 9

    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.

    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:

    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

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 10

    (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

    Nhm lnh so snh

    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: R[rd] = (R[rs] < R[rt])? 1 : 0

    Kim tra xem gi tr trong thanh ghi rs c nh hn thanh ghi rt hay khng, nu nh hn th thanh ghi rd

    nhn gi tr l 1; ngc li thanh ghi rd s nhn gi tr 0

    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:

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 11

    a. slt $t0, $t1, $t2

    Gi s $t1 = 0xfffffff1, $t2 = 0x00000073

    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)

    $t2 = 0x00000073 = 01110011(2) = 115(10)

    Vy $t1 < $t2 gi tr trong thanh ghi $t0 = 1

    b. sltu $t0, $t1, $t2

    Gi s $t1 = 0xfffffff1, $t2 = 0x00000073

    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 = 0x00000073 = 01110011(2) = 115(10)

    Vy $t1 > $t2 gi tr trong thanh ghi $t0 = 0

    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: R[rd] = (R[rs] < SignExtImm)? 1 : 0

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 12

    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

    Lu hnh ni b Page 13

    B. Cc lnh logic

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 14

    Nhm lnh logic:

    and, andi

    nor

    or, ori

    sll, srl

    ----------------------------------------------------------

    7. Lnh and

    Lnh ny thuc dng R-format, c opcode l 0 v trng funct l 24hex

    Syntax (c php):

    ngha: R[rd] = R[rs] & R[rt]

    Thc hin and tng bit gi tr ca thanh ghi rs v rt vi nhau, kt qu lu vo thanh ghi rd

    V d:

    and $t0, $t1, $t2

    Gi s gi tr ang cha trong thanh ghi $t1 l 0x12345678, gi tr ang cha trong thanh ghi $t2 l 0x0000000f

    th

    Kt qu: sau lnh add trn, gi tr trong thanh ghi $t0 l 0x00000008.

    8. Lnh andi

    Lnh ny thuc dng I-format, c opcode l 0xc

    Syntax (c php):

    ngha: R[rt] = R[rs] & ZeroExtImm

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 15

    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

    b) andi $t0, $t1, -3

    Vn t ra l imm y c th l s m khng?

    Mt s simulator chp nhn imm c th l m, v d s -3 trn s chuyn sang thnh b 2 ca s 16 bits,

    sau m rng theo kiu ZeroExtImm

    Mt s simulator khng chp nhn imm c th l m, v d s -3 trn a vo s bo li

    Trong phm vi mn hc, chn trng hp th 2, khng chp nhp imm l m

    9. Cc lnh or, ori, nor

    or v nor cch vit tng t nh and, nhng thay v thc hin php ton and, 2 lnh ny s thc hin php ton or

    hoc nor cho tng bit trong 2 thanh ghi, kt qu lu vo thanh ghi th 3

    ori tng t nh andi, thc hin or mt thanh ghi v mt s tc thi 16 bits c m rng ZeroExtImm thnh 32 bits

    10. Lnh sll/srl

    sll

    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

    Lu hnh ni b Page 16

    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 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. srl $t0, $t1, 5

    Gi s thanh ghi $t1 ang cha gi tr 0x12345678

    Kt qu: sau lnh trn, thanh ghi $t0 = 0x91A2B3

    Quy trnh lnh thc hin: lnh trn dch phi 5 bit thanh ghi $t1

    $t1 = 0x12345678 = 0001 0010 0011 0100 0101 0110 0111 1000(2)

    Dch phi 5 bit $t1 = 0000 0000 1001 0001 1010 0010 1011 0011(2) = 0x91A2B3

    Vy kt qu thanh ghi $t0 = 0x91A2B3

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 17

    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.

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 18

    C. Nhm lnh Nhnh/Nhy (Branch/Jump)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 19

    Cc lnh xem xt:

    beq, bne

    j, jal, jr

    Ngoi ra cn cc lnh thuc bng PsedoInstruction Set

    blt/blte

    bgt/bgte

    Ch :

    Cc lnh assembly c th chia vo 2 nhm: nhm lnh tht v nhm lnh gi

    Nhm lnh tht: l cc lnh m thc cht processor s chy ng lnh

    Nhm lnh gi: l cc lnh m khi thc thi tht s th lnh ny c chuyn thnh mt hoc mt s lnh thuc

    nhm lnh tht (nhm lnh ny c t ra thun tin cho ngi lp trnh)

    Cc lnh thuc nhm lnh PsedoInstruction Set l nhng lnh gi.

    --------------------------------------------

    11. Lnh beq

    lnh ny thuc nhm lnh I-format, c opcode 4hex

    Syntax (c php):

    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:

    Chy on chng trnh sau: beq $t1, $t2, label_A

    add $s0, $t3, $t4

    addi $s1, $t5, 3

    label_A: or $t1, $t2, $t3

    sub $t3, $t4, $t5

    lnh beq kim tra gi tr ca $t1 v $t2, nu: 2 thanh ghi ny bng nhau, th lnh tip theo

    V d 2: label vit bng s:

    Chy on chng trnh sau: beq $t1, $t2, 2

    add $s0, $t3, $t4

    addi $s1, $t5, 3

    or $t1, $t2, $t3

    sub $t3, $t4, $t5

    Trong v d ny, s 2 thay cho label_A Lnh beq kim tra gi tr ca $t1 v $t2, nu:

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 20

    c thc hin l lnh or $t1, $t2, $t3. Sau khi or thc hin xong th lung lnh theo sau s c thc hin (v d lnh sub tip theo sau s c thc hin)

    2 thanh ghi ny khng bng nhau, th lnh tip theo c thc hin l lnh add $s0, $t3, $t4. Sau khi add thc hin xong th lung lnh theo sau s c thc hin (v d chui cc lnh addi, or, sub tip theo sau s c thc hin)

    2 thanh ghi ny bng nhau, th lnh tip theo c thc hin l lnh cch beq 2 lnh, tc l lnhor $t1, $t2, $t3. Sau khi or thc hin xong th lung lnh theo sau s c thc hin (v d lnh sub tip theo sau s c thc hin)

    2 thanh ghi ny khng bng nhau, th lnh tip theo c thc hin l lnh add $s0, $t3, $t4. Sau khi add thc hin xong th lung lnh theo sau s c thc hin (v d chui cc lnh addi, or, sub tip theo sau s c thc hin)

    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

    13. Lnh bge/bgt/ble/blt

    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

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 21

    ble $t1, $t2, label Nhy ti label thc hin lnh nu thanh ghi $t1

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 22

    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.

    15. Lnh jal

    Lnh ny thuc nhm J-format, c opcode l 3hex

    Syntax (c php):

    Sa li thnh:

    R[31] = PC + 4

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 23

    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

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 24

    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:

    $ra = 0x00400004

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 25

    Chy on chng trnh sau trong MARS

    jr $s1

    add $t1, $t2, $t3

    addi $t1, $t2, 3

    or $t1, $t2, $t3

    xor $t1, $t2, $t3

    addi $t1, $t2, 1

    sub $t1, $t2, $t3

    Khi chng trnh c bin dch:

    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

    Xt nhm 4 lnh: beq, bne, j, jal c cu trc nh v d sau:

    beq/bne $t1, $t2, s_16_bits/label

    j/jal label

    ng trn phng din ngi lp trnh, ta ch cn quan tm:

    Lnh m beq/bne nhy ti c th c a vo bng cch gn label hoc dng s_16_bits,

    s_16_bits trong beq/bne l s lnh cch lnh s nhy ti bao nhiu.

    Lnh m j/jal nhy ti ch c th c a vo bng cch gn label

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 26

    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:

    Trong ct ngha ca lnh beq/bne ta thy: PC = PC + 4 + BranchAddr

    Trong ct ngha ca lnh j/jal ta thy: PC = JumpAddr

    Nh trnh by trong phn trc, lnh cn nhy ti trong beq/bne c th a vo l label hoc s tc

    thi 16 bits - ch lnh s nhy n cch lnh hin ti bao nhiu lnh. Nu ngi lp trnh a vo bng label,

    th compiler s t tnh ton ra s lnh s nhy ti cch lnh hin ti bao nhiu. Tm li:

    s tc thi trong lnh beq/bne l s lnh cch lnh cn nhy ti bao nhiu, nn BranchAddr c tnh

    bng cch ly s tc thi 16 bits ny nhn 4, tc dch tri 2 bits ri m rng theo kiu c du thnh s 32 bits, sau

    c cng vi PC + 4. Cch vit trong ghi ch (4) tng t ngha ny

    {14{immediate[15]}, immediate, 2b0}: l s 32 bits

    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

    2 bits u tin (bit 0 v 1)

    l 00 (do s tc thi c

    dch tri 2 bits)

    16 bits tip theo, t bit th

    2 t bit th 17) l s tc

    thi

    14 bits cn li y nh

    bit th 15 ca s tc

    thi

    2 bits u tin

    (bit 0 v 1) l

    00 (do s tc

    thi c dch

    tri 2 bits)

    26 bits tip theo, t

    bit th 2 t bit th

    27) t 26 bits target

    trong J-format

    4 bits cao

    nht t PC +

    4 gia

    nguyn

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 27

    D. Nhm lnh memory-instruction

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 28

    Cc lnh xt:

    lbu, lhu, lui, lw

    sb, sh, sw

    Ch : lnh ll v sc b qua

    --------------------------------------------

    17. Lnh lw

    Lnh thuc dng I-format, c opcode = 23hex

    Syntax (c php):

    ngha: R[rt] = M[R[rs] + SingExtImm]

    Ly gi tr trong thanh ghi rs cng vi s tc thi ang lu trong offset (s tc thi ny ny c m rng c du

    thanh 32 bits) ta c a ch ca t nh cn ly d liu. D liu ca t nh ny s c ly lu vo thanh ghi

    rt

    Lu :

    M[X]: l ly gi tr ca t nh ti a ch X

    V d:

    lw $t1, 4($t0)

    gi s $t0 = 0x10010000

    v t nh ti a ch 0x10010004 c gi tr 0x12345678

    Lnh lw thc hin vic load mt t nh (word) ti a ch $t0 + 4 = 0x10010004 vo thanh ghi $t1

    Kt qu: $t1 = 0x12345678

    18. Lnh lbu/lb

    lbu

    Lnh thuc nhm lnh I-format, c opcode = 24hex

    Address = Offset(rs)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 29

    Syntax (c php):

    ngha:

    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 Byte 2 Byte 1 Byte 0

    12 34 56 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 Byte 2 Byte 1 Byte 0

    12 34 56 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

    Address = Offset(rs)

    Address = Offset(rs)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 30

    19. Lnh lhu/lh

    Lnh thuc nhm lnh I-format, c opcode 25hex

    Syntax (c php):

    ngha:

    R[rt] = {16b0, M[R[rs] + SignExtImm](15:0)}

    Lnh ny ch load v 2 byte u tin (na word thp) trong t nh vo rt

    V rt l thanh ghi 32 bits nn 16 bit cn li ca rt c 2 kiu m rng du:

    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 Byte 2 Byte 1 Byte 0

    12 34 56 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:

    Address = Offset(rs)

    Address = Offset(rs)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 31

    Byte 4 Byte 2 Byte 1 Byte 0

    12 34 56 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 Byte 2 Byte 1 Byte 0

    12 34 8c 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

    Lnh thuc nhm lnh I-format, c opcode = 2bhex

    Syntax (c php):

    ngha: M[R[rs] + SignExtImm] = R[rt]

    Lu gi tr thanh ghi rt vo t nh c a ch c tnh bng gi tr thanh ghi rs cng vi offset (offset c m

    rng c du thnh s 32 bits trc khi cng)

    V d:

    sw $t1, 8($t0)

    gi s $t0 = 0x10010000

    $t1 = 0x87654321

    v t nh ti a ch 0x10010008 c gi tr 0x12345678

    T nh ny cha 4 bytes:

    Address = Offset(rs)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 32

    Byte 4 Byte 2 Byte 1 Byte 0

    12 34 56 78

    Lnh sw thc hin vic lu gi tr ca thanh ghi $t1 vo t nh c a ch = $t0 + 8 = 0x10010008

    Gi tr ca t nh ti a ch 0x10010008 sau khi lnh trn thc hin l:

    Byte 4 Byte 2 Byte 1 Byte 0

    87 65 43 21

    21. Lnh sb

    lnh thuc nhm I-format, c opcode = 28hex

    Syntax (c php):

    ngha: M[R[rs] + SignExtImm](7:0) = R[rt](7:0)

    Ly byte thp nht ca trong thanh ghi rt lu vo byte thp nht ca t nh c a ch c tnh bng gi tr thanh

    ghi rs cng vi offset (offset c m rng c du thnh s 32 bits trc khi cng)

    V d:

    sb $t1, 8($t0)

    gi s $t0 = 0x10010000

    $t1 = 0x87654321

    v t nh ti a ch 0x10010008 c gi tr 0x12345678

    T nh ny cha 4 bytes:

    Byte 4 Byte 2 Byte 1 Byte 0

    12 34 56 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

    Address = Offset(rs)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 33

    22. Lnh sh

    lnh thuc nhm I-format, c opcode = 29hex

    Syntax (c php):

    ngha: M[R[rs] + SignExtImm](15:0) = R[rt](15:0)

    Ly 2 byte thp nht trong thanh ghi rt (na thp) lu vo 2 byte thp nht ca t nh c a ch c tnh bng

    gi tr thanh ghi rs cng vi offset (offset c m rng c du thnh s 32 bits trc khi cng)

    V d:

    sh $t1, 8($t0)

    gi s $t0 = 0x10010000

    $t1 = 0x87654321

    v t nh ti a ch 0x10010008 c gi tr 0x12345678

    T nh ny cha 4 bytes:

    Byte 4 Byte 2 Byte 1 Byte 0

    12 34 56 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

    23. Lnh lui

    Lnh thuc I-format, c opcode l fhex

    Syntax (c php):

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 34

    ngha: R[rt] = {imm, 16b0}

    Gn s tc thi 16 bits vo na cao ca thanh ghi rt, na thp a 0 vo

    V d:

    a. lui $t1, 0x1234

    Kt qu: $t1 = 0x12340000

    b. lui $t1, 0x12345

    bo li do s tc thi trn qu s 16 bits

    Ngoi ra cn 2 lnh thuc nhm PseudoInstruction set: li v move

    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

    Lu hnh ni b Page 35

    25. Lnh move

    ngha: sao chp/di chuyn gi tr t thanh ghi ny sang thanh ghi kia

    V d:

    move $t1, $t2

    Gi s $t1 = 0x12345678

    $t2 = 0x87654321

    Khi lnh trn thc thi, gi tr thanh ghi $t2 c a vo thanh ghi $t1

    Kt qu sau khi chay:

    $t1 = 0x87654321

    $t2 = 0x87654321

    Ch :

    Lnh li ny thc cht l lnh gi, lnh ny c chuyn thnh lnh addu khi processor chy tht s (thc hin

    vic cng thanh ghi $t2 vi thanh ghi zero, kt qu np vo thanh ghi $t1:

  • 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

    CC LNH ASSEMBLY TRONG KHI ARITHMETIC CORE INSTRUCTION SET

    Cc lnh assembly nm bng con bn phi ca bng s 1 cha cc lnh s hc phc tp hn so vi cc lnh bn bng

    con tri.

    Do trong bng ny cha mt s lnh lm

    vic vi s du chm ng (floating-point),

    nn lnh no c format c F pha trc

    tc l lnh lm vic vi s du chm ng

    Do cc lnh lm vic vi s floating-point c format

    lnh hi khc so vi R-format hoc I-format chun

    (C thm trng fmt: phn bit lm vic vi s

    floating-point chnh xc n hay chnh kp)

    V d: lnh bclt c gi tr ct ny l 11/8/1/ tc

    opcode ca lnh = 11hex, fmt = 8 hex, ft = 1 hex v funct

    khng quan tm

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 38

    A. Cc lnh nhn v chia

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 39

    Cc lnh assembly cn khi thc hin php nhn v chia:

    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

    Lu hnh ni b Page 40

    b. mult $t1, $t2

    Gi s $t1 = 0x80008765

    $t2 = 0x12345678

    Kt qu:

    $hi = 0xf6e5de64

    $lo = 0xc83f6558

    Tc $t1*$t2 = -0x91A219B37C09AA8 (xt trn s c du dng b 2)

    Kim tra li:

    $t1 = 0x80008765 = 1000 0000 0000 0000 1000 0111 0110 0101(2)

    = -0x7FFF789B

    $t2 = 0x12345678

    $t1 * $t2 = -(0x7FFF789B x 0x12345678) = -0x91A219B37C09AA8

    = 0xF6E5DE64C83F6558 (b 2)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 41

    c. multu $t1, $t2

    Gi s $t1 = 0x80008765

    $t2 = 0x12345678

    Kt qu:

    $hi = 0x091a34dc

    $lo = 0xc83f6558

    Kim chng kt qu:

    multu thc hin php nhn 2 s dng khng du

    $t1 = 0x80008765 = 20000103545(10)

    $t2 = 0x12345678 = 2215053170(10)

    $t1 x $t2 = 20000103545(10) x 2215053170(10) = 44321515631017662530(10) = 0x91A34DCC83F6558

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 42

    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

    Lu hnh ni b Page 43

    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.

    div: chia 2 s c xt trn

    divu: chia 2 s khng xt trn

    V d:

    a. div $t1, $t2, $t3

    gi s $t2 = 0x6, $t3 = 0x5

    Kt qu: $t1 = 0x1

    $Lo= 0x1

    $Hi = 0x1

    a thm v d kim chng trng hp trn v khng trn (div/divu)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 44

    CC LNH ASSEMBLY CHO S DU CHM NG (floating-point number)

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 45

    Nhm lnh s hc:

    Cng

    add.s

    add.d

    Tr

    sub.s

    sub.d

    Nhn

    mul.s

    mul.d

    Chia

    div.s

    div.d

    Ch : Cc lnh lm vic vi s floating-point lm vic trn 32 thanh ghi f

    ----------------------------------------

    Cc lnh ny thuc nhm lnh FR, c opcode u bng 11hex

    Lnh add c funct bng 0, lnh sub c funct bng 1 hex, lnh mul c funct bng 2 hex, lnh div c funct bng 3 hex

  • Khoa K thut My tnh Trng i hc Cng Ngh Thng Tin HQG Tp. HCM

    Lu hnh ni b Page 46

    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