Tải bản đầy đủ (.ppt) (30 trang)

Bai giang 1 gioi thieu mon hoc 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (339.33 KB, 30 trang )

Nguyễn Phương Thái
Bộ mơn Khoa học Máy tính
/>

Thông tin môn học
 Giảng viên

Nguyễn Phương Thái
Trang nhà: />
 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 dữ
liệu và giải thuật

22/12/16

2


Thông tin môn học


Sách và 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

3


Thơng tin mơn học



22/12/16

Khóa học tương tự:
/>Trang web mơn học (cho cả hai lớp K51CC
và K51CD):
/>
4


Chương trình dịch là 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 đúng (và hiệu quả) mã
22/12/16

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 đó

22/12/16

6


Ngôn ngữ máy, hợp ngữ, và ngôn

ngữ
bậc
cao
1. Ngôn ngữ máy








7

Đâ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 tốn cơ sở

Mỗi lần một lệnh
Khó hiểu với con người
Ví dụ:
+1300042774
+1400593419
+1200274027



Ngôn ngữ máy, hợp ngữ, và ngôn
ngữ
bậc
cao
2. Hợp ngữ






8

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


Ngôn ngữ máy, hợp ngữ, và ngôn
ngữ
bậc
cao

3. Các ngôn ngữ bậc cao






9

Tương tự tiếng Anh ngày nay, sử dụng các ký hiệu tố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


Các nhiệm vụ của sinh viên
 Học các kỹ thuật, thuật tố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
22/12/16

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
22/12/16

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
22/12/16

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
22/12/16

Mã đích
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 = (tố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ị

22/12/16

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 (context-free grammar – CFG)

22/12/16

15


Ví dụ về 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ụ 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 tố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



22/12/16

Bảng ký hiệu (symbol table) sẽ được sử dụng

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)

22/12/16

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 tố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 tố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
22/12/16

20


Sinh mã
 Nhiệm vụ của hệ sinh mã
 Sinh mã đích: mã máy có thể định vị lại được hoặc mã hợp

ngữ
 Chọn các chỉ thị cho mỗi thao tác IR (IR operation)
 Quyết định xem giữ lại cái gì trong các thanh ghi tại mỗi thời
điểm

22/12/16


21


22/12/16

22


Phát hiện, thông báo, và phục hồi lỗi
 Phát hiện
 Lỗi từ vựng: “123 => xâu ký tự không được kết thúc đúng
 Lỗi cú pháp: ví dụ qn đóng dấu ngoặc
 Lỗi ngữ nghĩa: sử dụng các toán hạng khơng tương thích về kiểu đối

với một phép tốn nào đó

 Thơng báo chính xác nhất có thể vị trí

xuất hiện lỗi
 Sau khi phát hiện lỗi, chương trình cần
có khả năng hồi phục và tiếp tục, cho
phép phát hiện các lỗi khác nữa (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.
1.
2.

Biểu thức chính qui, NFA và DFA
Chương trình sinh bộ 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

2.
3.
1.
2.
3.
4.

Cây cú pháp trừu tượng
Phân tích đệ qui từ trên xuống và LL(k)
Phân tích từ dưới lên và LR(k)
Các chương trình sinh bộ phân tích cú pháp (yacc, JavaCC, JavaCUP)

Phân tích ngữ nghĩa

4.
1.
2.
3.


Bảng ký hiệu
Định danh (i.e., binding)
Kiểm tra kiểu

Sinh mã

5.
1.
2.
3.
22/12/16

Dịch dựa vào cú pháp
Hợp ngữ Jasmin
Máy ảo Java (JVMs)
24


Các bài tập

22/12/16

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×