wake-up-neo.com

Wie generiert man Assembly-Code mit Clang in Intel-Syntax?

Wie diese Frage zeigt, kann ich mit g ++ g++ -S -masm=intel test.cpp. Außerdem kann ich mit clang clang++ -S test.cpp, aber -masm=intel wird von clang nicht unterstützt (warning argument unused during compilation: -masm=intel). Wie bekomme ich Intelsyntax mit Clang?

56
Jesse Good

Wie nten von @thakis vermerkt , akzeptieren neuere Versionen von Clang (3.5+) das -masm=intel Streit.


Bei älteren Versionen sollte dies klingeln, um Assembly-Code mit Intel-Syntax auszugeben:

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

Sie können -mllvm <arg>, um llvm-Optionen von der Befehlszeile aus zu übergeben. Leider scheint diese Option nicht gut dokumentiert zu sein, weshalb ich sie nur durch Durchsuchen der Mailinglisten von llvm gefunden habe.

101
dcoles

Ab clang r20868 (clang 3.5+) versteht es -masm=intel. Wenn Ihr Sound also neu genug ist, können Sie ihn einfach verwenden.

34
thakis

Vorausgesetzt, Sie können Clang normale LLVM-Bytecodes ausgeben lassen, können Sie dann llc verwenden, um die Assemblersprache zu kompilieren, und dessen --x86-asm-syntax=intel Option, um das Ergebnis in Intel-Syntax zu erhalten.

16
Jerry Coffin