Как сгенерировать код сборки с clang в синтаксисе Intel?

Как этот вопрос показывает, с g++, я могу сделать g++ -S -masm=intel test.cpp. Кроме того, с clang я могу сделать clang++ -S test.cpp, но -masm=intel не поддерживается clang (warning argument unused during compilation: -masm=intel). Как получить синтаксис intel с clang?

Ответ 1

Как отмечено ниже @thakis, более новые версии Clang (3. 5+) принимают аргумент -masm=intel.


Для более старых версий это должно заставить clang выдавать ассемблерный код с синтаксисом Intel:

clang++ -S -mllvm --x86-asm-syntax=intel test.cpp

Вы можете использовать -mllvm <arg> для передачи параметров llvm из командной строки clang. К сожалению, эта опция не очень хорошо документирована, и поэтому я нашел ее, только просматривая списки рассылки llvm.

Ответ 2

Как по clang r208683 (clang 3.5+), он понимает -masm=intel. Итак, если ваш clang достаточно новый, вы можете просто использовать его.

Ответ 3

Предполагая, что Clang может генерировать нормальные LLVM-байтовые коды, вы можете использовать llc для компиляции на ассемблере и использовать его --x86-asm-syntax=intel, чтобы получить результат в синтаксисе Intel.