Đang chuẩn bị liên kết để tải về tài liệu:
Bài giảng Chương trình dịch: Bài giảng 8 - Nguyễn Phương Thái

Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ

Bài giảng 8 trình bày về mã trung gian trong chương trình dịch. Thông qua bài giảng này người học có thể biết được các ưu điểm của mã trung gian, nắm bắt được những kiến thức cơ bản về mã ba địa chỉ, biết được cú pháp điều khiển sinh mã 3 địa chỉ và một số biểu thức,. . | Sinh mã trung gian Nguyễn Phương Thái 2009 Mục tiêu Sinh mã trung gian có những ưu điểm như sau: Dễ thiết kế từng phần Sinh được mã độc lập với từng máy tính cụ thể. Từ đó làm giảm độ phức tạp của sinh mã thực sự. Dễ tối ưu mã Mã ba địa chỉ Các câu lệnh gán có dạng x := y op z, trong đó op là một phép toán số học hai ngôi hoặc phép toán logic. Các phép gán có dạng x := op y, trong đó op là phép toán một ngôi. Các phép toán một ngôi chủ yếu là phép trừ, phép phủ định logic, phép chuyển đổi kiểu, phép dịch bít. Các câu lệnh sao chép dạng x := y, gán y vào x. Lệnh nhảy không điều kiện goto L. Câu lệnh ba địa chỉ có nhãn L là câu lệnh được thực hiện tiếp theo. Các lệnh nhảy có điều kiện như if x relop y goto L. Câu lệnh này thực hiện một phép toán quan hệ cho x và y, thực hiện câu lệnh có nhãn L nếu quan hệ này là đúng, nếu trái lại sẽ thực hiện câu lệnh tiếp theo. Câu lệnh param x và call p,n dùng để gọi thủ tục. Còn lệnh return y để trả về một giá trị lưu trong y. Ví dụ để gọi thủ tục p(x1,x2,.,xn) thì sẽ sinh các câu lệnh ba địa chỉ tương ứng như sau: param x1 param x2 . . . param xn call p, n Các phép gán chỉ số có dạng x := y[i] có ý nghĩa là gán cho x giá trị tại vị trí i sau y tương tự đối với x[i] := y Cú pháp điều khiển sinh mã 3 địa chỉ Đối với mỗi ký hiệu X, chúng ta ký hiệu: X.place là nơi để chứa mã ba địa chỉ sinh ra bởi X (dùng để chứa các kết quả trng gian). Vì thế sẽ có một hàm định nghĩa là newtemp dùng để sinh ra một biến trung gian (biến tạm) để gán cho X.place. X.code chứa đoạn mã ba địa chỉ của X thủ tục gen để sinh ra câu lệnh ba địa chỉ. Biểu thức số học “x := a + ( b * c )” Sản xuất Luật ngữ nghĩa S -> id := E E -> E1 + E2 E -> E1 * E2 E -> - E1 E -> ( E1 ) E -> id Biểu thức số học “x := a + ( b * c )” Sản xuất Luật ngữ nghĩa S -> id := E S.code := E.code || gen(id.place ‘:=’ E.place) E -> E1 + E2 E.place := newtemp; E.code := E1.code || E2.code || gen(E.place ‘:=’ E1.place ‘+’ E2.place) E -> E1 * E2 E.place := newtemp; E.code := E1.code || | Sinh mã trung gian Nguyễn Phương Thái 2009 Mục tiêu Sinh mã trung gian có những ưu điểm như sau: Dễ thiết kế từng phần Sinh được mã độc lập với từng máy tính cụ thể. Từ đó làm giảm độ phức tạp của sinh mã thực sự. Dễ tối ưu mã Mã ba địa chỉ Các câu lệnh gán có dạng x := y op z, trong đó op là một phép toán số học hai ngôi hoặc phép toán logic. Các phép gán có dạng x := op y, trong đó op là phép toán một ngôi. Các phép toán một ngôi chủ yếu là phép trừ, phép phủ định logic, phép chuyển đổi kiểu, phép dịch bít. Các câu lệnh sao chép dạng x := y, gán y vào x. Lệnh nhảy không điều kiện goto L. Câu lệnh ba địa chỉ có nhãn L là câu lệnh được thực hiện tiếp theo. Các lệnh nhảy có điều kiện như if x relop y goto L. Câu lệnh này thực hiện một phép toán quan hệ cho x và y, thực hiện câu lệnh có nhãn L nếu quan hệ này là đúng, nếu trái lại sẽ thực hiện câu lệnh tiếp theo. Câu lệnh param x và call p,n dùng để gọi thủ tục. Còn lệnh return y để trả về một giá trị lưu trong y. Ví dụ để gọi thủ tục .

TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.