Chương này giới thiệu các dạng biểu diễn trung gian đặc biệt là dạng mã ba địa chỉ. Phần lớn nội dung của chương tập trung vào trình bày cách tạo ra một bộ sinh mã trung gian đơn giản dạng mã 3 đại chỉ. Bộ sinh mã này dùng phương thức trực tiếp cú pháp để dịch các khai báo, câu lệnh gán, các lệnh điều khiển sang mã ba địa chỉ. | CHƯƠNG VIII SINH MÃ TRUNG GIAN Nội dung chính: Thay vì một chương trình nguồn được dịch trực tiếp sang mã đích, nó nên được dịch sang dạng mã trung gian bởi kỳ trước trước khi được tiếp tục dịch sang mã đích bởi kỳ sau vì một số tiện ích: Thuận tiện khi muốn thay đổi cách biểu diễn chương trình đích; Giảm thời gian thực thi chương trình đích vì mã trung gian có thể được tối ưu. Chương này giới thiệu các dạng biểu diễn trung gian đặc biệt là dạng mã ba địa chỉ. Phần lớn nội dung của chương tập trung vào trình bày cách tạo ra một bộ sinh mã trung gian đơn giản dạng mã 3 đại chỉ. Bộ sinh mã này dùng phương thức trực tiếp cú pháp để dịch các khai báo, câu lệnh gán, các lệnh điều khiển sang mã ba địa chỉ. 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ách tạo ra một bộ sinh mã trung gian cho một ngôn ngữ lập trình đơn giản (chỉ chứa một số loại khai báo, lệnh điều khiển và câu lệnh gán) từ đó có thể mở rộng để cài đặt bộ sinh mã cho những ngôn ngữ phức tạp hơn. Tài liệu tham khảo: [1] Compilers : Principles, Technique and Tools - Alfred , Jeffrey Addison - Wesley Publishing Company, 1986. I. NGÔN NGỮ TRUNG GIAN Cây cú pháp, ký pháp hậu tố và mã 3 địa chỉ là các loại biểu diễn trung gian. 1. Biểu diễn đồ thị Cây cú pháp mô tả cấu trúc phân cấp tự nhiên của chương trình nguồn. DAG cho ta cùng lượng thông tin nhưng bằng cách biểu diễn ngắn gọn hơn trong đó các biểu thức con không được biểu diễn lặp lại. Ví dụ : Với lệnh gán a := b * - c + b * - c, ta có cây cú pháp và DAG: := := + a * b + a * c Cây cú pháp b * - b c c DAG Hình Biểu diễn đồ thị của a :=b * - c + b * - c 168 Ký pháp hậu tố là một biểu diễn tuyến tính của cây cú pháp. Nó là một danh sách các nút của cây, trong đó một nút xuất hiện ngay sau con của nó. a b c - * b c - * + := là biểu diễn hậu tố của cây cú pháp hình trên. Cây cú pháp có thể được cài đặt bằng một trong 2 phương pháp: - Mỗi nút được biểu diễn bởi một mẫu tin, với một trường cho toán .