Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 28

CHNG 1 Gii thiu v chng trnh dch

Mc tiu: Gii thiu cc khi nim c bn, cc giai on chnh khi bin dch chng trnh

Khi nim chng trnh dch


Chng trnh dch (compiler) l mt chng trnh lm nhim v c mt chng trnh c vit bng mt ngn ng - ngn ng ngun (source language) - ri dch n thnh mt chng trnh tng ng mt ngn ng khc - ngn ng ch (target languague). Chng trnh dch ta cn gi l trnh bin dch Mt phn quan trng trong qu trnh dch l ghi nhn li cc li c trong chng trnh ngun thng bo li cho ngi vit chng trnh

Chng trnh ngun (Source program)

Trnh bin dch (Compiler)

Chng trnh ch (Target program)

Thng bo li (Error messages )

Ng cnh ca mt trnh bin dch


to tra mt chng trnh ch c kh nng thc thi (excutable) th ngoi trnh bin dch ta phi c thm mt s chng trnh khc na. S sau m t ng cnh ca mt trnh bin dch trong mt h thng x l ngn ng (language-processing system)

Chng trnh ngun khung (Skeletal source program) B tin x l (Preprocessor) Chng trnh ngun (Source program) Trnh bin dch (Compiler) Chng trnh hp ng ch (Target assembly program) Trnh dch hp ng (Assembler) M my ti kh nh (Relocatable machine code) Trnh ti/lin kt (Loader/link-editor) M my tuyt i (Absolute machine code) Th vin/tp tin i tng (Library/object files)

Cc giai on bin dch chng trnh


Qu trnh bin dch c chia thnh nhiu giai on Qua mi giai on chng trnh ngun c chuyn i t dng biu ny sang mt dng biu din khc Trong thc t xy dng trnh bin dch, i khi cc giai on ny c nhm li vi nhau Cc giai don bin dch c minh ho trong hnh v di y

Chng trnh ngun (Source program) Phn tch t vng (Lexical analyzer) Phn tch c php (Syntax analyzer) Phn tch ng ngha (Semantic analyzer) Qun l bng k t (Symbol-table manager) Sinh m trung gian (Intermediate code generator) Ti u m (Code optimizer) Sinh m (Code generator) Chng trnh ch (Target program) Qun l li (Error handler)

1. Phn tch t vng (Lexical Analysis)


Giai on phn tch t vng s c chng trnh ngun t tri sang phi (linear analysis/scanning) tch ra thnh cc m thng bo (token) Trong qu trnh phn tch t vng cc khong trng (blank) s b b qua.

V d : Qu trnh phn tch t vng cho cu lnh gn position := initial + rate * 60 s tch thnh cc token nh sau: 1. nh danh (identifier) position

2. K hiu php gn :=
3. nh danh initial 4. K hiu php cng +

5. nh danh rate
6. K hiu php nhn * 7. S 60

2. Phn tch c php (Syntax Analysis)


Giai on phn tch c php thc hin cng vic nhm cc token ca chng trnh ngun thnh cc cm t vn phm (grammatical phrase)
Thng thng cc cm t vn phm ny c biu din bng cy phn tch c php (parse tree) vi : - Ngn ng c nh ngha bi cc lut sinh (production) - Phn tch c php da vo lut sinh xy dng cy phn tch c php.

V d: Gi s ngn ng nh ngha cu lnh gn bi cc lut sinh sau :

assig stmt id := expr


expr expr + expr | expr * expr | (expr) | id | number

Lnh gn position := initial + rate * 60 c biu din bng parse tree nh sau:

assig stmt | :=

id | position
Expr | id | initial

Expr | +

Expr | *

Expr | id | rate

Expr | Number | 60

position := initial + rate * 60

Cu trc phn cp ca mt chng trnh thng c din t bi quy lut qui


V d: nh ngha qui mt biu thc s hc nh sau 1) nh danh (identifier/id) l mt biu thc (expression/expr) 2) S (number) l mt biu thc. 3) Nu expr1 v expr2 l cc biu thc th: expr1 + expr2 expr1 * expr2 (expr1) cng l nhng biu thc.

V d: Nhiu ngn ng lp trnh nh ngha cc cu lnh (statement) theo cch nh sau : 1) Nu id1 l mt nh danh v expr2 l mt biu thc th id1 := expr2 l mt lnh (stmt). 2) Nu expr1 l mt biu thc v stmt2 l mt lnh th

while (expr1) do stmt2


If (expr1) then stmt2

u l cc lnh.

3. Phn tch ng ngha (Semantic Analysis)


Giai on phn tch ng ngha s thc hin vic kim tra xem chng trnh ngun c cha li v ng ngha hay khng Tp hp thng tin v cc kiu d liu cho giai on sinh m v sau S dng cu trc phn cp ca giai on phn tch c php xc nh cc ton t, ton hng ca cc biu thc v cu lnh Mt phn quan trng trong giai on phn tch ng ngha l kim tra kiu (type checking) v p chuyn i kiu

V d: Trong cu lnh position := initial + rate * 60

Gi s cc bin rate, initial v position c khai bo l real, 60 l s integer v vy trnh bin dch s i s nguyn 60 thnh s thc 60.0 bng hm inttoreal
:= :=

position

position

initial

initial

rate

60

rate

inttoreal

60

4. Sinh m trung gian (Intermediate Code Generator)


Sau khi phn tch cu trc v ng ngha, mt s trnh bin dch s to ra mt dng biu din trung gian ca chng trnh ngun M trung gian c 2 c tnh quan trng: D to v d dng chuyn i thnh chng trnh ch M trung gian c cch biu din. Thng thng ngi ta s dng dng "m my 3 a ch" (three-address code), tng t nh dng hp ng cho mt my m trong mi v tr b nh c th ng vai tr nh mt thanh ghi.

V d: Lnh position := initial + rate * 60 khi chuyn sang dng m trung gian three-address code c dng: temp1 := inttoreal (60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 Ta dng id1, id2, id3 thay th cho position, initial v rate nhn mnh rng tn ca mt nhn dng s b thay i khi ta bin dch chng trnh

5. Ti u m (Code Optimizer)
Giai on ti u m c gng ti u m trung gian thu c m my thc hin nhanh hn V d: M trung gian nu trn c th ti u thnh: temp1 := id3 * 60.0

id1 := id2 + temp1

6. Sinh m (Code generation)


Giai on cui cng ca bin dch l sinh m ch, thng l m my hoc m hp ng.

V tr cc vng nh gn cho cc bin c chng trnh s dng.


Sau , cc lnh trung gian c dch ln lt thnh chui cc ch th m my. Vn quyt nh l vic gn cc bin cho cc thanh ghi.

V d: S dng cc thanh ghi (chng hn R1, R2) cho vic sinh m ch nh sau: MOVF MULF MOVF ADDF MOVF id3, R2 #60.0, R2 id2, R1 R2, R1 R1, id1

Qun l bng k t
Mt nhim v quan trng ca trnh bin dch l ghi li cc nh danh c s dng trong chng trnh ngun v thu thp cc thng tin v cc thuc tnh khc nhau ca mi nh danh Cc thuc tnh cung cp thng tin v v tr b nh c cp pht cho mt nh danh, kiu v phm vi ca nh danh Nu nh danh l tn ca mt th tc th thuc tnh l cc thng tin v s lng v kiu ca cc i s, phng php truyn i s v kiu tr v ca th tc (nu c)

Bng k hiu (symbol table) l mt cu trc d liu m mi phn t l mt bn ghi dng lu tr mt nh danh, cc trng l cc thuc tnh ca nh danh
Trong qu trnh phn tch t vng, tn cc nh danh c tm thy v n c a vo bng k hiu nhng thng th cc thuc tnh ca n cha xc nh c trong giai on ny Cc thuc tnh khc ca cc nh danh s c b sung trong cc giai on bin dch tip theo

V d: Trong Pascal cu lnh khai bo bin Var position, initial, rate: real;

Sau khi phn tch t vng bng qun l k t c dng nh sau:


SYMBOL TABLE
1 2 3 4 position initial rate ............. ............. .............

X l li
Mi giai on bin dch c th gp nhiu li, v d:

Giai on phn tch t vng gp li khi cc k t khng th ghp thnh mt token.


Giai on phn tch c php gp li khi cc token khng th kt hp vi nhau theo ng cu trc ngn ng Giai on phn tch ng ngha gp li khi cc ton hng c kiu khng ng yu cu ca php ton Sau khi pht hin ra li, ty thuc vo trnh bin dch m c cc cch x l li khc nhau: Qu trnh bin dch c th dng li hoc tip tc

V d: Bin dch 1 cu lnh gn


position := initial + rate * 60

Phn tch t vng id1 := id2 + id3 * 60 Phn tch c php := id1 id2 id3 +

*
60

Phn tch ng ngha := id1 id2 id3 + * Inttoreal | 60

Sinh m trung gian temp1 := inttoreal (60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3

Ti u m

temp1 := id3 * 60.0 id1 := id2 + temp1

Sinh m

MOVF MULF MOVF ADDF MOVF

id3, R2 #60.0, R2 id2, R1 R2, R1 R1, id1

You might also like