Professional Documents
Culture Documents
Mc tiu
Sau bi ny, SV c kh nng:
Gii thch quan im thit k b lnh MIPS C kh nng lp trnh hp ng MIPS
B lnh
Cng vic c bn nht ca b x l l x l cc lnh my (instruction). Tp hp cc lnh m mt b x l no ci t gi l b lnh (Instruction Set). Cc b x l khc nhau ci t cc b lnh khc nhau.
V d: Pentium 4 (Intel), MIPS R3000 (MIPS Technology Inc), ARM2 (ARM), PowerPC 601 (IBM), SPARC V8 (Sun),
Cu hi
Mt chng trnh thc thi (.exe) chy trn b x l Pentium 3 (Intel) c th chy c trn b x l Pentium 4 (Intel) khng ? Mt chng trnh thc thi (.exe) chy trn mt b x l ca Intel c th chy c trn b x l ca AMD ?
IA-64: Pentium Itanium (my ch - server) MIPS (h thng nhng embedded system v siu my tnh supercomputer)
MIPS32: R2000, R3000, R6000, MIPS64: R4000, R5000, R8000,
Ngoi ra, PowerPC (my ch, h thng nhng), SPARC 4 (my ch), ARM (h thng nhng),
4 nguyn tc thit k b lnh MIPS Cu trc lnh n gin v c quy tc (Simplicity favors regularity) Lnh v b lnh cng nh gn cng x l nhanh (Smaller is faster) Tng tc x l cho nhng trng hp thng xuyn xy ra (Make the common case fast) Thit k tt i hi s tha hip tt (Good design demands good compromises)
Mt s kho st v nhn xt
MIPS ch cn h tr 32 thanh ghi l , nh s t $0 - $31 Mi thanh ghi c kch thc 32 bit (4 byte) Cc php ton lun l v s hc nh
a=b+c a=b&c a = b << 3
gm:
Loi php ton 2 ton hng ngun + 1 ton hng ch
n gin v thao tc nhanh, cc ton hng l a ch thanh ghi (khng l a ch b nh) Trong php dch, ton hng th 2 l hng s
MIPS h tr nhiu loi lnh khc nhau: lnh tnh ton s hc, lun l, lnh thao tc b nh, lnh r nhnh, n gin v d dng trong vic truy xut b nh, tt c cc lnh u c chiu di 32 bit
Trong MIPS, nhm 32 bit c gi l mt t (word)
opcode: m thao tc, cho bit loi lnh g funct: dng kt hp vi opcode xc nh lnh lm g (trng hp cc lnh c cng m thao tc opcode)
Ti sao 2 trng opcode v funct khng nm lin nhau ?
opcode
rs
rt
rd
shamt funct
10
32
opcode = 0 Xc nh thao tc cng (cc lnh theo cu trc R-Format c trng m thao tc opcode = 0) funct = 32 rd = 8 (ton hng ch l thanh ghi $8) rs = 9 (ton hng ngun th 1 l thanh ghi $9) rt = 10 (ton hng ngun th 2 l thanh ghi $10) shamt = 0 (khng phi lnh dch)
$8 = $9 + $10
Lnh hp ng s hc v lun l
C php: opt opr, opr1, opr2
Trong : opt Tn thao tc (ton t) opr Thanh ghi (ton hng ch) cha kt qu opr1 Thanh ghi (ton hng ngun th 1) opr2 Thanh ghi hoc hng s (ton hng ngun th 2)
10
Lnh tr:
sub $s3,$s4,$s5 (tr c du trong MIPS) subu $s3,$s4,$s5 (tr khng du trong MIPS) tng ng vi: d = e - f (trong C) trong cc thanh ghi $s3,$s4,$s5 (trong MIPS) tng ng vi cc bin d, e, f (trong C)
12
Ch : mt lnh trong C c th gm nhiu lnh my. Ghi ch: k t # dng ch thch trong hp ng cho MIPS Ti sao khng xy dng cc lnh MIPS c nhiu ton hng ngun hn ?
14
V d m my ca lnh add
add $t0,$t1,$t2 M my (di dng nh phn)
10
32
Xc nh thao tc cng (cc lnh theo cu trc opcode = 0 R-Format c trng m thao tc opcode = 0) funct = 32 rd = 8 (ton hng ch l $8 ~ $t0) rs = 9 (ton hng ngun th 1 l $9 ~ $t1) rt = 10 (ton hng ngun th 2 l $10 ~ $t2) shamt = 0 (khng phi lnh dch)
16
not:
A nor 0 = not (A or 0) = not (A)
Ti sao khng c lnh not m li s dng lnh nor thay cho lnh not ? Ti sao khng c cc lnh tnh ton lun l cn li nh: xor, nand, ?
18
Dch
sll $s1,$s2,2 # dch tri lun l $s2 2 bit $s2 = 0000 0000 0000 0000 0000 0000 0101 0101 = 85 $s1 = 0000 0000 0000 0000 0000 0001 0101 0100 = 340 (8522) srl $s1,$s2,2 # dch phi lun l $s2 2 bit $s2 = 0000 0000 0000 0000 0000 0000 0101 0101 = 85 $s1 = 0000 0000 0000 0000 0000 0000 0001 0101 = 21 (85/22) sra $s1,$s2,2 # dch phi s hc $s2 2 bit $s2 = 1111 1111 1111 1111 1111 1111 1111 0000 = -16 $s1 = 1111 1111 1111 1111 1111 1111 1100 0000 = -4 (-16/22)
V d m my ca lnh sll
sll $t2,$s0,4 M my (di dng nh phn)
16
10
opcode = 0 Xc nh thao tc dch tri lun l funct = 0 rd = 10 (ton hng ch l $10 ~ $t2) rs = 0 (khng dng trong php dch) rt = 16 (ton hng ngun l $16 ~ $s0) shamt = 4 (s bit dch l 4)
20
Truy xut b nh
B nh l mng 1 chiu cc nh c a ch
D liu a ch 1 0 101 1 10 2 100 3 . . . . . .
6 opcode
5 rs
5 rt
5 rd
5 6 shamt funct
Trong cu trc R-format h tr cc lnh s hc v lun l ( tm hiu), cc ton hng rs, rt, td gi a ch cc thanh ghi Lm sao truy xut d liu trong b nh?
Cn ton hng gi a ch nh
Hi thm: c cn phi lu d liu trong b nh ri mi np vo thanh ghi khng? Ti sao khng np d liu ca 21 chng trnh trc tip vo cc thanh ghi x l ?
Cu trc R-Format
opcode
rs
rt
rd
shamt funct
opcode opcode
rs rs
rt rt
rd
22
Cu trc I-Format
6 opcode 5 rs 5 rt 16 immediate
opcode: m thao tc, cho bit lnh lm g (tng t opcode ca R-Format, ch khc l khng cn thm trng funct)
y cng l l do ti sao R-format c 2 trng 6-bit xc nh lnh lm g thay v mt trng 12-bit: nht qun vi cc cu trc lnh khc trong khi kch thc mi trng vn hp l.
rs: cha a ch thanh ghi ngun th 1 rt (register target): cha a ch thanh ghi ch. immediate: 16 bit, c th biu din s nguyn t -215 ti (215-1)
ln cha gi tr di (offset) t a ch trong thanh ghi c s rs nhm phc v vic truy xut b nh trong lnh lw v sw. 23
Lnh thao tc vi b nh
MIPS h tr cc lnh di chuyn d liu (Data transfer instructions) chuyn d liu gia thanh ghi v vng nh:
Vng nh vo thanh ghi (np - load) Thanh ghi vo vng nh (lu - store) Computer Processor Control (brain) Datapath Registers Memory Devices Input
25
lw $t0,12($s0)
Lnh ny np t nh c a ch ($s0 + 12) vo thanh ghi $t0
sw $t0,12($s0)
Lnh ny lu gi tr trong thanh ghi $t0 vo vng nh c a ch ($s0 + 12)
26
V d m my ca lnh lw
lw $t0,12($s0) M my (di dng nh phn)
35
16
12
opcode = 35 (Xc nh thao tc np t nh) rs = 16 (ton hng ch l $16 ~ $s0) rt = 18 (ton hng ngun l $8 ~ $t0) immediate = 12 (hng s l 12)
27
28
30
Con tr vs. gi tr
Lu phn bit 2 trng hp sau (gi s x: $t0 , y: $t1, z: $t2)
Nu ghi th tng ng Nu ghi th tng ng add $t2,$t1,$t0 $t0 v $t1 lu gi tr z = x + y (trong C) lw $t2,0($t0) $t0 cha mt a ch (vai tr nh mt con tr) z = *x (trong C)
32
Lnh np, lu t nh (2 byte) MIPS cn h tr cc lnh np, lu t nh (2 byte) nh nhm h tr cc thao tc vi k t 2 byte (Unicode).
load half: lh (lu t nh (2 byte) vo 2 byte thp ca thanh ghi) store half: sh
C php tng t lw, sw Ti sao li h tr loi lnh ny trong khi vn c th s dng cc lnh np byte nh thc hin thay
34
Ton hng thanh ghi v vng nh Trong MIPS, ch c cc lnh np, lu mi s dng ton hng vng nh
Ti sao khng s dng ton hng vng nh trong cc lnh khc nh s hc, lun l,?
Mt nhim v ca trnh bin dch l nh x cc bin c s dng trong chng trnh thnh cc thanh ghi
iu g xy ra nu bin s dng trong cc chng trnh nhiu hn s lng thanh ghi? Nhim v ca trnh bin dch: spilling
35
Thao tc vi hng s
Cc hng s xut hin trong cc lnh dch v lnh di chuyn c gi l cc ton hng hng s Cc thao tc vi hng s xut hin rt thng xuyn, do , MIPS h tr mt lp cc lnh thao tc vi hng s (tn lnh kt thc bng k t i - immediate): addi, andi, ori, Cc lnh thao tc vi hng s c cu trc I-Format
opcode
rs
rt
immediate
Ti sao li cn cc lnh thao tc vi hng s trong khi cc lnh ny u c th c thc hin bng cch kt hp cc lnh np, lu vi cc thao tc trn thanh ghi ?
36
17
16
10
opcode = 8: xc nh thao tc cng hng s c du rs = 17 (ton hng ngun th 1 l $17 ~ $s1) rt = 16 (ton hng ch l $16 ~ $s0) immediate = 10 (hng s l 10)
Mun thc hin php tr mt hng s th sao? addi $s0,$s1,-10 Ti sao khng c lnh tr hng s, chng hn subi?
37
Vn ca I-Format (1/3)
Vn :
Cc lnh thao tc vi hng s (addi, lw, sw,) c cu trc I-Format, ngha l trng hng s (immediate) ch c 16 bit. opcode rs rt immediate
Nu mun thao tc vi cc hng s 32 bit th sao ? Tng kch thc immediate thnh 32 bit? tng kch thc cc lnh thao tc vi hng s c cu trc I-Format
38
Vn ca I-Format (2/3)
Gii php:
H tr thm lnh mi nhng khng ph v cc cu trc lnh c
Lnh mi:
lui register, immediate Load Upper Immediate a hng s 16 bit vo 2 byte cao ca mt thanh ghi Gi tr cc bit 2 byte thp c gn 0 Lnh ny c cu trc I-Format
39
Vn ca I-Format (3/3)
Gii php (tt):
Lnh lui gii quyt vn nh th no? V d: mun cng gi tr 32 bit 0xABABCDCD vo thanh ghi $t0
khng th thc hin: addi $t0,$t0, 0xABABCDCD m thc hin nh sau: lui $at, 0xABAB ori $at, $at, 0xCDCD add $t0, $t0,$at
40
Trn s trong php tnh s hc Nhc li: trn s xy ra khi kt qu php tnh vt qu chnh xc gii hn cho php (ca my tnh). MIPS cung cp 2 loi lnh s hc:
Cng (add), cng hng s (addi) v tr (sub) pht hin trn s Cng khng du (addu), cng hng s khng du (addiu) v tr khng du (subu) khng pht hin trn s
Trc nghim
A. B.
C.
Kiu cn c xc nh khi khai bo bin trong C v khi s dng lnh trong MIPS. Do ch c 8 thanh ghi lu tr ($s) v 8 thanh ghi tm ($t), nn khng th chuyn t chng trnh C c nhiu hn 16 bin thnh chng trnh MIPS. Nu p (lu trong $s0) l mt con tr tr ti mng ints, th p++; s tng ng vi addi $s0 $s0 1
1: 2: 3: 4: 5: 6: 7: 8:
Trc nghim
Hy chuyn lnh *x = *y (trong C) thnh lnh tng ng trong MIPS (cc con tr x, y c lu trong $s0 $s1)
A: B: C: D: E: F: G: H: add add lw lw lw sw lw sw $s0, $s1, $s0, $s1, $t0, $t0, $s0, $s1, $s1, zero $s0, zero 0($s1) 0($s0) 0($s1) 0($s0) 0($t0) 0($t0)
0: 1: 2: 3: 4: 5: 6: 7: 8: 9:
A B C D EF EG FE FH HG GH
43
Trc nghim
Lnh no sau y c biu din tng ng vi 3510?
1. add $0, $0, $0 opcode 2. subu $s0,$s0,$s0 opcode opcode 3. lw $0, 0($0) 4. addi $0, $0, 35 opcode 5. subu $0, $0, $0 opcode 6. Lnh khng phi l dy bit rs rs rs rs rs rt rt rt rt rt rd rd shamt funct shamt funct offset immediate rd shamt funct
S hiu v tn ca cc thanh ghi: 0: $0, .. 8: $t0, 9:$t1, ..15: $t7, 16: $s0, 17: $s1, .. 23: $s7 M thao tc v m chc nng (nu c) add: pcode = 0, funct = 32 subu: opcode = 0, funct = 35 addi: opcode = 8 lw: opcode = 35
44
p n
Lnh no sau y c biu din tng ng vi 3510? 1. add $0, $0, $0 2. subu $s0,$s0,$s0 3. lw $0, 0($0) 4. addi $0, $0, 35 5. subu $0, $0, $0
6. Lnh khng phi l dy bit S hiu v tn ca cc thanh ghi: 0: $0, .. 8: $t0, 9:$t1, ..15: $t7, 16: $s0, 17: $s1, .. 23: $s7 M thao tc v m chc nng (nu c) add: pcode = 0, funct = 32 subu: opcode = 0, funct = 35 addi: opcode = 8 lw: opcode = 35
45
0 0 35 8 0
0 16 0 0 0
0 16 0 0 0
0 16
0 0
32 35 0 35
35
...
MIPS h tr cc nhm lnh x l d liu:
Lnh s hc Lnh lun l Lnh np lu d liu
Ngoi cc lnh x l d liu, my tnh (computer) cn phi h tr cc lnh iu khin qu trnh thc thi cc lnh. Trong NNLT C, bn bao gi s dng lnh goto nhy ti mt nhn (labels) cha ?
46
Lnh if trong C
2 loi lnh if trong C
if (condition) clause if (condition) clause1 else clause2
bne
register1, register2, L1
bne ngha l Branch if (registers are) not equal tng ng vi lnh if trong C nh sau: if (register1 != register2) goto L1
V d:
if (b == 0) a = a + 1 else a = a + 2 beq addi hit: addi $t0,$t0,1
49
$t1,$0,hit $t0,$t0,1
Lnh r nhnh c iu kin: nh v theo thanh ghi PC (2/3) Ch : mi lnh c kch thc 1 t nh (32 bit) v MIPS truy xut b nh theo nguyn tc nguyn tc Alignment Restriction, do n v ca immediate, khong cch so vi PC, l t nh Nh vy, cc lnh r nhnh c th nhy ti cc a ch c khong cch 215 t nh t PC ( 217 bytes).
51
Lnh r nhnh c iu kin: nh v theo thanh ghi PC (3/3) Cch tnh a ch r nhnh:
Nu khng thc hin r nhnh: PC = PC + 4 PC+4 = a ch ca lnh k tip trong b nh Nu thc hin r nhnh: PC = (PC + 4) + (immediate * 4) Ti sao cng immediate vi (PC+4), thay v vi PC ? Nhn xt: trng immediate cho bit s lnh cn nhy qua ti c nhn.
52
opcode = 4 (m thao tc ca lnh beq) rs = 9 (ton hng ngun th 1 l $t1 ~ $9) rt = 0 (ton hng ngun th 1 l $0) immediate = 1
53
Mt s vn ca nh v theo thanh ghi PC Gi tr cc trng ca lnh r nhnh c thay i khng nu di chuyn m ngun ? Nu phi nhy ra ngoi khong 215 lnh t lnh r nhnh th sao ? Tng kch thc trng immediate tng kch thc lnh r nhnh ?
54
opcode opcode
rs rs
rt rt
rd
To cu trc lnh mi th no gim thiu thay i so vi cu trc R-Format v I-Format Cu trc J-Format
opcode
target address
opcode m thao tc, cho bit lnh lm g target address cha a ch (t nh) cn nhy ti
55
Vn ca Cu trc J-Format Nh vy, vi cu trc J-Format, c th nhy trong khong 226 t nh (~228 byte) C ngha l khng th nhy ti cc t nh c a ch t 227 ti 232 ?
Tuy nhin, nhu cu ny l khng cn thit v chng trnh thng khng qu ln nh vy (thng trong gii hn 256 MB) Nu cn nhy ti cc a ch ny, MIPS h tr lnh jr (s c hc sau).
56
(true) i == j f=g+h
(false) i == j? i != j f=g-h
Exit
Chuyn thnh lnh my MIPS:
beq sub j True: add Exit: $s3,$s4,True $s0,$s1,$s2 Exit $s0,$s1,$s2 # branch i==j # f=g-h(false) # goto Exit # f=g+h (true)
58
C th vit li nh sau:
Loop: g = g + A[i]; i = i + j; if (i != h) goto Loop;
Vit li di dng goto, chuyn thnh cc lnh MIPS s dng cc lnh r nhnh c iu kin
60
MIPS h tr lnh:
Set on Less Than C php: slt reg1,reg2,reg3 (Cu trc R-Format) ngha if (reg2 < reg3) reg1 = 1; else reg1 = 0; set ngha l set to 1 reset ngha l set to 0
61
if (g >= 1) goto Loop Loop: . . . # $t0 = 1 if # $s0<1 (g<1) # goto Loop # if $t0==0 # (if (g>=1)) Cp slt v beq tng ng vi if( )goto C th s dng cp lnh add/or v slt thay cho slti. Ti sao phi to ra 1 lnh mi ? Ngoi ra, cn c cc lnh: sltu, sltiu Gi tr ca $t0, $t1 vi ($s0 = FFFF FFFAhex, $s1 = 0000 FFFAhex) ? slt $t0, $s0, $s1 64 sltu $t1, $s0, $s1
I P S
66
Trc nghim
Loop:addi slti beq slt bne $s0,$s0,-1 $t0,$s1,2 $t0,$0 ,Loop $t0,$s1,$s0 $t0,$0 ,Loop # # # # # i = i - 1 $t0 = (j < 2) goto Loop if $t0 == 0 $t0 = (j < i) goto Loop if $t0 != 0 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: j j j j j j j j j j < < > < < > 2 2 2 2 2 2 2 2 2 2 && && && && && || || || || || j j j j j j j j j j < < < < < <
67
($s0=i, $s1=j)
Biu thc iu kin (C) no trong cu lnh while (bn di) tng ng vi on lnh MIPS trn?
do {i--;} while(__);
i i i i i i i i i i
68
Th tc trong C
Li gi th tc v khai main() { int a,b,c; bo th tc c chuyn ... thnh lnh my nh th c = sum(a,b); no ? ... i s c truyn vo } th tc nh th no ? /* khai bo hm sum */ Kt qu tr v ca th int sum (int x, int y){ tc c truyn ra ngoi return x+y; nh th no ? }
69
Nhn xt
Khi gi th tc th lnh tip theo c thc hin l lnh u tin ca th tc C th xem tn th tc l mt nhn v li gi th tc l mt lnh nhy ti nhn ny
C sum(a,b); ... int sum (...) MIPS j sum # nhy ti # nhn sum ... sum:
Sau khi thc hin xong th tc phi quay v thc hin tip lnh ngay sau li gi th tc
return ... j ?
70
V d
int main() { ... c=sum(a,b);/* a,b:$s0,$s1 */ ... } int sum(int x, int y) { return x+y; } a ch 1000 1004 1008 1012 1016 2000 2004
Hi: Ti sao li dng jr ? M khng n gin dng j? Tr li: th tc sum c th c gi nhiu ch khc nhau, do v tr quay v mi ln gi khc nhau s khc nhau.
M I P S
add $a0,$s0,$zero # x = a add $a1,$s1,$zero # y = b addi $ra,$zero,1016 # lu a ch quay v # vo $ra=1016 j sum # nhy ti nhn sum ... sum: add $v0,$a0,$a1# khai bo th tc sum jr $ra # nhy ti a ch # trong $ra
71
Nhn xt
Thay v phi dng 2 lnh lu a ch quay v vo $ra v nhy ti th tc:
1008 addi $ra,$zero,1016 # $ra=1016 1012 j sum # goto sum
MIPS cn h tr 1 lnh jal (jump and link) thc hin 2 cng vic trn:
1008 jal sum # $ra=1012,goto sum
L do no khc ?
72
V d
int main() { ... c=sum(a,b);/* a,b:$s0,$s1 */ ... } int sum(int x, int y) { return x+y; } a ch 1000 1004 1008 add add jal $a0,$s0,$zero $a1,$s1,$zero sum # # # # # x = y = lu vo ti a b a ch quay v $ra=1012 v nhy sum
M I P S
... sum: add $v0,$a0,$a1# khai bo th tc sum jr $ra # nhy ti a ch # trong $ra
73
Cc lnh mi
jal (jump and link): J-Format
C php: jal label 1 (link): Lu a ch ca lnh k tip vo thanh ghi $ra 2 (jump): nhy ti nhn label
Cc thanh ghi mi
MIPS h tr thm mt s thanh ghi lu tr cc d liu phc v cho th tc:
i s Kt qu tr v a ch quay v $a0, $a1, $a2, $a3 $v0, $v1 $ra
Nu th tc s dng nhiu d liu (i s, kt qu tr v, bin cc b) hn s lng thanh ghi k trn ? S dng thm nhiu thanh ghi hn Bao nhiu thanh ghi cho ? S dng ngn xp (stack)
75
Bi tp
main() { int i,j,k,m; ... i = mult(j,k); ... m = mult(i,i); ... } /* khai bo hm mult */ int mult (int mcand, int mlier){ int product; product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }
76
Th tc lng nhau
int sumSquare(int x, int y) { return mult(x,x)+ y; } Th tc sumSquare gi th tc mult. Vn
a ch quay v ca th tc sumSquare trong thanh ghi $ra s b ghi bi a ch tr v ca th tc mult khi th tc ny c gi Nh vy cn phi lu li a ch quay v ca th tc sumSquare (trong thanh ghi $ra ) trc khi gi th tc mult.
M hnh cp pht b nh ca C
Mt chng trnh C thc thi s c cp pht cc vng nh sau: a ch Vng nh c s dng trong qu trnh
$sp Con tr ngn xp Stack thc thi th tc nh lu cc bin cc b, lu a ch tr v,
Heap
Vng nh cha cc bin cp pht ng. V d: con tr C c cp pht ng bi hm malloc() Vng nh cha cc bin cp pht tnh ca mi chng trnh. V d: bin ton cc ca C
Static
Code
79
Cu trc c bn ca th tc
u th tc
entry_label: addi $sp,$sp, -framesize sw $ra, framesize-4($sp) # # # # ct a ch tr v ca th tc trong $ra vo ngn xp ra
Thn th tc
(c th gi cc th tc khc)
Cui th tc
Phc hi cc thanh ghi khc nu cn lw $ra, framesize-4($sp) addi $sp,$sp, framesize jr $ra # khi phc $ra
memory
81
Trong th tc E
3. Khi to ngn xp 4. Lu vo ngn xp cc thanh ghi trong R c th b thay i trong E. 5. 6. Khi phc cc d liu lu tm trong ngn xp 7. Phc hi ngn xp 8. Gi lnh jr $ra tr li th tc R
82
Trc nghim
Khi chuyn sang MIPS A. C TH sao lu $a0 vo $a1 (v sau khng lu li $a0 hay $a1 vo ngn xp) lu li n qua nhng li gi qui. B. PHI lu $a0 vo ngn xp v n s thay i. C. PHI lu $ra vo ngn xp do cn bit a ch quay v
0: 1: 2: 3: 4: 5: 6: 7:
Trc nghim
r: ... ... jal e ... jr $ra # c ghi $s0,$v0,$t0,$a0,$sp,$ra,mem ### ct cc thanh ghi vo ngn xp? # gi th tc e # c ghi $s0,$v0,$t0,$a0,$sp,$ra,mem # quay v th tc gi r
e: ... # c ghi $s0,$v0,$t0,$a0,$sp,$ra,mem jr $ra # quay v th tc r Th tc r cn ct cc thanh ghi no vo ngn xp trc khi gi jal e? 0: 1: 2: 3: 4: 5: 6:
0 1 2 3 4 5 6
of of of of of of of
p n
r: ... ... jal e ... jr $ra # c ghi $s0,$v0,$t0,$a0,$sp,$ra,mem ### ct cc thanh ghi vo ngn xp? # gi th tc e # c ghi $s0,$v0,$t0,$a0,$sp,$ra,mem # quay v th tc gi r
e: ... # c ghi $s0,$v0,$t0,$a0,$sp,$ra,mem jr $ra # quay v th tc r Th tc r cn ct cc thanh ghi no vo ngn xp trc khi gi jal e? 0: 1: 2: 3: 4: 5: 6:
0 1 2 3 4 5 6
of of of of of of of
86
89
90
Lnh gi
Lnh gi (Pseudo Instruction) l cc lnh hp ng khng c ci t lnh my tng ng, nhm mc ch gip cho vic lp trnh hp ng d dng hn
92
Tm hiu thm
Qu trnh bin dch v thc thi chng trnh (phn 2.10, trang 106-115, P&H) + cc khi nim
Symbol table Compiler, Linker, Loader Dynamically Linked Library (DLL) Java bytecode, Java Virtual Machine (JVM), Just In Time Compiler (JIT)
B lnh Intel IA-32 (phn 2.16, trang 134-143, P&H) + cc khi nim
General Purpose Register (GPR) Addressing Modes
93
Tham kho
Chng 2, trang 28, P&H
94
Cu trc my tnh
My tnh
B x l B nh chnh (Central (Main Processing Memory) Unit) H thng kt ni (Bus) My tnh (Computer) Thit b nhp xut (Input Output)
Cu trc b x l
Lu tr tm d liu ALU, CU x l v iu khin
Computer
I/O System Bus Memory CPU
B x l (CPU)
Thanh ghi (Registers)
Internal Bus
Lnh my
Lnh my (machine instruction/ instruction/ machine code) l dy bit cha yu cu m b x l phi thc hin Cu trc ca mt lnh my thng gm:
M thao tc (opcode): cho bit lnh thc hin thao tc g (+. , and, or, ) Cc ton hng (operand): cho bit cc i tng b tc ng bi thao tc trong m thao tc (thanh ghi, vng nh, hng s, )
Hot ng ca CPU
X l lnh my qua 2 bc, gi l chu k lnh (instruction cycle)
Np lnh (Fetch)
Di chuyn lnh t b nh vo thanh ghi
Qu trnh np lnh
MAR (PC) MBR Memory IR (MBR) PC (PC) + 1
Thanh ghi MAR (Memory Address Register)
Lu a ch c gi ra/ nhn vo t bus a ch.
B x l di chuyn lnh t vng nh c a ch trong thanh ghi PC vo thanh ghi IR. Mc nh, gi tr thanh ghi PC c tng 1 lng bng chiu di ca lnh c np.
8
Cc thanh ghi: PC, IR, AC M thao tc 0001 = Np d liu t a ch vo thanh ghi AC 0010 = Lu d liu t thanh ghi AC vo b nh ti a ch 0101 = Cng dn gi tr ti a ch vo thanh ghi AC
10
11
Ngt
Ngt (Interrupt) l c ch cho php ngt qu trnh thc thi tun t thng thng tng lnh ca b x l phc v cng vic khc nh nhp xut. Mt s loi ngt
Ngt chng trnh
Debug chng trnh Trng hp trn s, chia cho 0,
Ngt ng h
c pht sinh bi b nh gi bn trong b x l c s dng trong cc mi trng a nhim
Nhp xut
V d: nhp k t,
Li phn cng
V d: li truyn d liu,..
12
13
Tham kho
Chng 12, William Stallings
14