Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 21:37

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Стек возвратов - норма или хак?
СообщениеДобавлено: Вт фев 11, 2020 03:05 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Рассматривая примеры реализаций, периодически вижу >R R> и вообще использование стека возвратов для манипуляции с данными на стеке. На мой взгляд, это несколько изживающая себя вещь, которая формирует риски неправильного поведения по меньшей мере в двух вариантах:
1. Форт-процессор, где разрядность стека возвратов может быть меньше просто из соображений экономии ресурсов. Разрядность ограничивается счетчиком адреса, поэтому старшие разряды данных будут потеряны.
2. Системы с ШК и разрядностью 64/32. Опять же, разрядность указателя может быть меньше разрядности данных.

Отсюда большой методический вопрос - насколько нужно избавляться от операций со стеком возвратов? Если нет, то существуют ли веские аргументы за обязательное сохранение возможности размещать на нем данные?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Вт фев 11, 2020 06:36 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 174
Благодарил (а): 20 раз.
Поблагодарили: 13 раз.
Кроме перечисленных проблем есть ещё одна банальная - очень легко что-то забыть на стеке возвратов перед выходом из определения и обрушить таким образом программу. И отлаживать это не очень просто.
Сам вместо стека возвратов как временного хранилища значений применяю переменные.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Вт фев 11, 2020 08:02 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Это хороший вопрос.
Это правильный вопрос.
Следующий вопрос :mrgreen:

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Вт фев 11, 2020 08:27 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 380
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Hishnik писал(а):
Рассматривая примеры реализаций, периодически вижу >R R> и вообще использование стека возвратов для манипуляции с данными на стеке. На мой взгляд, это несколько изживающая себя вещь, которая формирует риски неправильного поведения по меньшей мере в двух вариантах:
1. Форт-процессор, где разрядность стека возвратов может быть меньше просто из соображений экономии ресурсов. Разрядность ограничивается счетчиком адреса, поэтому старшие разряды данных будут потеряны.
2. Системы с ШК и разрядностью 64/32. Опять же, разрядность указателя может быть меньше разрядности данных.

Отсюда большой методический вопрос - насколько нужно избавляться от операций со стеком возвратов? Если нет, то существуют ли веские аргументы за обязательное сохранение возможности размещать на нем данные?


Если разрядность стека возвратов меньше, чем разрядность стека данных нужно использовать несколько элементов стека данных.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Вт фев 11, 2020 10:24 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
zma писал(а):
Кроме перечисленных проблем есть ещё одна банальная - очень легко что-то забыть на стеке возвратов перед выходом из определения и обрушить таким образом программу. И отлаживать это не очень просто.
Сам вместо стека возвратов как временного хранилища значений применяю переменные.

Забывают новички.
Набьёте руку и проблем не будет.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Вт фев 11, 2020 19:56 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
forther писал(а):
Если разрядность стека возвратов меньше, чем разрядность стека данных нужно использовать несколько элементов стека данных.

Как технически решить вопрос, понятно. Оно так и решается при необходимости. Вопрос в другом - а почему бы в том же стиле не писать на диск? Почему не выделять куски памяти в видеокарте? Еще можно в облако временно выгружать пару чисел со стека :D Есть же определенный стиль программирования, и когда в коде появляются чуждые элементы, создается ощущение, что что-то тут не так.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Ср фев 12, 2020 09:46 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
По поводу заголовка.
Норма или хак?
Хм, если для работы со стеком возвратов есть инструменты (слова), то работа с ним является нормой, а не хаком. На мой взгляд.
Чтобы работа с этим стеком считалась хаком, просто сделайте ФС без слов >R R@ R> 2>R 2R> RP@ RP! RALLOT N>R NR> и прочих.

Такой же вопрос можно задать по поводу самомодификации.
Норма или хак?
Ведь форт-системы имеют замечательные слова HERE и DP.
С их помощью можно легко и просто переписать тот или иной участок кода.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Ср фев 12, 2020 17:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
Чтобы работа с этим стеком считалась хаком, просто сделайте ФС без слов >R R@ R> 2>R 2R> RP@ RP! RALLOT N>R NR> и прочих.

Можно переформулировать вопрос. Допустим, у нас есть "стек ошибок" (Error stack). И вот вместо >R R> программист начинает писать >ERROR ... ERROR>. В коде выглядит как некая обработка ошибок или их генерация, а на самом деле - ну просто переменная подвернулась под руку. С тем же успехом можно временно складывать числа в переменную IOError, в буфер печати, в какую-нибудь другую временную область, которая пока не используется, и состояние которой будет потом восстановлено. Хак при этом состоит в том, что, несмотря на упоминание стека возвратов, никакие действия, характерные для него, в программе не производятся. Поэтому текст начинает выглядеть не соответствующим прямому назначению.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Ср фев 12, 2020 19:32 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Ну тогда надо делать отдельный стек для лок. переменных.
Насколько мне помнится, что-то подобное есть в Форке.
и также убрать слова для работы со стеком возвратов, чтобы не искушать :)) :twisted:

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Ср фев 12, 2020 20:26 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 380
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Или чтоб >R R> работали с этим дополнительным стеком. Даже совместимо будет. За исключением фокусов типа ">R ;"


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Чт фев 13, 2020 05:17 
Не в сети

Зарегистрирован: Пн июл 01, 2019 14:01
Сообщения: 69
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Как пример: реализовать catch и throw на форте без доступа к стеку возвратов наверное не получится. Возможно ещё какие-то подобные "низкоуровневые" вещи.

А как временное хранилище вполне можно использовать локалки. Даже если они реализованы на стеке возвратов, то хотя бы удаляются автоматически, за ними следить не нужно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Чт фев 13, 2020 09:30 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
f02732 писал(а):
Как пример: реализовать catch и throw на форте без доступа к стеку возвратов наверное не получится. Возможно ещё какие-то

Асм и справочники по кодам вам в помощь

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Чт фев 13, 2020 10:25 
Не в сети

Зарегистрирован: Пн июл 01, 2019 14:01
Сообщения: 69
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Victor__v писал(а):
f02732 писал(а):
Как пример: реализовать catch и throw на форте без доступа к стеку возвратов наверное не получится. Возможно ещё какие-то

Асм и справочники по кодам вам в помощь

Зачем асм, если можно написать на форте или вообще взять готовую реализацию?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Чт фев 13, 2020 10:40 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
f02732 писал(а):
Зачем асм, если можно написать на форте или вообще взять готовую реализацию?

А как вы напишите на форте, ежели там нет доступа к стеку возвратов? Мы же решили его вообще не использовать)

f02732 писал(а):
Взять готовую реализацию?

Это вообще шикарный перл.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек возвратов - норма или хак?
СообщениеДобавлено: Чт фев 13, 2020 11:58 
Не в сети

Зарегистрирован: Пн июл 01, 2019 14:01
Сообщения: 69
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Victor__v писал(а):
А как вы напишите на форте, ежели там нет доступа к стеку возвратов? Мы же решили его вообще не использовать)

Может вы для себя чего и решили, но я пока какого-то единого мнения по теме не вижу. Я лишь привёл пример где доступ к стеку возвратов может понадобиться.

Victor__v писал(а):
f02732 писал(а):
Взять готовую реализацию?

Это вообще шикарный перл.

Не понимаю. Хотите сказать что никто никогда не писал на форте слова для работы с исключениями или что?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB