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