Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 01:54

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Локальные переменные
СообщениеДобавлено: Вт окт 11, 2016 18:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
Граничен для всех случаев? Да

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

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

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

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

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

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Локальные переменные
СообщениеДобавлено: Вт окт 11, 2016 20:03 
Не в сети

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

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

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Локальные переменные
СообщениеДобавлено: Ср окт 12, 2016 03:12 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
А потоконезависимость. Ну, мало ли. Вместо user укажете variable

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Локальные переменные
СообщениеДобавлено: Вт май 22, 2018 09:25 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Расширение семантики локальных переменных
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, наверное, такой синтаксис не обработается.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Локальные переменные
СообщениеДобавлено: Вт май 22, 2018 20:35 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
KPG писал(а):
Расширение семантики локальных переменных
ForthOS Local Variables
(google translate)
...

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

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


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

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


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

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


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

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