Zamiana .cpp na .asm

Zamiana .cpp na .asm
LU
  • Rejestracja:około 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:14
0

chciałbym z pliku .cpp otrzymać plik assemblera. Czy istnieje taka możliwość?
(aplikacja konsolowa)

edytowany 1x, ostatnio: Luftkatze
plx211
  • Rejestracja:ponad 11 lat
  • Ostatnio:4 miesiące
  • Postów:181
5

Istnieje taka możliwość.
Dla przykładu dla GCC wystarczy dodać flagę -S -fverbose-asm.
Jeśli masz skompilowaną binarke z sybolami debygowania możesz użyć objdump.
Wszystko zależy gdzie, jak i przy pomocy czego kompilujesz :)

edytowany 1x, ostatnio: plx211
Spearhead
Dodatkowe flagi -O3 -fno-asynchronous-unwind-tables dają krótszy i czytelniejszy kod.
stivens
ze zoptymalizowany kod jest czytelniejszy?
Spearhead
@stivens: powtarzam za przypisem 3. Najwyraźniej dla małej ilości kodu czytelność jest widoczna, a dla dużej i tak czy siak będzie nieczytelny :D
enedil
@stivens: -O0 jest straszne do czytania. Moim zdaniem minimum -O1 potrzeba.
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:około godziny
3

https://godbolt.org/

Można podejrzeć jakich flag używa godbolt:
Dla gcc jest to:

Kopiuj
g++ -g -o /tmp/compiler-explorer-compiler2021413-4764-178um45.4vou/output.s -masm=intel -S -fdiagnostics-color=always /tmp/compiler-explorer-compiler2021413-4764-178um45.4vou/example.cpp

dla msvc

Kopiuj
cl /nologo /FA /c /FaC:\Users\ContainerAdministrator\AppData\Local\Temp\compiler-explorer-compiler2021413-23568-35mvnv.aeqzs\output.s /FoC:\Users\ContainerAdministrator\AppData\Local\Temp\compiler-explorer-compiler2021413-23568-35mvnv.aeqzs\output.s.obj -EHsc C:\Users\ContainerAdministrator\AppData\Local\Temp\compiler-explorer-compiler2021413-23568-35mvnv.aeqzs\example.cpp

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.