Forth http://fforum.winglion.ru/ |
|
Отладкостойкость форт-систем http://fforum.winglion.ru/viewtopic.php?f=8&t=3123 |
Страница 1 из 2 |
Автор: | Victor__v [ Вс апр 09, 2017 15:03 ] |
Заголовок сообщения: | Отладкостойкость форт-систем |
Как известно в форте можно всё, и в тоже время шаг вправо и влево есть расстрел ОСью. Итак отладкостойкость форта в режиме интерпретации 5 >R Кварк вылетает СПФ ругается Форк ругается 0 @ Кварк вылетает СПФ ругается Форк вылетает на windows 10, на остальных не тестил MOVE или CMOVE Кварк не реагирует СПФ вылетает Форк ругается Ещё отладочные примеры? или форт-системы обитателей форума? |
Автор: | Hishnik [ Вс апр 09, 2017 15:28 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Victor__v писал(а): 0 @ Кварк вылетает HERE . - 110280160. Это у него примерно там данные. Адресация абсолютная в пределах выделенного задаче адресного пространства, потому что альтернатива - постоянные команды mov eax, [base +offset], а это, во-первых, больше вычислений с постоянными обращениями к base, во-вторых, не решает проблему, потому что за пределами доступного адресного пространства окажется просто какой-то другой диапазон смещений. -1 @ тоже ведь даст ошибку. Ну и на стек возвратов класть числа можно только на свой страх и риск. Какой-то контроль баланса здесь практически сводит на нет всю ценность. С моей точки зрения, стек возвратов - исключительно для организации работы подпрограмм, а не для использования в качестве временной свалки данных, которые не помещаются на основном стеке. Само по себе наличие слов >R R> - от общего подхода Форта предоставлять доступ ко всему, к чему возможно. |
Автор: | gudleifr [ Вс апр 09, 2017 15:34 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
<mOleg явился> |
Автор: | Victor__v [ Вс апр 09, 2017 15:50 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Цитата: Ну и на стек возвратов класть числа можно только на свой страх и риск. Ну, так это ещё при мамонтах было |
Автор: | Hishnik [ Вс апр 09, 2017 15:56 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Victor__v писал(а): Ну, так это ещё при мамонтах было Так а зачем тогда Форту класть 5 в качестве адреса возврата? Он же потом по нему вернется Тут вопрос принципиального назначения программы - если она делается для максимальной живучести, в ней просто по законам жанра будет много проверок в рантайме. А пока что если кварк (и в целом любой Форт) вылетает, то исправляем то место, из-за которого он вылетает. Методы создания безопасных систем несколько ортогональны Форту и в некоторой степени вообще языкам. |
Автор: | Victor__v [ Вс апр 09, 2017 18:44 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Ну, так тема про отладку Не сбалансировали мы стек, и что нам за это будет? Лучше пусть форт-система выкидывает в консоль, чем в ось. Цитата: Методы создания безопасных систем несколько ортогональны Форту Так речь и не стоит о безопасной разработке форт-системы. Сам фортер на этой безопасности и спотыкнётся. |
Автор: | F-MAP [ Вс апр 09, 2017 19:30 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Цитата: Ну, так тема про отладку Не сбалансировали мы стек, и что нам за это будет? Лучше пусть форт-система выкидывает в консоль, чем в ось. Наверно к этому привыкнуть надо.. какая разница в консоль или в ось... править код надо все равно.. Я в СПФ пишу, в таких ситуациях смотрю spf.log, там причину понять можно |
Автор: | Hishnik [ Вс апр 09, 2017 20:46 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Victor__v писал(а): Не сбалансировали мы стек, и что нам за это будет? Лучше пусть форт-система выкидывает в консоль, чем в ось. Так ведь стек возвратов. Это где угодно проблема. Выкидывание в консоль мало поможет. Можно, конечно, сделать эмулятор со своим ip и образами памяти. Это надежнее, но медленнее. Такой вариант тоже есть, и используется внутри проекта на С++. Там действительно получается безопасная "песочница", но это не избавляет от необходимости исправлять ошибку. Иначе получается keyboard not found, press any key. |
Автор: | Victor__v [ Вс апр 09, 2017 21:10 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Эм, описывается проблема переход по недопустимому адресу, при таком исключении в СПФ печатается стек возвратов в консоль, отладку упрощает |
Автор: | Hishnik [ Вс апр 09, 2017 21:31 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Victor__v писал(а): Эм, описывается проблема переход по недопустимому адресу, при таком исключении в СПФ печатается стек возвратов в консоль, отладку упрощает Если честно, просто не обращал внимания. Оно не так сильно требовалось, и обходные пути есть. По списку адресов в стеке возврата все равно сложно с ходу что-то определить, а частое слово, вызывающее исключение - обычно @. Так что надо еще понять, как этот адрес вычисляется. |
Автор: | Victor__v [ Вс апр 09, 2017 21:37 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Цитата: обычно @ Я не самый сильный программист, поэтому признаюсь кой-в-чём Иногда надо выстроить смещение от адреса Забудешь плюсик поставить словишь недопустимый адрес. Редко, но бывает |
Автор: | F-MAP [ Вс апр 09, 2017 21:53 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Цитата: Иногда надо выстроить смещение от адреса Вот тут много проблем, как адрес определен? |
Автор: | gudleifr [ Пн апр 10, 2017 12:23 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
<mOleg явился> |
Автор: | Hishnik [ Пн апр 10, 2017 15:21 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
F-MAP писал(а): Вот тут много проблем, как адрес определен? Видимо, имеются в виду смещения от массива. Если сделать CREATE X[] 1000 ALLOT то X[] будет давать корректный адрес где-то в пределах области данных. Но теперь посчитаем адрес элемента массива ... DO X[] I + @ - тут все хорошо X[] I + 2 + @ - тут тоже все хорошо X[] I 2 + + @ - тут просто переставлены местами сложения X[] I 2 + @ - а вот тут уже проблема из-за забытого второго плюса, вместо чего-то вроде 100000002 получилось просто 2 Видимо, это больше вопрос стиля кодирования. Или же проблема решаема в форт-машине с "песочницей", в которой есть контроль адресов на каждую операцию. Тогда адресный интерпретатор будет вызывать не просто mov eax, [addr], а функцию, которая сначала проверит диапазон addr. Тут производительность будет уже заметно ниже. |
Автор: | F-MAP [ Пн апр 10, 2017 16:14 ] |
Заголовок сообщения: | Re: Отладкостойкость форт-систем |
Я придерживаюсь мысли, ни когда не хранить адрес в константе или в переменной.. его надо вычислять.. как к тому есть предупреждения, к примеру в библиотеке str5 в spf. Не знаю, кто еще создает массивы внутри кода? а если нужно 10-ки тысяч или неопределенное кол-во?, наверняка выделяют внешне память тем или иным способом, адрес начала этой области весьма плавающий.. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |