Как разобрать PNaCl как удобочитаемый LLVM IR?

У меня есть .pexe и я хочу получить IR-код LLVM. Как это может быть сделано? Это файл, который я хочу преобразовать в LLVM IR: NaClAMBullet.pexe

Я не понимаю, почему это еще не читаемый код LLVM IR:

Портативный исполняемый файл PNaCl (сокращенно pexe) представляет собой один модуль LLVM IR.

Источник: Справочник по собственному клиенту Google


person Student of Hogwarts    schedule 06.06.2015    source источник


Ответы (1)


цепочка инструментов PNaCl содержит множество инструментов для управления PNaCl. и файлы LLVM, включая pnacl-dis и pnacl-bcdis. .pexe действительно создается из одного модуля LLVM IR, но это не то же самое, что и модуль LLVM IR: битовый код PNaCl стабилен и отличается от LLVM IR.

person JF Bastien    schedule 06.06.2015
comment
Спасибо за ваш ответ! Я не знал, что Google предоставляет такие простые в использовании инструменты для этого. Я пробовал несколько инструментов LLVM, но, похоже, Google изменил довольно много вещей в нескольких компонентах цепочки инструментов. Это может быть очевидно для других людей, но я очень новичок в компилируемых языках и использовал только clang и самописные make-файлы... - person Student of Hogwarts; 06.06.2015
comment
Вывод составляет полмиллиона строк. Знаете ли вы, как удалить весь код, созданный Pepper.js/NaCl SDK, чтобы оставить только ту часть, которая была написана в исходном файле C/C++? - person Student of Hogwarts; 06.06.2015
comment
Лучше всего для этого использовать объектный файл, сгенерированный только из этого файла C, а не окончательный связанный исполняемый файл. Объектные файлы представляют собой обычный битовый код LLVM и могут использоваться с любым инструментом PNaCl или LLVM. - person Derek; 08.06.2015
comment
@Derek Спасибо :) Я хотел посмотреть на некоторые .pexe-файлы, которые уже скомпилированы. Но если без объектных файлов много хлопот, думаю, я придумаю что-нибудь еще, на что можно потратить время. - person Student of Hogwarts; 08.06.2015