Bytecode



  • SeppJ schrieb:

    Eigentlich gibt's nur einen großen Hersteller, der sich nicht an diesen Quasi-Standard hält (ratet mal wer :p ).

    Habe ich mir irgendwie schon fast gedacht. Gibts einen plausiblen Grund dafür, warum MS es nicht für nötig hält, sich an jegliche Standards + Quasi-Standards zu halten?



  • Abhängigkeiten schaffen. Kram, der für Windows geschrieben wurde, kann nur möglichst schmerzhaft für andere Plattformen portiert werden damit es möglichst keiner macht.



  • Meinst du echt, die denken so pervers?



  • Die erste MSVC ABI ist älter als der Itanium-Standard, und war damals (und ist es heute noch) "der Windows Standard".
    Bzw. bestimmte Teile der ABI wie z.B. das VTable Layout oder Exception Handling.

    Die sind auch mehr oder weniger in Stein gemeisselt. Eine Änderung am VTable Layout würde bedeuten dass man in C++ nicht mehr "einfach so" COM Interfaces implementieren kann, und eine Änderung am Exception Handling würde bedeuten dass man keine Exceptions mehr "durch OS Code" werfen könnte (z.B. aus einem Callback, durch den OS Code, zum Aufrufer von SendMessage o.ä.).

    Daran festzuhalten ist einfach nur praktisch. Bzw. andersrum: es zu ändern wäre reichlich plem, da es weitreichende, unerwünschte Konsequenzen hätte.



  • hustbaer schrieb:

    , und eine Änderung am Exception Handling würde bedeuten dass man keine Exceptions mehr "durch OS Code" werfen könnte (z.B. aus einem Callback, durch den OS Code, zum Aufrufer von SendMessage o.ä.).

    Sicher, daß man das kann?



  • volkard schrieb:

    hustbaer schrieb:

    , und eine Änderung am Exception Handling würde bedeuten dass man keine Exceptions mehr "durch OS Code" werfen könnte (z.B. aus einem Callback, durch den OS Code, zum Aufrufer von SendMessage o.ä.).

    Sicher, daß man das kann?

    Ziemlich sicher.
    MSVC's Exception Handling baut auf das vom OS untersetützte "Structured Exception Handling" (SEH) auf.

    So lange die entsprechenden OS-Funktionen exception-safe geschrieben sind, sehe ich keinen Grund, warum es nicht funktionieren sollte.

    Wobei ich dir jetzt keine Quelle nennen kann, wo explizit steht, dass man es darf.


Anmelden zum Antworten