Lesson 12 — Tối ưu hóa (Optimization)
Ba module tương tác trên IR ba địa chỉ: (1) pipeline bật/tắt từng pass tối ưu, (2) constant-folding stepper gập biểu thức từng bước, (3) dead-code highlighter tô lệnh sẽ bị bỏ. Mọi pass viết bằng JS thật — bạn sửa input là thấy kết quả đổi theo.
1. Optimization Pipeline — bật/tắt từng pass
Nhập IR ba địa chỉ, mỗi dòng một lệnh dạng
x = a op b, x = a, hoặc return x.
Toán tử: + - * /. Bật/tắt các pass để xem IR rút gọn dần và số lệnh trước/sau.
Mẫu:
IR gốc
IR sau tối ưu
2. Constant Folding Stepper — gập từng bước
Nhập một biểu thức hằng (chỉ số và
+ - * /, có ()). Bấm "Bước tiếp" để gập một phép tính mỗi lần — đúng thứ tự ưu tiên (* / trước + -).3. Dead Code Highlighter — tô lệnh sẽ bị bỏ
Phân tích liveness quét ngược: tô đỏ các lệnh CHẾT (gán cho biến không ai đọc, lệnh thuần khiết).
Lệnh có side effect (
print, read, call, return) màu xanh — không bao giờ bị bỏ dù kết quả không dùng.
Chết (sẽ bị DCE xóa)
Side effect (giữ lại)
Sống (giữ lại)