GII THIU V CHNG
TRÌNH DCH
TS. NguynHa Phùng
Khoa Công ngh Thông tin
i hc Bách Khoa – i hc Quc Gia TPHCM
2006
CHNG TRÌNH DCH
Chng trình
ngôn ng
ngun
Chng trình
ngôn ng
đích
Li
•nhn dng chng trình ngun
• sinh mã đích
Khoa CNTT - DHBK Gii Thiu2
CÁC LOI CHNG TRÌNH DCH
• Trình biên dch (compiler)
• Trình thông dch (interpreter)
Khoa CNTT - DHBK Gii Thiu3
CÁC GIAI ON DCH
Mã ngun
Phân tích t vng
Khoa CNTT - DHBK Gii Thiu4
Phân tích cú pháp
X lý ng ngha
Sinh mã trung gian
Ti u mã trung gian
Sinh mã máy
Chui tokens
Cây phân tích
cú pháp
Phn đu
(front end)
Phân tích
(analysis)
Bng
danh
hiu
Cây phân tích
cú pháp
Mã trung gian
Phn cui
(back end)
Tng hp
(synthesis)
Mã trung gian
đã ti u
Mã máy
VÍ D
acc = acc + inc * 60
Phân tích t vng
id
1
= id
1
+ id
2
* intliteral
Phân tích cú pháp
=
id
1
+
id
1
*
id
2
intliteral
60
acc real …
inc real …
…
1
2
X lý ng ngha
Khoa CNTT - DHBK Gii Thiu5
=
id
1
+
id
1
*
id
2
intliteral
60
i2f
Khoa CNTT - DHBK Gii Thiu6
Sinh mã trung gian
tmp
1
= i2f(60)
tmp
2
= id
2
* tmp
1
tmp
3
= id
1
+ tmp
2
id
1
= tmp
3
Ti u mã trung gian
tmp
2
= id
2
* 60.0
id
1
= id
1
+ tmp
2
Sinh mã máy
MOVF id
2
, R2
MULF #60.0, R2
MOVF id
1
, R1
ADDF R2, R1
MOVF R1, id
1
MÃ TRUNG GIAN
Phn đu cho C# Phn cui cho JVM
Khoa CNTT - DHBK Gii Thiu7
Mã trung gian
Phn đu cho Java Phn cui cho MIPS
•Có th thc hin 1 s thao tác ti u không ph thuc máy
đích trên mã trung gian.
•D dàng sinh mã cho nhng ngôn ng ngun cng nh máy
đích khác nhau.
PHÂN TÍCH T VNG
• nhóm các ký t trong chng trình ngun thành các
tokens (đn v c bn ca vn phm)
acc = acc + inc * 60 (gm 20 ký t bao gm c các khong trng)
⇒ Mt danh hiu
acc
Mt du gán =
Mt danh hiu acc
Mt du cng +
Mt danh hiu inc
Mt du nhân *
Mt hng nguyên 60
•loi b các khong trng (xung hàng, tab, blank,…)
•Báo li (chui quá dài,…)
•Xác đnh v trí hàng, ct ca mi token.
Khoa CNTT - DHBK Gii Thiu8
PHÂN TÍCH CÚ PHÁP
•Xác đnh chui token có phù hp vi vn
phm (context-free) ca ngôn ng ngun.
•To ra cây phân tích cú pháp.
• Báo li vn phm nu chui token không
phù hp.
•B qua token gây ra li và tip tc phân
tích phn còn li.
Khoa CNTT - DHBK Gii Thiu9
X LÝ NG NGHA
•Kim tra li ng ngha
–Bin phi đc khai báo trc khi dùng
–Bin phi đc khi đng tr trc khi đc
–Li kiu
• các toán hng tham gia mt biu thc phi phù
hp kiu
•s thc không th dùng làm ch s cho 1 tham
kho dãy a[1.4]
•s lng và kiu ca thông s thc phi phù hp
vi s lng và kiu ca thông s hình thc
Khoa CNTT - DHBK Gii Thiu10
SINH MÃ TRUNG GIAN
•To ra mã trung gian vi các đc tính
– đn gin đ d dàng đc to ra
–d dàng sinh ra mã máy
•Các dng mã trung gian ph bin:
– Cây cú pháp tru tng (Abstract Syntax Tree - AST)
– th có hng không lp vòng (Directed Acyclic
Graph - DAG)
–Mã hu t (postfix notation)
– Mã 3 đa ch (three-address code)
Khoa CNTT - DHBK Gii Thiu11
TI U MÃ TRUNG GIAN
• Phân tích và ci thin mã trung gian nhm
–gim thi gian thc thi
–gim kích thc chng trình đích
–gim b nh cn thit khi chy
–gim nng lng cn s dng
•Mt s k thut ti u đc trng
– lan truyn các giá tr hng
– tìm các tính toán d tha và loi b chúng
–loi b mã vô dng hoc không đc thc thi
Khoa CNTT - DHBK Gii Thiu12
SINH MÃ MÁY
•To ra mã máy dng tái đnh đa ch
(relocatable machine code) hoc mã assembly
•La chn lnh máy cho mi lnh trung
gian
•La chn thanh ghi hoc mt v trí nh đ
cp phát cho các bin
Khoa CNTT - DHBK Gii Thiu13
CÁC CHNG TRÌNH LIÊN
QUAN
•Tin x lý
–X lý macro
– File inclusion
– “Rational” preprocessor
– Language extensions
• Assembler
• Loader and Link-Editors
Khoa CNTT - DHBK Gii Thiu14
TNG KT
•Nhim v ca chng trình dch
• Phân loi chng trình dch
• Các giai đon ca quá trình dch
•Các chng trình liên quan đn chng
trình dch
c: [1] chapter 1, pages 1-24
[2] chapter 2, pages 25-82
Khoa CNTT - DHBK Gii Thiu15