developer tip

인텔 구문에서 clang을 사용하여 어셈블리 코드를 생성하는 방법은 무엇입니까?

copycodes 2020. 12. 14. 20:03
반응형

인텔 구문에서 clang을 사용하여 어셈블리 코드를 생성하는 방법은 무엇입니까?


이 질문에서 알 수 있듯이 g ++를 사용하면 g++ -S -masm=intel test.cpp. 또한 clang을 사용하면 할 수 clang++ -S test.cpp있지만 -masm=intelclang ( warning argument unused during compilation: -masm=intel) 에서는 지원되지 않습니다 . clang으로 인텔 구문을 얻으려면 어떻게해야합니까?


으로 @thakis 아래 언급 , 연타의 최신 버전 (3.5)에 동의 -masm=intel인수를.


이전 버전의 경우 Intel 구문으로 어셈블리 코드를 내보내려면 clang을 가져와야합니다.

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

-mllvm <arg>clang 명령 줄에서 llvm 옵션을 전달 하는 사용할 수 있습니다 . 안타깝게도이 옵션은 문서화가 잘되어 있지 않아서 llvm 메일 링리스트를 통해서만 찾았습니다.


clang r208683 (clang 3.5+)부터는 -masm=intel. 따라서 귀하의 클랭이 충분히 새로운 경우이를 사용할 수 있습니다.


Clang이 일반 LLVM 바이트 코드를 내보내도록 할 수 있다고 가정하면 llc 를 사용하여 어셈블리 언어로 컴파일하고 해당 --x86-asm-syntax=intel옵션을 사용하여 Intel 구문으로 결과를 얻을 수 있습니다.

참고 URL : https://stackoverflow.com/questions/10990018/how-to-generate-assembly-code-with-clang-in-intel-syntax

반응형