Mentalnie, zawsze zastanawiałem się, jak try/throw/catch wygląda za kulisami, kiedy kompilacje C++ tłumaczą je na asembler. Ale ponieważ nigdy go nie używam, nigdy nie zdążyłem go sprawdzić (niektórzy ludzie powiedzieliby leniwie).C++ try/throw/catch => kod maszynowy
Czy normalny stos jest używany do śledzenia try
s, czy też oddzielny stos wątków jest przechowywany tylko w tym celu? Czy implementacja MSVC i g ++ jest duża czy mała? Proszę pokazać mi pseudo asm (IA-32 też jest w porządku), więc nigdy nie muszę sam tego sprawdzać! :)
Edytuj: Teraz otrzymuję podstawy implementacji MSVC na obsłudze IA-32. Ktoś wie na g ++ na IA-32, czy jakikolwiek inny procesor?
Dotyczy to obsługi strukturalnej wyjątków systemu Windows, która jest związana z obsługą wyjątku C++, ale nie jest taka sama.Pietrek wspomina we wstępie, że wyjątki C++, implementowane przez Microsoft i Borland, używają SEH, ale jego artykuł nie obejmuje * jak * go implementują. –
Świetny artykuł MSVC/IA-32, choć długi. –
Wyjątki C++ to tylko klasa wyjątków SEH, z opakowaniem zawierającym informacje C++ (klasa wyjątków). Wyjątki C++ muszą używać SEH, aby rozprzestrzeniać granice jądra, itp. –