Bộ sinh mã trung gian chuyển chương trình nguồn sang chương trình tương đương trong ngôn ngữ trung gian Chương trình trung gian là một chương trình cho một máy trừu tượng Ngôn ngữ trung gian được người thiết kế trình biên dịch quyết định, có thể là: Cây cú pháp Ký pháp Ba Lan sau (hậu tố) Mã 3 địa chỉ | IT4073:NGÔN NGỮ và PHƯƠNG PHÁP DỊCH Phạm Đăng Hải haipd@ Chương 5: Sinh mã Sinh mã trung gian Sinh mã đích Tối ưu mã Bộ sinh mã trung gian chuyển chương trình nguồn sang chương trình tương đương trong ngôn ngữ trung gian Chương trình trung gian là một chương trình cho một máy trừu tượng Ngôn ngữ trung gian được người thiết kế trình biên dịch quyết định, có thể là: Cây cú pháp Ký pháp Ba Lan sau (hậu tố) Mã 3 địa chỉ Giới thiệu 1. Sinh mã trung gian Mã 3 địa chỉ Các dạng mã, Dịch trực tiếp cú pháp thành mã 3 địa chỉ Cài đặt mã Sinh mã cho khai báo Quy tắc ngữ nghĩa Lưu trữ thông tin về phạm vi Sinh mã cho lệnh gán Tên trong bảng ký hiệu Địa chỉ hóa các phần tử của mảng Sinh mã cho các biểu thức logic Sinh mã cho các cấu trúc lập trình Nội dung 1. Sinh mã trung gian Mã trung gian thường dùng : mã ba địa chỉ, tương tự mã assembly Chương trình trung gian là một dãy các lệnh thuộc kiểu mã 3 địa chỉ Mỗi lệnh gồm tối đa 3 toán hạng Tồn tại nhiều nhất . | IT4073:NGÔN NGỮ và PHƯƠNG PHÁP DỊCH Phạm Đăng Hải haipd@ Chương 5: Sinh mã Sinh mã trung gian Sinh mã đích Tối ưu mã Bộ sinh mã trung gian chuyển chương trình nguồn sang chương trình tương đương trong ngôn ngữ trung gian Chương trình trung gian là một chương trình cho một máy trừu tượng Ngôn ngữ trung gian được người thiết kế trình biên dịch quyết định, có thể là: Cây cú pháp Ký pháp Ba Lan sau (hậu tố) Mã 3 địa chỉ Giới thiệu 1. Sinh mã trung gian Mã 3 địa chỉ Các dạng mã, Dịch trực tiếp cú pháp thành mã 3 địa chỉ Cài đặt mã Sinh mã cho khai báo Quy tắc ngữ nghĩa Lưu trữ thông tin về phạm vi Sinh mã cho lệnh gán Tên trong bảng ký hiệu Địa chỉ hóa các phần tử của mảng Sinh mã cho các biểu thức logic Sinh mã cho các cấu trúc lập trình Nội dung 1. Sinh mã trung gian Mã trung gian thường dùng : mã ba địa chỉ, tương tự mã assembly Chương trình trung gian là một dãy các lệnh thuộc kiểu mã 3 địa chỉ Mỗi lệnh gồm tối đa 3 toán hạng Tồn tại nhiều nhất một toán tử ở vế phải cộng thêm một toán tử gán x,y,z là các địa chỉ , tức là tên, hằng hay các tên trung gian do trình biên dịch sinh ra Tên trung gian phải được sinh để thực hiện các phép toán trung gian Các địa chỉ được thực hiện như con trỏ tới phần tử tương ứng của nó trong bảng ký hiệu Mã 3 địa chỉ 1. Sinh mã trung gian Câu lệnh A = x + y * z Chuyển thành mã 3 địa chỉ T = y * z A = x + T T là tên trung gian Được bộ sinh mã trung gian sinh ra cho các toán tử trung gian Mã 3 địa chỉ Ví dụ 1. Sinh mã trung gian Mã 3 địa chỉ tương tự mã Assembly: Lệnh có thể có nhãn, Tồn tại những lệnh chuyển điều khiển cho các cấu trúc lập trình. Các dạng lệnh Lệnh gán x := y op z. Lệnh gán với phép toán 1 ngôi : x := op y. Lệnh sao chép: x := y. Lệnh gán có chỉ số X := y[i] hoặc x[i]= y Mã 3 địa chỉ Các dạng phổ biến 1. Sinh mã trung gian Lệnh gán địa chỉ và con trỏ x = &y; x = * y; *x = y Lệnh nhảy không điều kiện: goto L, L là nhãn của một lệnh Lệnh nhảy có điều kiện IF x relop y .