Forth
http://fforum.winglion.ru/

Локальные переменные
http://fforum.winglion.ru/viewtopic.php?f=2&t=2909
Страница 2 из 2

Автор:  Hishnik [ Вт окт 11, 2016 18:31 ]
Заголовок сообщения:  Re: Локальные переменные

Victor__v писал(а):
Граничен для всех случаев? Да

Немного не понял, что подразумевается под граничностью?

Victor__v писал(а):
Переносим из одного места в другое? Нет

Почему не переносим? Локальные объявления можно написать где угодно.

Victor__v писал(а):
Доп.расходы? Имеются, тот же jmp строить ( +15 доп.тактов)

Да это уже не имеет особого значения. Тут же сработает обычное статическое предсказание перехода, и 15 тактов не будет.

Victor__v писал(а):
Потоконезависимо?

Так же, как и другие слова Форта.

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

Автор:  Victor__v [ Вт окт 11, 2016 20:03 ]
Заголовок сообщения:  Re: Локальные переменные

Граничность то и подразумевает, что поместить можно всё что угодно
А переносимость...
Скорее моё специфическое требование. Чем меньше в коде вызовов, тем легче провести целевую компиляцию. Займусь этим как-нибудь, когда не в лом будет. Именно это и подразумевалось.
А потоконезависимость. Ну, мало ли. Вместо user укажете variable :D

Цитата:
А вот стек возвратов предназначен просто для другого

Да, предназначен. Но большая часть стека просто пустует. Непорядок.
Цитата:
помещать туда данные методологически некрасиво

Значит >R 2>R 2R> плохо, бектрекинг плохо. Си отстой а разработчики Winapi переворачиваются в гробу от данной некрасивости :hey;

Автор:  Hishnik [ Ср окт 12, 2016 03:12 ]
Заголовок сообщения:  Re: Локальные переменные

Victor__v писал(а):
А потоконезависимость. Ну, мало ли. Вместо user укажете variable

Сейчас можно легко обеспечивать многозадачность, что в целом резко снижает актуальность потоков. К тому же не вполне понятно, как локальные объявления могут быть зависимыми от этого дела. User внутри локального объявления все равно user, а variable все равно variable.

Victor__v писал(а):
Значит >R 2>R 2R> плохо, бектрекинг плохо

Использование стека возвратов не по назначению - это хак. Бектрекинг тут ни при чем, поскольку представляет собой алгоритмический подход, независимо от используемого языка. Плох не сам подход как таковой, а его неподходящее применение.

Автор:  KPG [ Вт май 22, 2018 09:25 ]
Заголовок сообщения:  Re: Локальные переменные

Расширение семантики локальных переменных
ForthOS Local Variables
(google translate)
Код:
Введение
ForthOS намеренно отходит от направления ANSI Forth в реализации «локальных переменных». В ForthOS правильнее назвать объект «локальными константами». Примеры, вероятно, самый простой способ понять объект.
Локальные константы

  : sum+1 { a1 a2 } a1 a2 + { sum } sum 1+ ;

Скобки указывают ячейки в стеке. Каждая ячейка выталкивается из стека, и ее значение становится доступным как именованный аргумент. Объем таких имен находится в конце функции. Как видно из примера, можно добавлять последовательные имена, поскольку идентифицируются дальнейшие константные значения.
Возвращаемые значения (с соблюдением форматирования стека)

  : sum+1 { a1 a2 - result } a1 a2 + { sum } sum 1+ ;

Это определение очень похоже на предыдущее, за исключением того, что в исходном определении локальных значений добавлен «результат». «result» не является идентификатором в области действия функции, однако ForthOS записывает, что эта функция приняла два аргумента и возвращает одно значение. При выходе из функции, если стек не изменился ожидаемым образом, выдается исключение.
Переменные форматы возврата

  : возможно { val - val  'T | F } val 0> if val 1+ true
          else false then ;

В этом варианте «val 'T | F» указывает на то, что функция возвращает один или два аргумента. Фактические значения не применяются.


P.S. В SPF4, наверное, такой синтаксис не обработается.

Автор:  Victor__v [ Вт май 22, 2018 20:35 ]
Заголовок сообщения:  Re: Локальные переменные

KPG писал(а):
Расширение семантики локальных переменных
ForthOS Local Variables
(google translate)
...

Немного сбивает с толку.
Это как chess делает в теме viewtopic.php?f=2&t=3141&view=unread#unread
Так что ль?
Впечатление складывается такое

Страница 2 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/