Tôi cần phải chuyển đổi mã nguồn lắp ráp x86 thành tệp .ll có thể đọc được LLVM của con người (còn gọi là ngôn ngữ assembly LLVM). Tôi có thể làm cái này như thế nào? Nếu không có giải pháp trực tiếp nào thì có thể thực hiện một giải pháp trong cơ sở hạ tầng LLVM với ít nỗ lực nhất có thể?Soạn thảo mã nguồn với LLVM
Tôi đoán, giải pháp mà tôi đang tìm kiếm sẽ là một số loại đối tác của llc chuyển đổi .s tệp trở lại .ll đại diện.
Câu hỏi này đã được hỏi và trả lời. Không có giải pháp trực tiếp do nhiều thứ (ví dụ như các nhánh gián tiếp). Bạn có thể tìm thấy dự án như llvm-qemu và libcpu hữu ích cho bạn. Trong mọi trường hợp, câu hỏi này là một sự lừa đảo của http://stackoverflow.com/questions/6981810/translation-of-machinecode-into-llvm-ir-disassembly-reassembly-of-x86-64-x86 –
Cảm ơn bạn. Tôi đã xem xét các dự án mà bạn đã đề cập. Thật không may, _llvm-qemu_ trông chết. Và _libcpu_ trông giống như đang đi theo cách riêng của nó trong phân tích cú pháp hơn là sử dụng cơ sở hạ tầng của LLVM (vì vậy nó dường như không hoàn toàn trong việc hỗ trợ x86 ISA). Trên thực tế, tôi nghĩ rằng công cụ tôi đang tìm kiếm nên thực hiện công việc của ** AsmPrinter ** của LLVM nhưng theo hướng ngược lại dịch các lệnh ISA gốc thành _MachineInstr_ LLVM-_MCInst_ của LLVM. – bsa2000
Còn tiểu dự án LLVM ** llvm-mc ** thì sao? Nó có lớp _AsmParser_ có thể ăn tập tin .s và tạo ra biểu diễn của nó dựa trên lớp _MCInst_. Trong trường hợp này, phần duy nhất vẫn được hoàn tác là quay trở lại theo hướng ngược lại đối với lớp _MCLowering_ hướng tới đại diện dựa trên _MachineInstr_ của LLVM. – bsa2000