Здравствуйте.
Должен признаться я не достточно хорошо разбираюсь в отлове исключений на уровне железа или определенной ОСи. Мне всегда хвалато того что весь этот механизм преподносился мне, как на блюдичке, языками высокого уровня.
Сейчас, в своей работе по адаптации RTL FreePascal, я подошел к моменту, когда необходима реализация обработчика. В w32 эта реализация начинается с функции SetUnhandledExceptionFilter, чем её можно заменить в KOS? Если вас не затруднит, расскажите немного подробнее. Интересно было бы посмотреть и на рабочий пример (желательно небольшого объема).
После решения этого вопроса я подойду к тому что бы выложить первую альфу этого RTL, с небольшими примерами и комментариями.
..bw
Исключения
bw
В Колибри нет поддержки исключений. Только для FPU и SSE. Программа вызывает сервис и передаёт адрес своей функции обработчика. Когда произойдёт исключение система подправит стек и управление вернётся на эту функцию. Дальше всё зависит от обработчика. Если он сделает ret то управление вернётся на адрес где было исключение. Код системных обработчиков в core/fpu.inc
P.S. У Ghost-а были идеи на эту тему.
В Колибри нет поддержки исключений. Только для FPU и SSE. Программа вызывает сервис и передаёт адрес своей функции обработчика. Когда произойдёт исключение система подправит стек и управление вернётся на эту функцию. Дальше всё зависит от обработчика. Если он сделает ret то управление вернётся на адрес где было исключение. Код системных обработчиков в core/fpu.inc
P.S. У Ghost-а были идеи на эту тему.
Очень плохо. Полагаю что на уровне приложения этот вопрос решить нельзя?!
Хотелось бы увидеть поддержку исключений в ядре в ближайщее время .
Падение приложений без информирования пользователя (хотя бы) очень не красиво.
..bw
Хотелось бы увидеть поддержку исключений в ядре в ближайщее время .
Падение приложений без информирования пользователя (хотя бы) очень не красиво.
..bw
bw
Пока кто-нибудь не напишет - не появится.
Информация отображается на доске отладки (Board).
Пока кто-нибудь не напишет - не появится.
Информация отображается на доске отладки (Board).
bw, описанное и есть системный механизм обработки исключений...
Все остальное можно реализовать на чисто прикладном уровне.
Только в Kolibri, видимо, не обрабатываются отдельно целочисленные исключения типа деления на ноль или переполнения, а также исключение по факту доступа к зарезервированной, но не распределенной памяти.Программа вызывает сервис и передаёт адрес своей функции обработчика. Когда произойдёт исключение система подправит стек и управление вернётся на эту функцию.
Все остальное можно реализовать на чисто прикладном уровне.
Who is online
Users browsing this forum: No registered users and 52 guests