Professional Documents
Culture Documents
Chuong 1-Gioi Thieu Ve Chuong Trinh Dich
Chuong 1-Gioi Thieu Ve Chuong Trinh Dich
Mc tiu: Gii thiu cc khi nim c bn, cc giai on chnh khi bin dch chng trnh
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)
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)
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
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
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
u l cc lnh.
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
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
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;
X l li
Mi giai on bin dch c th gp nhiu li, v d:
Phn tch t vng id1 := id2 + id3 * 60 Phn tch c php := id1 id2 id3 +
*
60
Sinh m trung gian temp1 := inttoreal (60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3
Ti u m
Sinh m