Jak wygenerować kod asemblera za pomocą clang w składni Intela?

Tak jak to pytanie pokazuje, że z g++ mogę zrobić g++ -S -masm=intel test.cpp. Również z clang, mogę zrobić clang++ -S test.cpp, ale {[2] } nie jest wspierany przez clang (warning argument unused during compilation: -masm=intel). Jak uzyskać składnię Intela z clang?

Author: Community, 2012-06-12

3 answers

To powinno sprawić, że clang będzie emitował kod asemblera ze składnią Intela:

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

Możesz użyć -mllvm <arg>, aby przekazać opcje llvm z linii poleceń clang. Niestety ta opcja nie wydaje się być dobrze udokumentowana, dlatego znalazłem ją tylko przeglądając listy dyskusyjne llvm.


Jak zauważył poniżej @thakis, nie jest to już potrzebne w nowszych wersjach Clang (3.5+), ponieważ obsługuje składnię -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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:08

Od clang r208683 (clang 3.5+), rozumie -masm=intel. Więc jeśli twój clang jest wystarczająco Nowy, możesz go po prostu użyć.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-23 19:44:36

Zakładając, że możesz mieć Clang emitujący normalne kody bajtowe LLVM, możesz użyć llc do kompilacji do języka asemblacji i użyć jego opcji --x86-asm-syntax=intel, aby uzyskać wynik w składni Intela.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-04 08:25:50