Tập 76: Mở đường LLVM không đi qua C emit

Có được IR sạch sẽ và đã được xác minh bởi verifier native, bước tiếp theo là đẩy xuống backend để sinh mã máy thô. Sprint 130 và 131 hoàn thiện driver và đường dẫn LLVM native.

Chúng tôi đưa LLVM làm backend mặc định cho native driver. Lệnh duy build từ nay dịch trực tiếp từ code DUY sang LLVM IR (.ll), gọi clang biên dịch ra file object và link thành Mach-O hoặc ELF nhị phân mà không hề sinh ra bất kỳ file C trung gian nào.

# Lệnh build native không dùng C emitter
duy build source.duy --backend llvm

Nếu người dùng muốn dùng C backend cũ, họ phải khai báo tường minh bằng cờ --backend c. Chúng tôi thiết lập một integration test kiểm tra thư mục build sau khi biên dịch 3 ví dụ lớn (hello, control, struct) để khẳng định 100% không có file .c trung gian nào xuất hiện trong quá trình compile.

Tôi đã tự tay kiểm tra thư mục build sau lượt test đầu tiên. Nhìn thấy thư mục chỉ chứa file nguồn .duy và binary đầu ra sạch sẽ mà không có bất kỳ file .c rác nào nằm lại, tôi biết mình đã thực sự rũ bỏ được giàn giáo cũ. Đường ống dẫn từ ý định thẳng xuống mã máy đã hoàn toàn được dọn sạch. C emitter cũ bị đẩy hẳn về vị trí tham chiếu tương thích ngược.


Bình luận (0)

Đang tải bình luận...