Giai đoạn cuối của quá trình biên dịch là sinh mã đích. Dữ liệu nhập của bộ sinh mã đích là biểu diễn trung gian của chương trình nguồn và dữ liệu xuất của nó là một chương trình đích. Kỹ thuật sinh mã đích được trình bày trong chương này không phụ thuộc vào việc dùng hay không dùng giai đoạn tối ưu mã trung gian. | CHƯƠNG IX SINH MÃ ÐÍCH Nội dung chính: Giai đoạn cuối của quá trình biên dịch là sinh mã đích. Dữ liệu nhập của bộ sinh mã đích là biểu diễn trung gian của chương trình nguồn và dữ liệu xuất của nó là một chương trình đích (hình ). Kỹ thuật sinh mã đích được trình bày trong chương này không phụ thuộc vào việc dùng hay không dùng giai đoạn tối ưu mã trung gian . Chương trình nguồn Biên dịch kỳ đầu Mã trung gian Bộ tối ưu mã Mã trung gian Bộ sinh mã Chương trình đích đích Bảng danh biểu Hình Vị trí của bộ sinh mã đích Nhìn chung một bộ sinh mã đích phải đảm bảo chạy hiệu quả và phải tạo ra chương trình đích đúng sử dụng hiệu quả tài nguyên của máy đích. Về mặt lý thuyết, vấn đề sinh mã tối ưu là không thực hiện được. Trong thực tế, ta có thể chọn những kỹ thuật heuristic để tạo ra mã tốt nhưng không nhất thiết là mã tối ưu. Chương này đề cập đến các vấn đề cần quan tâm khi thiết kế một bộ sinh mã. Bên cạnh đó một bộ sinh mã đích đơn giản từ chuỗi các lệnh ba địa chỉ cũng được giới thiệu. Mục tiêu cần đạt: Sau khi học xong chương này, sinh viên phải: • Nắm được các vấn đề cần chú ý khi thiết kế bộ sinh mã đích. • Biết cách tạo ra một bộ sinh mã đích đơn giản từ chuỗi các mã lệnh ba điạ chỉ. Từ đó có thể mở rộng bộ sinh mã này cho phù hợp với ngôn ngữ lập trình cụ thể. Kiến thức cơ bản: Sinh viên phải có kiến thức về kiến trúc máy tính đặc biệt là phần hợp ngữ (assembly language) để thuận tiện cho việc tiếp nhận kiến thức về máy đích. Tài liệu tham khảo: [1] Compilers : Principles, Technique and Tools - Alfred , Jeffrey Addison - Wesley Publishing Company, 1986. [2] Design of Compilers : Techniques of Programming Language Translation Karen A. Lemone - CRC Press, Inc, 1992. - 187 I. CÁC VẤN ÐỀ THIẾT KẾ BỘ SINH MÃ Trong khi thiết kế bộ sinh mã, các vấn đề chi tiết như quản trị bộ nhớ, chọn chỉ thị cấp phát thanh ghi và đánh giá thứ tự thực hiện . phụ thuộc rất nhiều vào ngôn ngữ đích và hệ điều hành. 1. Dữ liệu vào của bộ sinh .