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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 117 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Сб июн 06, 2015 09:35 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
mgw писал(а):
По классическому варианту слово CONTEXT должно показывать на список (цепочку) слов в словаре. При таком подходе, поиск при самом неудачном варианте будет перебирать все слова в словаре.

Классическим это не назвал бы - скорее самой простой реализацией.

Более распространено хэширование. И уже качество выбора хэш-функции и количество тред определяет количество просматриваемых слов. Никто не мешает "прикрутить" сбалансированное бинарное дерево(хотя еще ни разу не видел реализации
mgw писал(а):
Сейчас я сделал так: CONTEXT указывает на массив CELL в количестве 256 штук.
) для поиска в словаре, тогда поиск вообще будет мгновенный.
В плане оптимизации поиска есть вариант предварительного очищения контекста от дублей, т.е., чтоб не искать в одном словаре по нескольку раз.

mgw писал(а):
Сейчас я сделал так: CONTEXT указывает на массив CELL в количестве 256 штук

самый примитивный вариант хэширования и самый неудачный 8)
хэширование в форте

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Вс июн 07, 2015 00:05 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
mOleg писал(а):
Никто не мешает "прикрутить" сбалансированное бинарное дерево(хотя еще ни разу не видел реализации) для поиска в словаре, тогда поиск вообще будет мгновенный.

Делал. Да, ускорение компиляции примерно раз в 17-20 что ли получилось, точно уже не помню. Ощутимый практический смысл на исходниках в десятки-сотни мегабайт и более и на объемах словаря примерно ~10-100 миллионов записей и при расходе памяти от ~4-х гигабайт. Опять же - все числа примерные, т.к. точно не помню что там получилось в результате тестов.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Пн июн 08, 2015 20:44 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.

M выделил разговор за жизнь в отдельную ветку


_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Пн июн 08, 2015 20:52 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Ethereal писал(а):
SMUDGE - плохая идея. Нужно просто добавлять имя в два этапа. CREATE расщепить на две половины. При исполнении ":" выполнить первую половину CREATE и в ней указатель на новое имя скопировать в некую переменную LAST. А по ";" выполнить вторую половину CREATE - скопировать содержимое LAST по адресу CURRENT @ . Т.е. добавить имя к словарю только при исполнении ";" . При этом слово LATEST должно возвращать содержимое LAST . И SMUDGE окажеся не нужна.

заметил ваш коментарий, и хочу добавить,
что собирать слово имеет смысл во временный буфер,
копировать же на его родное место даже не по ; а по началу создания следующего определения, т.е. по CREATE. При этом можно не просто тупо копировать, а делать оптимизацию при этом.
+ы у такого подхода в следующем:
- сложнее запортить уже скомпилированные данные, т.е. не будет прокатывать -10 ALLOT и т.п. бяки
- при ошибке не нужно освобождать память
- возможна оптимизация
-ы, как всегда, усложнение, необходимо править адреса, необходимо как-то отлавливать трюки и т.п.
имхо

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Пн июн 08, 2015 21:24 
mOleg писал(а):
выделил разговор за жизнь ...
Упрощу Вам жизнь. В дальнейшем буду удалять все свои посты в темах, где Вы появляетесь.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Пн июн 08, 2015 22:31 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
mOleg писал(а):
- при ошибке не нужно освобождать память
- возможна оптимизация
Это сильные плюсы. Меня когда-то огорчило, что от неудачного определения в пямяти остаются "развалины" и красивого решения в рамках "классики" против этого не видать.
mOleg писал(а):
что собирать слово имеет смысл во временный буфер,
Но HERE это уже сам по себе временный буфер. Так-что и буфера не надо. Просто в случае неудачного определения откатывать HERE назад (запоминать старое HERE можно при исполнении ":" ) и не менять CURRENT. Только в голову лезет делать это при исполнении ";". В чем преимущество делать это при следуюшем CREATE я недопонял.

-10 ALLOT как бы иногда нужны. Например, ";" всегда компилирует EXIT, но бывают определения в которых этот EXIT никогда не будет исполняться. Типа ... QUIT ; или ... TRUE THROW ; . Я тогда делаю что-то типа CELL NEGATE ALLOT и вообще, ограничивать программиста в возможностях не по фортовски.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Вт июн 09, 2015 05:39 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Ethereal писал(а):
Но HERE это уже сам по себе временный буфер. Так-что и буфера не надо.

нет, не буфер таки, а первый свободный адрес в пространстве кода и\или данных, и все, что ниже него по сути не защищено.

Ethereal писал(а):
Только в голову лезет делать это при исполнении ";". В чем преимущество делать это при следуюшем CREATE я недопонял.

дело в том, что совсем не очевидно, что определение заканчивается ";", вполне возможны модификаторы( вы же приводили пример с удалением завершающего ret), и быть уверенным, что уже ничего не будет меняться можно только в момент создания нового определения.

Ethereal писал(а):
-10 ALLOT как бы иногда нужны.

Да, пожалуйста!, только для текущего определения, а не для предыдущего. Смысл, таки, в этом.

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Вт июн 09, 2015 17:10 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
gudleifr писал(а):
Упрощу Вам жизнь. В дальнейшем буду удалять все свои посты в темах, где Вы появляетесь.

Все проще, достаточно придерживаться заявленной темы обсуждения.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Чт июн 11, 2015 01:02 
Не в сети
Administrator
Administrator
Аватара пользователя

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

А сколько места отдать под буфер? Получается еще одна структура памяти, либо с неконтролируемыми границами, либо с сообщением "у вас мало места во временном буфере" в самый неподходящий момент.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Чт июн 11, 2015 04:58 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
А сколько места отдать под буфер?

а это проблема?
Вообще, тут надо уточнять, при каких условиях.
На обычном PC хоть мегабайт, готь гиг можно,
хотя я бы ограничился принципиально(из редкостной вредности характера) 64 токенами ;)
(чтоб низзя было написать длинное определение).

Hishnik писал(а):
Получается еще одна структура памяти, либо с неконтролируемыми границами, либо с сообщением "у вас мало места во временном буфере" в самый неподходящий момент.

Так память для того и есть, чтоб ею пользоваться.
Сообщение должно быть следующим: "урезайте осетра!".
Если серьезно, то проблемы не вижу, можно и в память, отведенную под код не влезть, и увидеть (если система б\м заботится о контроле выхода за границы памяти) сообщение о нехватке памяти в пространстве кода(и данных).

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Чт июн 11, 2015 13:33 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
mOleg писал(а):
Hishnik писал(а):
А сколько места отдать под буфер?

а это проблема?
На форуме же есть раздел "Форт для микроконтроллеров"
mOleg писал(а):
Так память для того и есть, чтоб ею пользоваться.
Только ее типично 1 килобайт ОЗУ и это на "жирненьких" чипах.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Чт июн 11, 2015 13:48 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Это еще одна "спотолочная" константа. Вот уже диапазон от 64 токенов до гигабайта. Почему только 64? И почему гигабайт? Сложное математическое выражение, которое при отладке будет колебаться от 60 до 70 токенов, сразу выявит раздражающую проблему. Одним движением поставить "мегабайт, потому что это много, гораздо больше, чем нужно" - это ввести в систему еще одну странную структуру, которая вроде бы никому не мешает... но сколько там еще структур, которые никому не мешают?
mOleg писал(а):
можно и в память, отведенную под код не влезть, и увидеть (если система б\м заботится о контроле выхода за границы памяти) сообщение о нехватке памяти в пространстве кода(и данных).

Да, можно. Только это один из основных и довольно хорошо понимаемый параметр. Памяти может и просто в компьютере не хватить, с этим уж ничего не поделать. Однако хуже, когда на протяжении разработки начинают периодически вылетать ошибки вида "у вас не хватает места вот под эту временную структуру", " у вас не хватает места под литерал", "у вас не хватает хэндлов словарей".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Чт июн 11, 2015 19:50 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
Почему только 64? И почему гигабайт?

а потому что не проблема ни разу. Вариантов разрешения куча, а сложности реализации совсем в другом месте.

Hishnik писал(а):
Да, можно. Только

Имхо, тут лишь в качество документации все упирается.

Ethereal писал(а):
На форуме же есть раздел "Форт для микроконтроллеров"

так это не подходит для микроконтроллера (маленького), а, вот, для связки контроллер + PC уже вкусно выглядит. Т.к. буфер этот может быть как раз на PC, а в контроллер будет копироваться уже оптимизированный вариант.

Ethereal писал(а):
Только ее типично 1 килобайт ОЗУ и это на "жирненьких" чипах.

собственно, ответ выше уже дан.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Пт июн 12, 2015 00:21 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Сложность тут исключительно в том, что при отсутствии четко заявленной концепции продукта он начинает "расползаться". Как в анекдоте - "новые вагоны быстрые, удобные и бесшумные. Одни быстрые, другие удобные, третьи бесшумные". Так и тут получается - слова Форта быстрые, надежные, понятные и компактные... :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth на inline asm. Это реально?
СообщениеДобавлено: Вт июн 16, 2015 21:01 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
Сложность тут исключительно в том, что при отсутствии четко заявленной концепции продукта он начинает "расползаться".

Ежели честно, ничего не понял 8(
Заявлена не концепция, а идея, в чем-то спорная, в чем-то проблемная, реализации пока нет.
Обсуждать можно многое, в том числе размер буфера, отводимого под определение, только параметр таки третьестепенный и легко настраиваемый.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

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


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

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


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

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