Tải bản đầy đủ (.pdf) (15 trang)

slike bài giảng môn chương trình dịch chương 1 tổng quan

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (116.7 KB, 15 trang )

GII THIU V CHNG
TRÌNH DCH
TS. NguynHa Phùng
Khoa Công ngh Thông tin
i hc Bách Khoa – i hc Quc Gia TPHCM
2006
CHNG TRÌNH DCH
Chng trình
 ngôn ng
ngun
Chng trình
 ngôn ng
đích
Li
•nhn dng chng trình ngun
• sinh mã đích
Khoa CNTT - DHBK Gii Thiu2
CÁC LOI CHNG TRÌNH DCH
• Trình biên dch (compiler)
• Trình thông dch (interpreter)
Khoa CNTT - DHBK Gii Thiu3
CÁC GIAI ON DCH
Mã ngun
Phân tích t vng
Khoa CNTT - DHBK Gii Thiu4
Phân tích cú pháp
X lý ng ngha
Sinh mã trung gian
Ti u mã trung gian
Sinh mã máy
Chui tokens


Cây phân tích
cú pháp
Phn đu
(front end)
Phân tích
(analysis)
Bng
danh
hiu
Cây phân tích
cú pháp
Mã trung gian
Phn cui
(back end)
Tng hp
(synthesis)
Mã trung gian
đã ti u
Mã máy
VÍ D
acc = acc + inc * 60
Phân tích t vng
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 ngha
Khoa CNTT - DHBK Gii Thiu5
=
id
1
+
id
1
*
id
2
intliteral
60
i2f

Khoa CNTT - DHBK Gii Thiu6
Sinh mã trung gian
tmp
1
= i2f(60)
tmp
2
= id
2
* tmp
1
tmp
3
= id
1
+ tmp
2
id
1
= tmp
3
Ti 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
Phn đu cho C# Phn cui cho JVM
Khoa CNTT - DHBK Gii Thiu7
Mã trung gian
Phn đu cho Java Phn cui cho MIPS
•Có th thc hin 1 s thao tác ti u không ph thuc máy
đích trên mã trung gian.
•D dàng sinh mã cho nhng ngôn ng ngun cng nh máy
đích khác nhau.
PHÂN TÍCH T VNG
• nhóm các ký t trong chng trình ngun thành các
tokens (đn v c bn ca vn phm)
acc = acc + inc * 60 (gm 20 ký t bao gm c các khong trng)
⇒ Mt danh hiu
acc
Mt du gán =

Mt danh hiu acc
Mt du cng +
Mt danh hiu inc
Mt du nhân *
Mt hng nguyên 60
•loi b các khong trng (xung hàng, tab, blank,…)
•Báo li (chui quá dài,…)
•Xác đnh v trí hàng, ct ca mi token.
Khoa CNTT - DHBK Gii Thiu8
PHÂN TÍCH CÚ PHÁP
•Xác đnh chui token có phù hp vi vn
phm (context-free) ca ngôn ng ngun.
•To ra cây phân tích cú pháp.
• Báo li vn phm nu chui token không
phù hp.
•B qua token gây ra li và tip tc phân
tích phn còn li.
Khoa CNTT - DHBK Gii Thiu9
X LÝ NG NGHA
•Kim tra li ng ngha
–Bin phi đc khai báo trc khi dùng
–Bin phi đc khi đng tr trc khi đc
–Li kiu
• các toán hng tham gia mt biu thc phi phù
hp kiu
•s thc không th dùng làm ch s cho 1 tham
kho dãy a[1.4]
•s lng và kiu ca thông s thc phi phù hp
vi s lng và kiu ca thông s hình thc
Khoa CNTT - DHBK Gii Thiu10

SINH MÃ TRUNG GIAN
•To ra mã trung gian vi các đc tính
– đn gin đ d dàng đc to ra
–d dàng sinh ra mã máy
•Các dng mã trung gian ph bin:
– Cây cú pháp tru tng (Abstract Syntax Tree - AST)
–  th có hng không lp vòng (Directed Acyclic
Graph - DAG)
–Mã hu t (postfix notation)
– Mã 3 đa ch (three-address code)
Khoa CNTT - DHBK Gii Thiu11
TI U MÃ TRUNG GIAN
• Phân tích và ci thin mã trung gian nhm
–gim thi gian thc thi
–gim kích thc chng trình đích
–gim b nh cn thit khi chy
–gim nng lng cn s dng
•Mt s k thut ti u đc trng
– lan truyn các giá tr hng
– tìm các tính toán d tha và loi b chúng
–loi b mã vô dng hoc không đc thc thi
Khoa CNTT - DHBK Gii Thiu12
SINH MÃ MÁY
•To ra mã máy  dng tái đnh đa ch
(relocatable machine code) hoc mã assembly
•La chn lnh máy cho mi lnh trung
gian
•La chn thanh ghi hoc mt v trí nh đ
cp phát cho các bin
Khoa CNTT - DHBK Gii Thiu13

CÁC CHNG TRÌNH LIÊN
QUAN
•Tin x lý
–X lý macro
– File inclusion
– “Rational” preprocessor
– Language extensions
• Assembler
• Loader and Link-Editors
Khoa CNTT - DHBK Gii Thiu14
TNG KT
•Nhim v ca chng trình dch
• Phân loi chng trình dch
• Các giai đon ca quá trình dch
•Các chng trình liên quan đn chng
trình dch
c: [1] chapter 1, pages 1-24
[2] chapter 2, pages 25-82
Khoa CNTT - DHBK Gii Thiu15

×