Có thể chạy trình biên dịch LLVM với đầu vào của mã x86 32 bit không? Có một thuật toán rất lớn mà tôi không có mã nguồn và tôi muốn làm cho nó chạy nhanh hơn trên cùng một phần cứng. Tôi có thể dịch nó từ x86 trở lại x86 với tối ưu hóa không.Biên dịch lại mã x86 bằng LLVM sang một số nhanh hơn x86
Mã này chạy một thời gian dài, vì vậy tôi muốn làm lại biên dịch tĩnh của nó. Ngoài ra, tôi có thể làm một hồ sơ thời gian chạy của nó và đưa ra gợi ý LLVM, mà chi nhánh có nhiều khả năng hơn.
Mã gốc được viết cho x86 + x87 và không sử dụng SSE/MMX/SSE2. Sau khi biên dịch lại Nó có cơ hội sử dụng x86_64 và/hoặc SSE3. Ngoài ra, mã sẽ được tái tạo theo cách tối ưu hơn cho bộ giải mã phần cứng.
Cảm ơn.
Đây không phải là câu trả lời, nhưng tôi nhớ đã có các chương trình cho Amiga để "tối ưu" mã được biên dịch cho MC68000 để làm cho nó hoạt động nhanh hơn trên các bộ vi xử lý mới hơn, với chi phí tương thích. Nhưng tôi biết không có nỗ lực như vậy cho x86. – liori
IMO, bạn có thể có một thời gian tốt hơn bằng cách sử dụng một cái gì đó như IDA & hex-quang hoặc Ollydbg để đảo ngược kỹ sư lắp ráp trở lại vào một ngôn ngữ cấp cao hơn (C hoặc C++) – Necrolis
[RevGen] (http://stackoverflow.com/questions/ 9359487/the-source-code-of-revgen-tool) là một trong những trình dịch x86-> LLVM tại đây. Nó cũng có dịch từ x86 đến nhị phân tĩnh. Nó sử dụng Qemu và sửa đổi MIPS TCG, tạo ra IR. – osgx