¿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?
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
.
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.
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.
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