1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng chương trình tự động sinh mã trung gian và tối ưu mã

105 14 0

Đ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

Nội dung

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN - Luaän Văn Cao Học Đề tài XÂY DỰNG CHƯƠNG TRÌNH TỰ ĐỘNG SINH MÃ TRUNG GIAN VÀ TỐI ƯU MÃ Giáo viên hướng dẫn : PGS.TS Phan Thị Tươi Học viên thực : Tạ Duy Công Chiến Khóa : 11 TP HỒ CHÍ MINH, tháng 07 năm 2003 Trang CÔNG TRÌNH ĐƯC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học : PGS.TS PHAN THỊ TƯƠI Cán chấm nhận xét : Cán chấm nhận xét : Luận án cao học bảo vệ HỘI ĐỒNG CHẤM BẢO VỆ LUẬN ÁN CAO HỌC TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH ngày … tháng … năm 2003 Trang ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA - CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập -Tự Do - Hạnh Phúc - NHIỆM VỤ LUẬN ÁN CAO HỌC Họ tên học viên: TẠ DUY CÔNG CHIẾN Ngày tháng năm sinh: 06-11-1965 Chuyên ngành: CÔNG NGHỆ THÔNG TIN Phái: Nơi sinh: Nam LONG AN I- TÊN ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH TỰ ĐỘNG SINH MÃ TRUNG GIAN VÀ TỐI ƯU MÃ II- NHIỆM VỤ VÀ NỘI DUNG: III- NGÀY GIAO NHIỆM VỤ (Ngày bảo vệ đề cương): IV- NGÀY HOÀN THÀNH NHIỆM VỤ (Ngày bảo vệ luận án tốt nghiệp): V- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: PGS.TS PHAN THỊ TƯƠI VI- HỌ VÀ TÊN CÁN BỘ CHẤM NHẬN XÉT 1: VII- HỌ VÀ TÊN CÁN BỘ CHẤM NHẬN XÉT 2: CÁN BỘ HƯỚNG DẪN XÉT CÁN BỘ NHẬN XÉT CÁN BỘ NHẬN (Ký tên ghi rõ họ, tên, học vị, học hàm) Nội dung đề cương Luận án Cao học thông qua Hội Đồng Chuyên Ngành Ngày …… tháng …… năm 2003 Trang PHÒNG QLKH-SĐH NGÀNH CHỦ NHIỆM Trang LỜI CẢM ƠN Tôi chân thành cảm ơn Cô – PGS TS Phan Thị Tươi, Giáo viên hướng dẫn, tận tình bảo, nhiệt tình hướng dẫn hoàn thành Luận văn cao học Chân thành cảm ơn Quý Thầy Cô - giảng viên trường Đại học Bách Khoa Tp Hồ Chí Minh, trường Đại học Khoa học tự nhiên Tp Hồ Chí Minh tận tình giảng dạy, giúp đỡ trình học tập Chân thành cảm ơn TS , TS , TS giúp nhiều góp ý, dẫn tài liệu quý giá trình thực Luận văn Tp Hồ Chí Minh, ngày …… tháng …… năm 2003 Tạ Duy Công Chiến Trang Xây Dựng Chương Trình Tự Động Sinh Mã Trung Gian Tối Ưu Mã Tạ Duy Công Chiến Đại Học Bách Khoa TP Hồ Chí Minh Tháng năm 2003 Từ khóa: Trình biên dịch, phân tích từ vựng, từ, sơ đồ dịch, phân tích hướng đến cú pháp, phân tích cú pháp, phân tích cú pháp từ xuống, phân tích cú pháp từ lên, định nghóa hướng đến cú pháp, định nghóa thuộc tính, thuộc tính tổng hợp, thuộc tính kế thừa, ngữ nghóa, tối ưu hóa, khối bản, dòng điều khiển, dòng liệu, chi phối, đồ thị dòng, biến sống, đồ thị có hướng không vòng, đồ thị giao thoa, ghi ký hiệu, lập thời biểu, ống lệnh, đồ thị độc lập, dừng Tóm tắt: Sinh mã tối ưu mã giai đoạn quan trọng trình biên dịch Trong mô hình phân tích tổng hợp trình biên dịch, biên dịch phía trước dịch chương trình nguồn sang dạng biểu diễn trung gian để sau sinh mã đích Mặc dù chương trình nguồn biên dịch trực tiếp sang ngôn ngữ máy mà không cần sinh mã trung gian, số ưu điểm việc sinh mã trung gian là: o Tiết kiệm thời gian tạo trình biên dịch cho máy khác o Có thể áp dụng tối ưu mã độc lập với máy dích Việc sinh mã trung gian thường tạo số lệnh dư thừa làm cho trình biên dịch không hiệu Thông qua giai đoạn tối ưu, mã sinh hiệu hơn, kích thước mã thu giảm, chương trình thực thi nhanh Trang Trong luận văn này, xây dựng chương trình tự động sinh mã trung gian, cải tiến thiết kế giải thuật tối ưu nhằm cải thiện mã trung gian tốt hơn, đánh giá hiệu suất trước sau tối ưu mã Các kết cho thấy tính hiệu phương pháp giải thuật mà xây dựng Trang Building A Program for Automatic Code Generation and Code Optimization Tạ Duy Công Chiến, HCMC University of Technology July 2003 Keywords: Compiler, lexical analyzer, token, transition diagram, syntaxdirected parser, optimization, parser, top-down parser, bottom-up parser, syntax-directed definition, attributed definition, synthezized attribute, inherited attrinbute, semantic, basic block, control flow, data flow, dominator, flow graph, live variable, directed acyclic graph, interference graph, symbolic register, scheduling, pipeline, dependentcy graph, stall Abstract: Code generation and optimization are the important steps in compiler implementation In the analysis-synthesis model of a compiler, the front end translates a source program into an intermediate representation form which the back end generates target code Although a source program can be translated directly into the target language, some benefits of using a machine independent intermediate form are: o A compiler for a different machine can be create by attaching a back end for the new machine to an exiting front end o A machine-independent code optimizer can be applied to the intermediate representation Trang The task of generating intermediate code usually creates redundant code that makes the compiler less efficient Code optimization will alter the program code to improve the generated code, so more efficient target code can be generated, and speedup program execution or reduce code size In this thesis, we build a program for automatic code generation, improved and designed optimization algorithms that improve the intermediate code, reduce code size without taking into consideration any properties of the target machine We also calculate the efficiency of algorithms before and after performing code optimization These results prove that they are be acceptable Trang Muïc Lục Chương 1: Đặt vấn đề ………………………………… 1.1 Giới thiệu ………………………………… ……… ………… 1.2 Tình hình ngiên cứu việc tự động sinh mã trung gian tối ưu mã trung gian ……………………………… 1.3 Mục tiêu đề tài ……………………………………………… 1.4 Phương pháp luận ……………………………………………… 1.5 Các đóng góp luận văn ……………………… ……… Chương : Tổng quan trình biên dịch ……………… 2.1 Giới thiệu trình biên dịch ……………………………… 2 Trình biên dịch trực tiếp cú pháp …………………………… 2.3 Tối ưu mã ………… ………………………………… … 10 Chương 3: Trình biên dịch hướng đến cú pháp …… … 12 3.1 Phân tích từ vựng ………………………… ……………… 12 3.2 Biên dịch hướng đến cú pháp ……………………………… 16 3.3.1 Sinh Mã Trung Gian ……………………………… 23 Chương : Tối ưu mã trung gian … ……………… 39 4.1 Tối ưu hóa ghi giải thuật tô màu đồ thị ……41 4.2 Tối ưu hóa lập thời biểu cho lệnh ……………… 62 Chương : Giải thuật chương trình ………………… 77 5.1 Định nghóa qui ……………………………… …… 77 5.2 Văn phạm ngôn ngữ Pascal ………… …………… …… 77 5.3 Các giải thuật xây dựng trình biên dịch hướng đến cú pháp 78 5.4 Sinh mã trung gian … …………………………………….82 Chương : Kết Luận …….……………………………… 91 6.1 Kết luận ……………………… ………………………91 6.2 Kết đạt ……………………… ……………………….… 91 6.3 Hướng phát triển đề tài ……………………………………… 92 Trang 10 Để tiến hành phân tích cú pháp hiệu quả, ta dùng lược đồ dịch cho loại phát biểu khác Sơ đồ dịch phân tích cú pháp khác với phân tích từ vựng chỗ phân tích cú pháp ta có sơ đồ dịch cho ký hiệu không kết thúc, nhãn cạnh token ký hiệu không kết thúc, chuyển vị token muốn nói ta phải thực chuyển vị token ký hiệu token Một chuyển dịch ký hiệu không kết thúc A lời gọi thủ tục cho A 5.4 Sinh mã trung gian ba địa 5.4.1 Các phát biểu gán Ví dụ : a := 7; d := a+ b * c - 2; Nhập : Chng trình có biểu thức Xuất: Mã ba địa cho lệnh Giải thuật - Dựa vào trình biên dịch hướng đến cú pháp kết hợp với định nghóa hướng đến cú pháp cho câu lệnh gán để sinh mã - Dùng tên tạm ti thay cho biến Chương trình nguồn program t2tg; var a, b: integer; Begin b := 3; a := + - + 4; a := a + - b; End Kết 5.4.2 Các câu lệnh dòng điều khiển 5.4.2.1 Phá t biể u if – else Nhập : Chng trình có lệnh if – else Trang 91 Xuất: Mã ba địa cho phát biểu if – else Giải thuật - Dựa vào trình biên dịch hướng đến cú pháp kết hợp với định nghóa hướng đến cú pháp cho phát biểu điều khiển có if / if-else để sinh mã - Xác định điều kiện nhảy sau if trường hợp sai - Dùng lệnh goto để nhảy Chương trình nguoàn Program dkif; var i: integer; Begin i := 5; if ( i >3) then i := i+1 else i := i + 2; End Kết i:=5 if (i>3) goto i:=i+1 goto t2 := i+2 i := t2 5.4.2.2 Phá t biể u case Nhập : Xuất: Chương trình có lệnh case – else Mã ba địa cho phát biểu case Giải thuật - Dựa vào trình biên dịch hướng đến cú pháp kết hợp với định nghóa hướng đến cú pháp cho phát biểu case để sinh mã - Xác định điều kiện nhảy sau if trường hợp sai - Dùng lệnh goto để nhảy Chương trình nguoàn Program dkCase; var lap , j, k : integer; Kết lap:=7 if lap = goto Trang 92 Begin lap := 7; CASE lap of 5: j := 9; 6: k :=10; 7: j := 4; end; j:=9 if lap = goto k:=10 if lap = goto j:=4 End 5.4.2.3 Phá t biể u Repeat – until Nhập : Xuất: Chng trình có lệnh Repeat – until Mã ba địa cho phát biểu Giải thuật - Dựa vào trình biên dịch hướng đến cú pháp kết hợp với định nghóa hướng đến cú pháp cho phát biểu repeat-until để sinh mã - Xác định điều kiện nhảy sau if trường hợp sai - Dùng lệnh goto để nhảy Chương trình nguồn Program dkif; var i: integer; Begin i := 1; Repeat Kết i:=1 i:=i+1 if (i goto 5.4.2.5 Phá t biể u while - Nhập : Xuất: Chng trình có lệnh điều khiển while - Mã ba địa cho phát biểu Giải thuật Trang 94 - Dựa vào trình biên dịch hướng đến cú pháp kết hợp với định nghóa hướng đến cú pháp cho phát biểu while-do để sinh mã - Xác định điều kiện nhảy sau if trường hợp sai - Dùng lệnh goto để nhảy Chương trình nguồn Program dkwhile; var k: integer; Begin k := 1; while ( k < 5) begin k := k+1 ; k := k+ 5; end; k := 7; End Kết k:=1 if (k

Ngày đăng: 18/02/2021, 08:04

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w