Autor: Radoslaw Sokol (rsokol_at_magsoft.com.pl)
Data: Mon 09 Sep 2002 - 10:32:50 MET DST
Hi,
sprocket wrote:
>
> AFAIR, nawet wcześniej, spotkałem się z tym określeniem już przy 286
Możliwe. Po prostu dokładny techniczny opis 80386 mam tylko
z gazet (i używano tam jeszcze terminu "przerwanie"), zaś
od Intela ściągnąłem opis zestawu instrukcji x86 obejmujący
procesory od i486 w górę. Dokładnie więc nie jestem w
stanie stwierdzić.
BTW 80286 oficjalnie IMHO nie powinien jeszcze mieć w
dokumentacji terminu "wyjątek", bo miał on w sumie bardzo
ograniczone możliwości ochrony kodu -- naruszenie segmen-
tacji powodowało chyba zwykłe zgłoszenie przerwania, tak
jak w przypadku dzielenia przez zero.
> Idea jest przecież ta sama. Czy w sekcji try...catch umieszczę instrukcję
> np. dzielenia przez zero, czy np. nieuprawnionego otwarcia bazy danych.,
> każdą z tych sytuacji mogę obsłużć identycznym mechanizmem,
> _zupełnie_odseparowanym_ od poziomu procesora. Sam procesor nie jest w
Właśnie -- mechanizm wyjątków C++ jest elementem języka
i może być zrealizowany zupełnie bez wsparcia ze strony
procesora (choćby np. przez sprawdzanie dzielnika przed
każdym dzieleniem ;) ). Mechanizm wyjątków procesora
jest zaś wyłącznie sprzętowy, bardzo zależny od konkret-
nej implementacji i bardzo nieelastyczny.
Dodatkowo zazwyczaj wyjątki C++ nie korzystają bezpośrednio
z wyjątków procesora -- bo nie mogą :) Oddziela je struktu-
ralna obsługa wyjątków systemu operacyjnego. Tylko system
ma prawo decydowania czy obsłuży wyjątek samodzielnie, czy
też pozwoli go obsłużyć aplikacji (jeśli aplikacja tego
chce i w dowolny sposób obsługiwany przez aplikacją -- choćby
za pomocą wyjątków C++).
> Uwierz mi, nie mylę tych dwóch spraw, ale w C++ nie ma powodu, by je
> rozróżniać :)))
Pisząc program w C++ nie należy nawet myśleć o sprzętowej
implementacji wyjątków :) Tak, jakby ona nie istniała. To
element języka i nic więcej :)
-- |""""""""""""""""""""""""""""""""""""""""""""""""""""""""""| | Radosław Sokół | mailto:rsokol_at_magsoft.com.pl | | | http://www.magsoft.com.pl/~rsokol/ | \................... ftp://sokol.gliwicki.necik.pl/ ......./
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 01:28:48 MET DST