Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
627 KB
Nội dung
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ườiMáy) Môn học tiên quyết: lập trình (C/C+ +, Java), tốn rời rạc, cấu trúc liệu giải thuật 22/12/16 Thông tin môn học Sách tài liệu tham khảo [1] Bài giảng Lý 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 22/12/16 Thơng tin mơn học 22/12/16 Khóa học tương tự: http://www.cse.unsw.edu.au/~cs3131/ Trang web môn học (cho hai lớp K51CC K51CD): http://www.coltech.vnu.vn/courses/ Chương trình dịch gì? Mã nguồn Chương trình dịch Mã đích Lỗi Nhận dạng chương trình hợp lệ (hay khơng) Sinh (và hiệu quả) mã 22/12/16 Các loại chương trình dịch Trình biên dịch → Có nhiệm vụ dịch 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ải tiến cách này hay cách khác Trình thơng dịch → Đọc chương trình và sinh kết quả thực thi chương trình 22/12/16 Ngôn ngữ máy, hợp ngữ, ngôn ngữ bậc cao Ngôn ngữ máy Đây là ngôn ngữ máy tính hiểu trực tiếp “Ngơn ngữ tự nhiên” máy tính Được định nghĩa cách thiết kế phần cứng Phụ thuộc máy Nói chung bao gồm xâu số nhị phân Ra lệnh cho máy tính thực phép tốn sở Mỗi lần lệnh Khó hiểu với người Ví dụ: +1300042774 +1400593419 +1200274027 Ngôn ngữ máy, hợp ngữ, ngôn ngữ bậc cao Hợp ngữ Sử dụng từ viết tắt tiếng Anh để biểu diễn lệnh Dễ hiểu với người Nhưng lại không phải là “ngôn ngữ tự nhiên” máy tính Cần trình biên dịch: hợp ngữ ngơn ngữ máy Ví dụ: LOAD BASEPAY ADD OVERPAY STORE GROSSPAY Ngôn ngữ máy, hợp ngữ, ngôn ngữ bậc cao Các ngôn ngữ bậc cao Tương tự tiếng Anh ngày nay, sử dụng ký hiệu tốn học thơng dụng Một câu lệnh đơn thực khối lượng cơng việc đáng kể so với chương trình tương ứng viết hợp ngữ Ví dụ: grossPay = basePay + overTimePay Các nhiệm vụ sinh viên Học kỹ thuật, thuật tốn, cơng cụ 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 Hiểu hành vi chương trình Học cách xây dựng hệ thống lớn đáng tin cậy 22/12/16 10 Ví dụ văn phạm phi ngữ cảnh 22/12/16 16 22/12/16 17 Phân tích ngữ nghĩa Nhiệm vụ hệ phân tích ngữ nghĩa Phát lỗi ngữ nghĩa chương trình, chẳng hạn: Các biến có khai báo trước sử dụng hay khơng? Các tốn hạng có tương thích kiểu hay khơng? Các thủ tục có gọi với 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 22/12/16 Bảng ký hiệu (symbol table) sử dụng 18 Sinh mã trung gian Hệ sinh mã trung gian sinh biểu diễn trung gian (intermediate representation – IR) Các đặc điểm quan trọng IR Dễ sinh Dễ dịch thành mã máy Sự khôn khéo thiết kế IR ảnh hưởng tới tốc độ hiệu 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 (3AC or quadruples) 22/12/16 19 Tối ưu mã Nhiệm vụ 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 và truyền số giá trị Chuyển tính tốn tới nơi thực với tần suất Phát và loại bỏ tính tốn khơng hiệu quả Loại bỏ đoạn mã vô dụng không thực 22/12/16 20 Sinh mã Nhiệm vụ hệ sinh mã Sinh mã đích: mã máy định vị lại mã hợp ngữ Chọn thị cho thao tác IR (IR operation) Quyết định xem giữ lại gì ghi thời điểm 22/12/16 21 22/12/16 22 Phát hiện, thông báo, phục hồi lỗi Phát Lỗi từ vựng: “123 => xâu ký tự không kết thúc Lỗi cú pháp: ví dụ qn đóng dấu ngoặc Lỗi ngữ nghĩa: sử dụng tốn hạng khơng tương thích kiểu phép tốn nào Thơng báo xác vị trí xuất lỗi Sau phát lỗi, chương trình cần có khả hồi phục tiếp tục, cho phép phát lỗi khác (thuộc phần chương trình cịn lại) 22/12/16 23 Đề cương mơn học Phân tích từ vựng 1 Biểu thức qui, NFA và DFA Chương trình sinh phân tích từ vựng (lex và JLex) Văn phạm phi ngữ cảnh Phân tích cú pháp 3 Cây cú pháp trừu tượng Phân tích đệ qui từ xuống và LL(k) Phân tích từ lên và LR(k) Các chương trình sinh phân tích cú pháp (yacc, JavaCC, JavaCUP) Phân tích ngữ nghĩa Bảng ký hiệu Định danh (i.e., binding) Kiểm tra kiểu Sinh mã 22/12/16 Dịch dựa vào cú pháp Hợp ngữ Jasmin Máy ảo Java (JVMs) 24 Các tập 22/12/16 25 VC (a variant of C) Chú thích: // /* */ Kiểu: Cơ sở: void, int, float và boolean Mảng: int[], float[], boolean[] Biến: toàn cục cục Literals: integers, reals, boolean, strings Biểu thức: điều kiện, quan hệ, số học lời gọi Câu lệnh: if, for, while, gán, break, continue, return Các hàm: với tham số truyền giá trị Sinh viên cần đọc kỹ tài liệu đặc tả VC để hiểu rõ ngôn ngữ 22/12/16 26 Kế hoạch Tổng thời gian: 15 tuần 10 tuần học lý thuyết tuần cho tập Bài tập 1: 2: 3: 4: 5: 22/12/16 tuần 12 15 27 Cách học Hoàn thành tập hạn! Hiểu lý thuyết giới thiệu giảng áp dụng chúng cài đặt mơđun chương trình Đọc thêm tài liệu Thảo luận Ở lớp Qua trang web môn học Gặp thầy 22/12/16 28 Đánh giá Qua tập Qua kiểm tra cuối kỳ 22/12/16 29 Tổng kết Mục tiêu giảng Tổng quan chương trình dịch Tổng quan nội dung sinh viên học làm Một ý nhỏ: Sinh viên cần nắm thuật ngữ (cả Anh Việt) 22/12/16 30 ... đặc tả VC để hiểu rõ ngôn ngữ 22 / 12 /16 26 Kế hoạch Tổng thời gian: 15 tuần 10 tuần học lý thuyết tuần cho tập Bài tập 1: 2: 3: 4: 5: 22 / 12 /16 tuần 12 15 27 Cách học Hoàn thành tập hạn!... trình thường mơ tả văn phạm phi ngữ cảnh (context-free grammar – CFG) 22 / 12 /16 15 Ví dụ văn phạm phi ngữ cảnh 22 / 12 /16 16 22 / 12 /16 17 Phân tích ngữ nghĩa Nhiệm vụ hệ phân tích ngữ nghĩa Phát lỗi... 22 / 12 /16 20 Sinh mã Nhiệm vụ hệ sinh mã Sinh mã đích: mã máy định vị lại mã hợp ngữ Chọn thị cho thao tác IR (IR operation) Quyết định xem giữ lại gì ghi thời điểm 22 / 12 /16 21 22 / 12 /16