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/