Comme cette question montre, avec g ++, je peux faire g++ -S -masm=intel test.cpp
. De plus, avec clang, je peux faire clang++ -S test.cpp
, mais -masm=intel
n'est pas pris en charge par clang (warning argument unused during compilation: -masm=intel
). Comment obtenir la syntaxe Intel avec Clang?
Comme noté ci-dessous par @thakis , les nouvelles versions de Clang (3.5+) acceptent le -masm=intel
argument.
Pour les versions plus anciennes, cela devrait faire en sorte que le code Assembly soit émis avec la syntaxe Intel:
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
Vous pouvez utiliser -mllvm <arg>
pour passer les options llvm à partir de la ligne de commande clang. Malheureusement, cette option ne semble pas bien documentée, et je ne l'ai donc trouvée qu'en parcourant les listes de diffusion llvm.
À partir de clang r20868 (clang 3.5+), il comprend -masm=intel
. Donc, si votre clang est suffisamment nouveau, vous pouvez simplement l'utiliser.
En supposant que Clang puisse émettre des codes d'octets LLVM normaux, vous pouvez ensuite utiliser llc pour compiler en langage assembleur et utiliser son --x86-asm-syntax=intel
option pour obtenir le résultat dans la syntaxe Intel.