Nhược điểm của hình thức trung gian chức năng


16

Tôi đang viết một trình tối ưu hóa cho một ngôn ngữ tương tự như JavaScript và cần chọn cách trình bày mã trung gian. Sự lựa chọn rõ ràng / điển hình ngày nay là Bài tập đơn tĩnh (SSA).

Tuy nhiên, Triển khai trình biên dịch hiện đại trong C cũng thảo luận về hình thức trung gian chức năng, về cơ bản có nghĩa là thực hiện chức năng thuần túy cho biểu diễn trung gian (chỉ thuần túy về các biến cục bộ, dữ liệu heap vẫn có thể thay đổi, và không phải CPS, chỉ đơn giản là letcác khối và lệnh gọi đuôi) và có một số lợi thế về mặt dễ dàng hơn để lý do về.

Có lẽ đó không phải là một người không có trí tuệ hoặc mọi người sẽ sử dụng một đại diện như vậy, vì vậy câu hỏi của tôi là, hình thức trung gian chức năng có những bất lợi gì so với SSA?


3
Loại phân tích nào bạn sẽ làm trên mẫu trung gian này? SSA là tuyệt vời để loại bỏ mã chết, lan truyền liên tục, chuyên môn hóa một phần và như vậy. Nếu loại công cụ này không có trong thực đơn của bạn, bạn có thể bỏ qua SSA và sử dụng một đại diện thoải mái hơn để vượt qua phân tích đơn giản hơn. Nhưng, tạo một biểu mẫu SSA là một nhiệm vụ không quan trọng và bạn có thể dễ dàng chuyển đổi SSA thành CPS (và ngược lại), điều này làm tăng gấp đôi lợi ích.
SK-logic

Vâng, tôi đang nhắm đến toàn bộ monty, khá nhiều, và ngôn ngữ đầu vào và định dạng đầu ra (ban đầu là C ++) đều là ngôn ngữ bắt buộc.
rwallace

Tạo một hình thức SSA là một nhiệm vụ không quan trọng và bạn có thể dễ dàng chuyển đổi SSA thành CPS, ngoài ra bạn có thể chuyển đổi CPS sang SSA, giúp nhân đôi lợi ích.
Hồng y Leon Alexis

Câu trả lời:


1

SSA là tuyệt vời để loại bỏ mã chết, lan truyền liên tục, chuyên môn hóa một phần và như vậy. Nếu loại công cụ này không có trong thực đơn của bạn, bạn có thể bỏ qua SSA và sử dụng một đại diện thoải mái hơn để vượt qua phân tích đơn giản hơn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.