Bài giảng môn học Trình biên dịch - Chương 10: Tối ưu mã
Số trang: 53
Loại file: pdf
Dung lượng: 281.63 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 6 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng chương 10 trình bày những nội dung cơ bản như: Mã trung gian, phân tích dòng dữ liệu, phân tích dòng dữ liệu (Data Flow Analyst) – DFA, loại bỏ dư thừa, tối ưu vòng lặp. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng môn học Trình biên dịch - Chương 10: Tối ưu mãCHÖÔNG 10TOÁI ÖU MAÕ10.1. Giôùi thieäu- Tieâu chuaån chuyeån maõ toát- Toå chöùc cuûa trình bieân dòch toái öufront endBoä toái öu maõPhaân tích doøngñieàu khieånPhaân tíchdoøng döõ lieäuBoä sinh maõChuyeån ñoåiHình 10.1. Toå chöùc cuûa boä toái öu maõMaõ trung gianThí duï 10.1. Chuyeån ñoåi sang maõ trung gian ba ñòa chæ cho ñoaïnchöông trình trong ngoân ngöõ Pascalfor i := n – 1 down to 1 dofor j:= 1 to i doif A [j] > A [j + 1] thenbegintemp := A [j];A [j] := A [j + 1];A [j + 1] := temp;end;Giaû söû moãi oâ nhôù laø 4 byte. Ñòa chæ neàn cuûa daõy A vaäy ñòa chæ phaàn töûthöù j cuûa daõy A laø: addr(A[j]) = addr(A) + (j – 1) * 4.(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)i=n-1ij i < 1 goto (31)j=1if j > i goto (29)t1 = j - 1t 2 = 4 * t1t3 = A [t2]t4 = j + 1t5 = t4 - 1t 6 = 4 * t5t7 = A [t6]ij t3 < t7 goto (27)t8 = j - 1t 9 = 4 * t8temp = A [t9](16)(17)(18)(19)(20)(21)(22)(23)(24)(25)(26)(27)(28)(29)(30)t10 = j + 1t11 = t10 - 1t12 = 4 * t11t13 = A [t12]t4 = j - 1t15 = 4 * t14A [t5] = t13t16 = j + 1t17 = t16 - 1t18 = 4 * t17A [t18] = tempj=j+1goto (4)i=i-1goto 2* Khoái cô baûnThí duï 10.2. Ñoaïn maõ trung gian sau ñöôïc xaùc ñònh 4 khoái cô baûn(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)read Ln := 0k := 0m := 1k := k + mc := k > Lif (c) goto (11)n := n + 1m := m + 2goto (5)write nBB1BB2BB3BB410.2. Phaân tích doøng döõ lieäuCaùc caáu truùc ñieàu khieån nhö if, while, for gaây ra söï reõ nhaùnh cuûachöông trình. Xaùc ñònh ñöôïc söï reõ nhaùnh seõ xaùc ñònh ñöôïc söï thay ñoåitrò cuûa bieán trong chöông trình, töø ñoù söû duïng caùc bieán naøy trong quaùtrình toái öu hoùa.10.2.1. Muïc ñíchXaùc ñònh caáu truùc ñieàu khieån cuûa chöông trình laø:- moâ taû caùc con ñöôøng thöïc hieän chöông trình- xaùc ñònh caùc voøng laëp10.2.2. Ñoà thò doøng ñieàu khieån (Control Flow Graphs)Ñònh nghóa:Ñoà thò doøng ñieàu khieån (CFG) cuûa moät chöông trình laø moät ñoà thò coùhöôùng, ñöôïc kyù hieäu G = (N, E) maø trong ñoù N laø caùc khoái cô baûn, Elaø taäp caïnh theå hieän cho doøng ñieàu khieån giöõa caùc khoái cô baûn.
Nội dung trích xuất từ tài liệu:
Bài giảng môn học Trình biên dịch - Chương 10: Tối ưu mãCHÖÔNG 10TOÁI ÖU MAÕ10.1. Giôùi thieäu- Tieâu chuaån chuyeån maõ toát- Toå chöùc cuûa trình bieân dòch toái öufront endBoä toái öu maõPhaân tích doøngñieàu khieånPhaân tíchdoøng döõ lieäuBoä sinh maõChuyeån ñoåiHình 10.1. Toå chöùc cuûa boä toái öu maõMaõ trung gianThí duï 10.1. Chuyeån ñoåi sang maõ trung gian ba ñòa chæ cho ñoaïnchöông trình trong ngoân ngöõ Pascalfor i := n – 1 down to 1 dofor j:= 1 to i doif A [j] > A [j + 1] thenbegintemp := A [j];A [j] := A [j + 1];A [j + 1] := temp;end;Giaû söû moãi oâ nhôù laø 4 byte. Ñòa chæ neàn cuûa daõy A vaäy ñòa chæ phaàn töûthöù j cuûa daõy A laø: addr(A[j]) = addr(A) + (j – 1) * 4.(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)i=n-1ij i < 1 goto (31)j=1if j > i goto (29)t1 = j - 1t 2 = 4 * t1t3 = A [t2]t4 = j + 1t5 = t4 - 1t 6 = 4 * t5t7 = A [t6]ij t3 < t7 goto (27)t8 = j - 1t 9 = 4 * t8temp = A [t9](16)(17)(18)(19)(20)(21)(22)(23)(24)(25)(26)(27)(28)(29)(30)t10 = j + 1t11 = t10 - 1t12 = 4 * t11t13 = A [t12]t4 = j - 1t15 = 4 * t14A [t5] = t13t16 = j + 1t17 = t16 - 1t18 = 4 * t17A [t18] = tempj=j+1goto (4)i=i-1goto 2* Khoái cô baûnThí duï 10.2. Ñoaïn maõ trung gian sau ñöôïc xaùc ñònh 4 khoái cô baûn(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)read Ln := 0k := 0m := 1k := k + mc := k > Lif (c) goto (11)n := n + 1m := m + 2goto (5)write nBB1BB2BB3BB410.2. Phaân tích doøng döõ lieäuCaùc caáu truùc ñieàu khieån nhö if, while, for gaây ra söï reõ nhaùnh cuûachöông trình. Xaùc ñònh ñöôïc söï reõ nhaùnh seõ xaùc ñònh ñöôïc söï thay ñoåitrò cuûa bieán trong chöông trình, töø ñoù söû duïng caùc bieán naøy trong quaùtrình toái öu hoùa.10.2.1. Muïc ñíchXaùc ñònh caáu truùc ñieàu khieån cuûa chöông trình laø:- moâ taû caùc con ñöôøng thöïc hieän chöông trình- xaùc ñònh caùc voøng laëp10.2.2. Ñoà thò doøng ñieàu khieån (Control Flow Graphs)Ñònh nghóa:Ñoà thò doøng ñieàu khieån (CFG) cuûa moät chöông trình laø moät ñoà thò coùhöôùng, ñöôïc kyù hieäu G = (N, E) maø trong ñoù N laø caùc khoái cô baûn, Elaø taäp caïnh theå hieän cho doøng ñieàu khieån giöõa caùc khoái cô baûn.
Tìm kiếm theo từ khóa liên quan:
Trình biên dịch Bài giảng Trình biên dịch Ngôn ngữ lập trình Chương trình dịch Đặc tả ngôn ngữ lập trình Tối ưu mãGợi ý tài liệu liên quan:
-
Chuyên đề: Nghiên cứu Ngôn ngữ hình thức, Văn phạm phi ngữ cảnh và Automata đẩy xuống
84 trang 361 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 269 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 259 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 257 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 230 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 220 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 211 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 201 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 176 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 169 0 0