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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 [...]... CNTT - DHBK Gi i Thi u 13 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 u 14 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 trình d ch c: [1] chapter 1, pages 1- 24 [2] chapter 2, pages... CNTT - DHBK Gi i Thi u 11 T I U MÃ TRUNG GIAN • Phân tích và c i thi n mã trung gian nh m – gi – gi – gi – gi m th i gian th c thi m kích th c ch ng trình ích m b nh c n thi t khi ch y 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 u 12 SINH MÃ MÁY • T o ra... 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 trình d ch c: [1] chapter 1, pages 1- 24 [2] chapter 2, pages 25-82 Khoa CNTT - DHBK Gi i Thi u ng 15 . 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,. 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. 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

Ngày đăng: 23/10/2014, 17:33

Tài liệu cùng người dùng

Tài liệu liên quan