Dokładnie tak - skoro architekt/twórca/wtf zażyczył sobie, by takie coś po prostu nie miało prawa bytu i oznaczył to jako UB, to jest to UB i kropka.
Zażyczył sobie? To dokumentacja>praktyka? Ciekawe twierdzenie. To widzę że nikt nie liczy się z bredniami manuala. W końcu to piszą osoby które powinny najlepiej wiedzieć jak to działa.
"Bo skoro działa na 'każdym' komputerze z Windowsem 7 z daną konfiguracją, to niech zostanie, niezależnie, że albo nikt o takim ficzerze nie wspomniał, albo jest to undefined-behavior..."
Ale czy ja mówię cokolwiek o kompatybilności? Zdaję sobie sprawę że sporo z tych rzeczy jest zależna od wielu parametrów. Natomiast raz jeszcze mówiąc o bswap ax
to jest to od bodaj od Pentium I do dzisiaj. Dlaczego? Kompatybilność wsteczna zapewne czy inne powody. W każdym razie jak było tak jest.
Masz rację - ja wolę trzymać się tego, że skoro ktoś napisał, że to i to w połączeniu daje undefined-behavior, to tak po prostu jest.
Ok, to teraz do architektury PE/EXE: Masz jakiś plik EXE, chcesz go parsować. Trzymając się dokumentacji M$ dojdziesz do tego że to nie jest poprawny plik PE/EXE, natomiast plik EXE śmiga sobie. Czyżby UB? A może po prostu M$ nie opisał bardziej skomplikowanych zachowań loadera które notabene są od Win95.
Nie mniej rozumiem twoje myślenie i szanuje je, po prostu nie wychodzisz poza utarty szlak.
Fakt, że na większości procesorów w ten sposób skonstruowany opcode zeruje rejestr dla mnie nic nie zmienia, ani już tym bardziej nie daje powodu, by korzystać z takich kombinacji w kodzie, bo a nuż np.kolejne procesory Intela będą wywalać wyjątek w takiej sytuacji.
RE/AntiRE to często jazda po bandzie, taki kod to nic specjalnego. I skoro jest to od Pentium I, to coraz więcej kodu zależy od tego (niezliczona ilość packerów/protectorów). A gdyby Intel zmienił to, to poprawiłbyś kod i już. Nie widzę tragedii. I nie mówię żeby ten kod stosować jako zerowanie rejestrów 16bitowych. To się przydaje tam gdzie nie chcemy aby osoby korzystające z oficjalnej dokumentacji (takie jak Ty) wiedziały co się dzieje.
Skoro specyfikacja czegoś jawnie nie określa, nie ma to przypisanego zachowania - nie można stwierdzić, że "każde jest poprawne".
Jakoś zaimplementować to musisz. Więc skoro specyfikacja nie mówi o tym nic, to jak masz to zaimplementować jak nie tak jak ci się podoba? Już nie mówiąc że specyfikacja do której się odwołujemy jest wewnętrznie niezgodna.
@Patryk27 ma rację. Kolejny raz zawodnik o pseudonimie payl omija bana żeby głosić swoje radosne brednie
Dziękuje za twoją opinię. Nie mniej jakoś nie straszy mnie to że nigdy się ze mną nie zgadzasz.
Undefined behaviour to sytuacja w której nie możemy jednoznacznie stwierdzić co stanie z programem w różnych warunkach
To jak rozdaję program użyszkodnikom, to to jest UB?
Twoja definicja jest ograniczona.
przy czym tym warunkiem może być architektura, platforma, czas kompilacji, wersja kompilatora, czy cokolwiek sobie wymarzysz.
No to wracając do nieśmiertelnego bswap ax
to zakładając że ktoś nie uruchomi tego na 486, to to nie jest UB i tutaj różnisz się od Patryka bo dla niego manual jest święty.
Traktując sprawę w drugą stronę to 99,9% współczesnych programów to jeden wielki UB, ponieważ zakładają istnienie instrukcji których dany (archaiczny) procesor może nie posiadać.
Ja bym raczej powiedział, że to wasze UB, to raczej zachowanie którego nie można przewidzieć (tłumacząc z ang.). Natomiast ja się z tym nie zgadzam, bo moim zdaniem wszystko można przewidzieć jeżeli ma się odpowiednią wiedzę.
Widzę że tylko jeden jedyny 13 smok zrozumiał o co mi chodzi. Reszta zapewne jest zbyt ustawiona na swój tor, który każe ograniczać się. Natomiast moja 'zasada' jest prosta: Undefined Behavior to tylko brak wiedzy/danych aby mieć pełen pomiar, nie żadne działanie którego nie można zrozumieć. W teorii można wszystko zmierzyć więc UB nie istnieje. Są tylko ograniczone przyrządy i... ograniczone osoby, mam nadzieję że nie wy.
A tak w ogóle to nie dyskutuj z terrorystami.
Zdetonuję wam bombę w siedzibie. A nie, zapomniałem, wy nie macie siedziby.
https://pl.wikipedia.org/wiki/Terroryzm
Nie wydaje mi się abym wymuszał na was jakiekolwiek działanie tym postem (no może poza wolnością wypowiedzi). Staram się was też nie bić, więc chyba jest ok.
I tak najzabawniejsze jest to że o ile wasze opinie mają prawo bytu, tak moje, alternatywne, nie mają. Jestem tępiony także za swoje alternatywne poglądy, których nie jesteście w stanie zrozumieć. To jest oczywiste cenzurowanie 'niepoprawnych' poglądów. Także wasze wypowiedzi są nic nie warte bez mojej możliwości odpowiedzi, bo przedstawiają sprawy w jednym świetle.