programas lenguaje instrucciones explicados ensamblador ejemplos desde codigo cero basicas c++ assembly x86 clang intel

c++ - explicados - lenguaje ensamblador instrucciones basicas



¿Cómo generar código ensamblador con clang en la sintaxis Intel? (3)

A partir de clang r208683 (clang 3.5+), entiende -masm=intel . Entonces, si tu clang es lo suficientemente nuevo, puedes usarlo.

Como muestra esta pregunta , con g ++, puedo hacer g++ -S -masm=intel test.cpp . Además, con clang, puedo hacer clang++ -S test.cpp , pero -masm=intel no es compatible con clang ( warning argument unused during compilation: -masm=intel ). ¿Cómo obtengo la sintaxis de Intel con clang?


Esto debería obtener clang para emitir código ensamblador con sintaxis Intel:

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

Puede usar -mllvm <arg> para pasar las opciones de llvm desde la línea de comando de clang. Lamentablemente, esta opción no parece estar bien documentada y, por lo tanto, solo la encontré navegando por las listas de correo de llvm.

Como se señala más abajo por @thakis , esto ya no es necesario en las versiones más nuevas de Clang (3.5+) ya que ahora admite la sintaxis -masm=intel .


Suponiendo que pueda hacer que Clang emita códigos de bytes LLVM normales, puede usar llc para compilar en lenguaje ensamblador y usar su --x86-asm-syntax=intel para obtener el resultado en la sintaxis Intel.