Привет,
Мы кладем на стек возвратов фрейм исключений и записываем его адрес в
регистр FS процессора.
Когда возникает аппаратное исключение вызывается слово (EXC). Если
аппаратного исключения не возникнет - фрейм сам уберется.
1. А исключение не доходит до системы, поэтому и системная ф-я обработки
исключения не вызывается
2. Переменная EXC-HANDLER нигде не используется, но содержит адрес
текущего фрейма. В принципе не нужна, дублирует 0 FS@ (кроме WNDPROC -
там мы не ставим фрейм исключений и у системы свой)
3. Фрейм исключений в SPF кладется 1 раз на поток (хотя можно было бы
класть каждый CATCH). И drop-exc-handler должен вызываться при выходе
из USER-INIT/PROCESS-INIT.
Код инициализации форт системы такой:
CALL TC-FORTH-INSTANCE> (здесь <SET-EXC-HANDLER> кладет на стек
возвратов адрес DROP-EXT-HANDLER)
CALL INIT
RET (здесь мы вызываем DROP-EXT-HANDLER)
Yuriy Zhilovets wrote:
> Привет всем!
> Изучаю spf_win_except. Непонятно
>
> 1) Где именно происходит выход из системной функции обработки исключения
> и какой результат ей передается
> 2) зачем нужна переменная EXC-HANDLER. Она вроде бы нигде не используется
> 3) зачем нужно drop-exc-handler. Кто его вызывает и когда?
>
> Ю. Жиловец
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
>
http://sourceforge.net/powerbar/db2/> _______________________________________________
> Spf-dev mailing list
>
[hidden email]
>
https://lists.sourceforge.net/lists/listinfo/spf-dev>