Wpis z mikrobloga

@Malkof: przecież generowanie kodu czytelnego asemblera jest zupełnie niepotrzebne. Można od razu wygenerować kod maszynowy dużo łatwiej, a jak ktoś już chciałby sobie poczytać te pliki assemblera, to wtedy je generować przy pomocy -S
@Saly: @Gladoo: LLVM jest dobrym przykładem, bo tam jest podział na frontend i backend. Front odpowiada za transformację kodu na język pośredni i na nim są wykonywane pozostałe operacje. Dzięki temu jedno środowisko może kompilować kilka języków.
@Gladoo: Gdzie są te "pliki asemblera"? Plik obiektowy jest generowany przez kompilator, tylko tyle i aż tyle. Nie ma żadnych "plików asemblera", to wymyśliliście wy, wykopki.
@Passer93: chodzi o pliki assembly. Np. w gcc można przeciez zatrzymać proces kompilacji w tym miejscu np. gcc -S plikzrodlowy.cpp -o -plikassembly.s i podejrzeć plik.
@Gladoo: Rozumiem, ale w normlanym workflowu te pliki nie są generowane.

Odpowiadajac na pytanie czym się różnią te pliki od plików obiektowych to .obj zawierają o wiele więcej informacji. Poza samym kodem w postaci maszynowej są też informacje dla linkera, symbole, relokacje, komentarze, moge byc tez jakieś metadane profilera czy debuggera. Ogarnij sobie https://linux.die.net/man/1/objdump jak jestes na linuxie