Wpis z mikrobloga

Dzień dobry wszystkim ( ͡º ͜ʖ͡º)

Po miesiącu prac mamy dla Was nowy wpis z serii #teoriakompilacji ( ͡ ͜ʖ ͡) Dzisiejszym tematem jest sam proces kompilacji i optymalizacji kodu źródłowego!

https://cpp-polska.pl/post/teoria-kompilacji-kompilacja-i-optymalizacja ()

Tuż po przetworzeniu plików źródłowych przez preprocesor, efekt jego pracy trafia bezpośrednio do kompilatora, gdzie zostaje poddany procesowi kompilacji. Proces ten, mimo że w głowach wielu osób wydaje się być bardzo skomplikowanym, może zostać zamknięty w łatwą do zrozumienia abstrakcję. Zapraszam na wpis, który wyjaśni na czym dokładnie polega ten proces.


Miłego czytania ʕʔ
Pobierz
źródło: comment_3KK2yYXggZXFYHcXE8DSrmWwOCQdrcD0.jpg
  • 9
@CppPolska:

Proces optymalizacji możemy wyobrazić sobie jako zestaw wielu funkcji, które kolejno wykonywane są na drzewach składniowych. Ważną zasadą każdej z nich jest to, aby zachowanie kodu było niezmienne (tj. przykładowo, jeżeli chcemy zwrócić w funkcji wartość -47, to kompilator nie może zadecydować, że będzie to wartość 21).


Fałsz.

Proszę, oto funkcja, który skompilowana bez pewnej optymalizacji (z flagą -fno-elide-constructors) zwraca -47:
https://wandbox.org/permlink/0of5Qf9mh55V9EPD

Oto ta sama funkcja, która skompilowana z włączeniem
@MamCieNaHita: Z całym szacunkiem, ale Twoja wypowiedź jest nie na temat. Nikt nie mówił o żadnym "bugu optymalizacji", a side effecty w copy ctorze są w 100% legalnym kodem w C++. Mój przykład ma na celu pokazanie błędu merytorycznego w artykule zamieszczonym przez @CppPolska. Nie mniej i nie więcej.
@KorwinizacjaPrzelyku: dzięki za uwagę. Leci plusik ( ͡° ͜ʖ ͡°) Nie znałem tej opcji, musisz przyznać, że przełączników optymalizacji jest wiele ( ͡º ͜ʖ͡º) Zawsze znajdzie się jakiś wyjątek od reguły, ale to nie zmienia faktu, że w przeważającej większości optymalizacje nie zmieniają zachowania programu.
@CppPolska: wspominasz tam o martwym kodzie if (i < 0) który nie jest podświetlony kolorem w asm, natomiast w podanym linku widać skok zależny od tego IFa... czy źle patrzę? Poza tym artykuł super, mam nadzieję że to że opisujecie wąską dziedzinę (= mało plusów) was nie zniechęci, bo tak fachowych artykułów to ze świecą w polskiej sieci szukać