Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс апр 19, 2026 03:50

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
 Заголовок сообщения: Re: Трансляторы Си в Форт
СообщениеДобавлено: Пт мар 06, 2026 17:06 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 52
Благодарил (а): 2 раз.
Поблагодарили: 5 раз.
Total Vacuum писал(а):
основным клиентом этого транслятора Си будут мои Форт-процессоры, а в них традиционно всего по 16 инструкций в системе команд, т.е. резерва под отдельные команды для работы с отдельным стеком float просто нет

То есть, поддержка float будет исключительно софтовая? Это же медленно!
Другое дело, если арифметические команды будут выполнять действия параллельно в небольшом внутреннем float стеке. Т.е. вычисления будут производиться как в целых числах, так и в вещественных.

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

Если читать из памяти @ можно сразу в оба стека, то вот с записью непонятно - из какого стека записывать.
Как вариант: определённая область памяти, куда команда ! пришет не из целочисленного стека, а из float.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Трансляторы Си в Форт
СообщениеДобавлено: Ср мар 11, 2026 02:10 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 653
Откуда: Москва
Благодарил (а): 61 раз.
Поблагодарили: 30 раз.
tsdima писал(а):
То есть, поддержка float будет исключительно софтовая? Это же медленно!
Ну у нас же безрыбье :) Поэтому да, будет софтовая там, где нет аппаратной поддержки float (самодельные форт-процессоры или тот же Брус-16, 6502, ARM/Thumb начального уровня и много где еще) Ну а там, где float поддержан (x86 и продвинутые ARM/Cortex, ну или тот же Irbis Forth), возможны варианты. Формально моему транслятору Си-в-Форт для соответствия стандарту C89 не хватает функций в стиле K&R, битовых полей и как раз float. Функции K&R и битовые поля ни разу не пригодились, их не планирую делать даже в отдаленной перспективе. А вот float иногда нужен, пусть даже этот float будет медленным и/или ограниченным (bfloat16).

tsdima писал(а):
Другое дело, если арифметические команды будут выполнять действия параллельно в небольшом внутреннем float стеке. Т.е. вычисления будут производиться как в целых числах, так и в вещественных.

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

Если читать из памяти @ можно сразу в оба стека, то вот с записью непонятно - из какого стека записывать.
Как вариант: определённая область памяти, куда команда ! пришет не из целочисленного стека, а из float.
Может не совсем уловил мысль, но мне кажется, что от "@ сразу в оба стека" будет больше вреда, чем пользы. Почти наверняка придется следом удалять только что записанное из какого-то из двух стеков. Но вообще мысль интересная. Появились такие идеи процессоров:
- процессор, в котором есть команда для переключения между режимами вычислений int/float;
- процессор, в котором ячейки стека имеют тип float :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Трансляторы Си в Форт
СообщениеДобавлено: Ср мар 11, 2026 12:26 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 52
Благодарил (а): 2 раз.
Поблагодарили: 5 раз.
Total Vacuum писал(а):
Может не совсем уловил мысль, но мне кажется, что от "@ сразу в оба стека" будет больше вреда, чем пользы. Почти наверняка придется следом удалять только что записанное из какого-то из двух стеков.

Мысль в том, что float стек располагается внутри процессора, имеет небольшую глубину и используется только для вычисления float выражений. Загрузили данные из памяти, посчитали, и выгрузили результат обратно в память. При этом обычный стек тоже модифицируется (процессор не прекращает выполняет команды для целочисленного стека, он ведь не знает наш план о том, что мы в данный момент хотим float вычисления).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Трансляторы Си в Форт
СообщениеДобавлено: Ср мар 11, 2026 15:52 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 52
Благодарил (а): 2 раз.
Поблагодарили: 5 раз.
Total Vacuum писал(а):
- процессор, в котором есть команда для переключения между режимами вычислений int/float;
- процессор, в котором ячейки стека имеют тип float :)

Теоретически, можно сделать так, что бинарное представление целого числа (в определённом диапазоне, зависящим от размера мантиссы) будет совпадать с бинарным представлением float того-же числа (с порядком ноль). Надо будет только отрицательные целые числа представлять не в дополнительном коде, а с отдельным битом знака, как у float. И при нормализации float учесть этот факт, т.е. если целое укладывается в мантиссу, то приводить float к порядку равному нулю.


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

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


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

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


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

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