¿Cómo generar código ensamblador con clang en sintaxis Intel?


Como esta pregunta muestra, 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 intel con clang?

Author: Community, 2012-06-12

3 answers

Esto debería hacer que clang emita código ensamblador con sintaxis Intel:

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

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


Como señaló a continuación @thakis, esto ya no es necesario en las versiones más recientes de Clang (3.5+), ya que ahora soporta la sintaxis -masm=intel.

 95
Author: dcoles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:08

A partir de clang r208683 (clang 3.5+), comprende -masm=intel. Así que si tu sonido es lo suficientemente nuevo, puedes usarlo.

 30
Author: thakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-23 19:44:36

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

 16
Author: Jerry Coffin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-04 08:25:50