Nguồn: ACM Digital Library via Hacker News
Tóm tắt
(Không thể truy cập nội dung đầy đủ do ACM Digital Library yêu cầu đăng nhập)
Bài báo nghiên cứu về register allocation trong hệ thống binary translation dựa trên LLVM, tập trung vào việc giảm chi phí biên dịch. Binary translation là kỹ thuật chuyển đổi mã nhị phân từ kiến trúc nguồn (ví dụ ARM) sang kiến trúc đích (ví dụ x86) trong runtime, được sử dụng rộng rãi trong emulator, virtual machine, và các hệ thống cross-ISA.
Register allocation là một trong những bài toán tốn kém nhất trong trình biên dịch — nó quyết định biến nào được giữ trong thanh ghi CPU (nhanh) và biến nào phải spill ra bộ nhớ (chậm hơn). Trong bối cảnh binary translation, chi phí này cần được cân bằng với overhead của quá trình dịch, vì translation xảy ra trong runtime chứ không phải compile time.
Đóng góp chính của bài báo là đề xuất phương pháp register allocation mới cho LLVM-based binary translators có chi phí biên dịch thấp hơn so với các phương pháp truyền thống, đồng thời vẫn duy trì chất lượng mã được dịch ở mức chấp nhận được. Kết quả có ứng dụng thực tế trong các project như QEMU (nếu được port), Apple Rosetta 2, hay các emulator mã nguồn mở.