Bài giảng Chương trình dịch: Bài giảng 1 - Nguyễn Phương Thái
lượt xem 10
download
Bài giảng 1 giúp người học nắm bắt được một số nội dung cơ bản về môn học Chương trình dịch như: Chương trình dịch là gì? Các loại chương trình dịch; ngôn ngữ máy, hợp ngữ, và ngôn ngữ bậc cao; kiến trúc của một chương trình dịch; phân tích từ vựng; phân tích cú pháp;... Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Chương trình dịch: Bài giảng 1 - Nguyễn Phương Thái
- Nguyễn Phương Thái Bộ môn Khoa học Máy tính http://www.coltech.vnu.vn/~thainp/
- Thông tin môn học Giảng viên Nguyễn Phương Thái Trang nhà: http://www.coltech.vnu.vn/~thainp/ Trợ giảng: Lê Minh Khôi (Bộ môn Khoa học Máy tính) Nguyễn Duy Khương (Phòng thí nghiệm Tương tác Người Máy) Môn học tiên quyết: lập trình (C/C++, Java), toán rời rạc, cấu trúc dữ liệu và giải thuật 15/11/15 2
- Thông tin môn học Sách và tài liệu tham khảo ̉ [1] Bài giang Ly ́ thuyết và Thực hành Chương Trình Dịch. Lê Anh Cường, Khoa Công nghệ, ĐHQG Hà Nội, 2004 [2] Giáo trình lý thuyết, thực hành môn học Chương trình dịch. Phạm Hồng Nguyên, Khoa Công nghệ, ĐHQG Hà Nội, 1998 [3] Ngôn ngữ hình thức. Nguyễn Văn Ba, ĐHBK Hà Nội, 1994 [4] Thực hành kỹ thuật biên dịch. Nguyễn Văn Ba, ĐHBK Hà Nội, 1993 [5] Compiler: principles techniques and tools. A.V. Aho, Ravi Sethi, D. Ulman, 1986 15/11/15 3
- Thông tin môn học Khóa học tương tự: http://www.cse.unsw.edu.au/~cs3131/ Trang web môn học (cho cả hai lớp K51CC và K51CD): http://www.coltech.vnu.vn/courses/ 15/11/15 4
- Chương trình dịch là gì? Mã nguồn Mã đích Chương trình dịch Lỗi Nhận dạng chương trình hợp lệ (hay không) Sinh đúng (và hiệu quả) mã 15/11/15 5
- Các loại chương trình dịch Trình biên dịch → Có nhiệm vụ dịch một chương trình từ ngôn ngữ này sang ngôn ngữ khác (chương trình thực thi được) → Chương trình nên được cải tiến bằng cách này hay cách khác Trình thông dịch → Đọc một chương trình và sinh ra kết quả thực thi chương trình đó 15/11/15 6
- Ngôn ngữ máy, hợp ngữ, và ngôn ngữ bậc cao 1. Ngôn ngữ máy Đây là ngôn ngữ duy nhất máy tính có thể hiểu trực tiếp “Ngôn ngữ tự nhiên” của máy tính Được định nghĩa bằng cách thiết kế phần cứng Phụ thuộc máy Nói chung bao gồm các xâu của các số nhị phân Ra lệnh cho máy tính thực hiện các phép toán cơ sở Mỗi lần một lệnh Khó hiểu với con người Ví dụ: +1300042774 +1400593419 +1200274027 7
- Ngôn ngữ máy, hợp ngữ, và ngôn ngữ bậc cao 2. Hợp ngữ Sử dụng các từ viết tắt tiếng Anh để biểu diễn lệnh Dễ hiểu hơn với con người Nhưng lại không phải là “ngôn ngữ tự nhiên” của máy tính Cần các trình biên dịch: hợp ngữ ngôn ngữ máy Ví dụ: LOAD BASEPAY ADD OVERPAY STORE GROSSPAY 8
- Ngôn ngữ máy, hợp ngữ, và ngôn ngữ bậc cao 3. Các ngôn ngữ bậc cao Tương tự tiếng Anh ngày nay, sử dụng các ký hiệu toán học thông dụng Một câu lệnh đơn có thể thực hiện một khối lượng công việc đáng kể so với chương trình tương ứng viết bằng hợp ngữ Ví dụ: grossPay = basePay + overTimePay 9
- Các nhiệm vụ của sinh viên Học các kỹ thuật, thuật toán, và công cụ của chương trình dịch Học cách sử dụng chương trình dịch (và chương trình gỡ rối) hiệu quả hơn Hiểu hơn về hành vi của chương trình Học cách xây dựng một hệ thống lớn và đáng tin cậy 15/11/15 10
- Tri thức sinh viên cần đạt được Ôtômát hữu hạn trạng thái và quan hệ với biểu thức chính qui Văn phạm phi ngữ cảnh và quan hệ với phân tích cú pháp phi ngữ cảnh Các chiến lược đặc tả ngôn ngữ hình thức Phân tích từ dưới lên và từ trên xuống Văn phạm thuộc tính Kiểm tra kiểu Máy ảo Java 15/11/15 11
- Kỹ năng sinh viên cần đạt được Có thể tự xây dựng các hệ phân tích từ tố, phân tích cú pháp, phân tích ngữ nghĩa và sinh mã Có thể sử dụng các công cụ xây dựng chương trình dịch: từ vựng và cú pháp Biết cách mô tả cú pháp và ngữ nghĩa của một ngôn ngữ Hiểu về sinh mã Hiểu về máy ảo, đặc biệt là JVM 15/11/15 12
- Kiến trúc của một chương trình dịch Mã nguồn Phân tích từ tố (từ vựng) Phân tích cú pháp Phân tích ngữ nghĩa Sinh mã trung gian Tối ưu mã Sinh mã đích Mã đích 15/11/15 13
- Phân tích từ vựng Nhiệm vụ Nhóm các ký tự thành các từ tố các đơn vị của cú pháp Ví dụ: position = initial + rate * 60 Sẽ được phân tích là: identifier position (tên) assignment operator = (toán tử gán) identifier initial (tên) plus sign (dấu trừ) multiplication sign (dấu nhân) interger constant 60 (hằng số nguyên) Xâu ký tự tạo thành từ tố gọi là từ vị 15/11/15 14
- Phân tích cú pháp Nhiệm vụ của hệ phân tích cú pháp (parser) Nhóm các từ tố thành các cụm từ cú pháp Biểu diễn các cụm từ cú pháp thành các cây cú pháp trừu tượng AST (abstract syntax tree) Sinh ra các thông báo lỗi đúng Cố gắng phát hiện và khôi phục lỗi Cú pháp của một ngôn ngữ lập trình thường được mô tả bằng một văn phạm phi ngữ cảnh (contextfree grammar – CFG) 15/11/15 15
- Ví dụ về văn phạm phi ngữ cảnh 15/11/15 16
- 15/11/15 17
- Phân tích ngữ nghĩa Nhiệm vụ của hệ phân tích ngữ nghĩa Phát hiện lỗi ngữ nghĩa của chương trình, chẳng hạn: Các biến có được khai báo trước khi sử dụng hay không? Các toán hạng có tương thích về kiểu hay không? Các thủ tục có được gọi với đúng số lượng và kiểu tham số hay không? Một công việc quan trọng: kiểm tra kiểu Bảng ký hiệu (symbol table) sẽ được sử dụng 15/11/15 18
- Sinh mã trung gian Hệ sinh mã trung gian sinh ra một biểu diễn trung gian (intermediate representation – IR) Các đặc điểm quan trọng của IR Dễ sinh Dễ dịch thành mã máy Sự khôn khéo trong thiết kế IR rất ảnh hưởng tới tốc độ và hiệu quả của trình biên dịch Các IR phổ biến: Cây cú pháp trừu tượng (ASTs) Đồ thị định hướng không có chu trình (DAGs) Chú giải hậu tố Mã ba địa chỉ (3AC or quadruples) 15/11/15 19
- Tối ưu mã Nhiệm vụ của hệ tối ưu mã Phân tích và cải tiến IR Mục tiêu là giảm thời gian chạy Bảo toàn giá trị Các tối ưu phổ biến Phát hiện và truyền đi một số giá trị hằng Chuyển một tính toán tới một nơi được thực hiện với tần suất ít hơn Phát hiện và loại bỏ tính toán không hiệu quả Loại bỏ các đoạn mã vô dụng hoặc không bao giờ được thực hiện 15/11/15 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Chương trình dịch: Bài giảng 3 - Nguyễn Phương Thái
33 p | 119 | 12
-
Bài giảng Chương trình dịch - Bài 12: Thuật toán phân tích CYK
19 p | 179 | 12
-
Bài giảng Chương trình dịch: Bài giảng 7 - Nguyễn Phương Thái
20 p | 85 | 7
-
Bài giảng Chương trình dịch: Bài 3 - Trương Xuân Nam
33 p | 67 | 6
-
Bài giảng Chương trình dịch: Bài giảng 6 - Nguyễn Phương Thái
35 p | 77 | 6
-
Bài giảng Chương trình dịch: Bài giảng 9 - Nguyễn Phương Thái
27 p | 66 | 5
-
Bài giảng Chương trình dịch: Bài giảng 8 - Nguyễn Phương Thái
18 p | 87 | 5
-
Bài giảng Chương trình dịch: Bài 10 - Trương Xuân Nam
19 p | 78 | 4
-
Bài giảng Chương trình dịch: Bài 5 - Trương Xuân Nam
14 p | 70 | 4
-
Bài giảng Chương trình dịch: Bài 4 - Trương Xuân Nam
55 p | 79 | 4
-
Bài giảng Chương trình dịch: Bài 2 - Trương Xuân Nam
33 p | 98 | 4
-
Bài giảng Chương trình dịch: Bài 1 - Trương Xuân Nam
42 p | 98 | 4
-
Bài giảng Chương trình dịch - Bài 1: Nhập môn
41 p | 53 | 4
-
Bài giảng Chương trình dịch: Bài 6 - Trương Xuân Nam
22 p | 69 | 3
-
Bài giảng Chương trình dịch: Bài 7 - Trương Xuân Nam
21 p | 75 | 3
-
Bài giảng Chương trình dịch: Bài 8 - Trương Xuân Nam
27 p | 68 | 3
-
Bài giảng Chương trình dịch: Bài 9 - Trương Xuân Nam
26 p | 79 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn