2012-12-06 14 views
5

Tôi đã viết một thẻ LLVM để sửa đổi mã trình bày trung gian (IR). Để tăng tính di động, tôi cũng muốn nó hoạt động với trình biên dịch gcc. Vì vậy, tôi đã tự hỏi nếu có bất kỳ công cụ có thể chuyển đổi một số đại diện trung gian (IR) của gcc LLVM IR.Chuyển đổi GCC IR sang LLVM IR

+0

+1 để bù đắp mức độ đau mà LLVM API có thể có thể đã gây ra. –

Trả lời

5

Bạn có thể muốn dragonegg (đang sử dụng giao diện người dùng GCC để tạo IR LLVM).

Và nếu bạn muốn làm việc trên các đại diện nội bộ GCC, MELT (một ngôn ngữ cụ thể cấp cao để mở rộng GCC) có lẽ là công cụ phù hợp.

+0

Cảm ơn đề xuất của bạn. Nhưng liệu có cách nào để chuyển đổi GCC IR thành LLVM IR và sau đó quay lại GCC IR không? Vì vậy, tôi không phải sửa đổi một trong hai mặt trước hoặc phần cuối. – pythonic

+0

Tôi không chắc chắn LLVM IR & GCC IR là đẳng cấu (và tôi khá chắc chắn họ không phải là - cái ác luôn luôn trong các chi tiết). Nhưng chính xác thì bạn muốn đạt được điều gì và tại sao bạn lại hỏi? Tại sao các mối quan tâm về việc đi lại qua lại giữa GCC & LLVM IR ??? –

+0

Vâng những gì tôi muốn đạt được là dịch GCC IR sang LLVM IR, áp dụng pass của tôi, mà sửa đổi IR và sau đó dịch LLVM IR trở lại IR GCC, để backend gcc có thể tiếp tục từ đó. Bởi vì tôi đang làm việc trên một nền tảng có gcc như trình biên dịch của nó, vì vậy nó không thể có LLVM ở đó. – pythonic

2

Có thể là nhiều dễ dàng hơn để viết một phiên bản mã khác hoạt động với gcc IR. Những gì bạn muốn làm là có khả năng không thể, và nếu nó có thể, nó có thể là vô cùng khó khăn. (Nhiều hơn so với việc viết thẻ LLVM ngay từ đầu.)

+1

Tôi chắc chắn đồng ý. Làm việc qua lại từ GCC IR đến LLVM IR là không có ý nghĩa! (và nếu bạn đã làm nó sẽ là một cơn ác mộng). –