| Forth https://fforum.winglion.ru/ |
|
| Nova Дневник разработчика https://fforum.winglion.ru/viewtopic.php?f=58&t=3227 |
Страница 15 из 15 |
| Автор: | Victor__v [ Ср апр 03, 2024 11:24 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Теперь осталось придумать зачем надо переусложнять систему на ровном месте) |
|
| Автор: | tsdima [ Ср апр 03, 2024 17:05 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Victor__v писал(а): В общем на фасме обошёлся двумя макросами перед вызовами: macro SKIP { MOV RSI, RSP SUB RSP, 15 SAR RSP, 4 SAL RSP, 4 SUB RSP, 32 } macro OFF { MOV RSP, RSI } Поскольку эти фрагменты теперь вызываются постоянно, то буду рад, если вы приведёте более быстрый код выравнивания, если вообще что-то есть быстрее сдвигов. macro SKIP { MOV RSI, RSP OR RSP, 15 SUB RSP, 32+15 } |
|
| Автор: | Victor__v [ Чт апр 04, 2024 11:08 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Заменил у себя. Спасибо. |
|
| Автор: | Total Vacuum [ Чт апр 04, 2024 14:19 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Ну тогда заодно и or esp,15 вместо or rsp,15, раз уж пошла такая пьянка |
|
| Автор: | tsdima [ Чт апр 04, 2024 14:23 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Точно. |
|
| Автор: | Victor__v [ Чт апр 04, 2024 16:25 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Total Vacuum писал(а): Ну тогда заодно и or esp,15 вместо or rsp,15, раз уж пошла такая пьянка Вах, экономия 1 байт) Можно ещё OR SP, 15 предложить, тогда) |
|
| Автор: | Total Vacuum [ Чт апр 04, 2024 20:41 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Victor__v писал(а): Можно ещё OR SP, 15 Да, но тут экономии не будет
|
|
| Автор: | Victor__v [ Пн янв 13, 2025 13:09 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Продолжаю продолжать пилить свой форт. Изменения в последней итерации: Добавлена управляющая конструкция IF-SETS: ... IF-SETS; Позволяет внутри напихивать много IF ... ELSE , а THEN скомпилируется при вызове IF-SETS;. Практически аналог структуры CASE, но ему не тождественен. Добавлены новые флаги слов: &CONST &STRUCT-ELEM &POSTCOMP и пр. Первые 2 являются одновременно метками типа слова (константа или элемент структуры) и специфическим подвидом инлайна. Флаг &POSTCOMP является признаком, что слово компилируется с помощью POSTPONE. Расширен и приведён по красоте компилятор (слово FFA-COMPILE,) за счёт двух пунктов выше. А ещё мне было скучно и я написал оптимизатор (да, очередной). Оптимизатор на этот раз использует парсер. Если есть совпадение, применяется оптимизирующая связка. Ничего необычно, тащемта. Просто уменьшает стекомахание в коде. А вот история написания оптимизатора тянет на демотиватор) Реализация оптимизатора представляет собой дерево, но с одним ограничением – у любого элемента в дереве должен быть оптимизирующий код. Иначе будет полный Hello word (вылет то есть). Как-то обыгрывать не стал. Ибо оптимизировать надо всё, только хардкор! Тесты проводились на одном новом слове H.S.CHANGE, которое подставляет вместо одной подстроки другую. Стартовый размер кода 950 байт, конечный размер 530. КМК, вполне неплохо. С учётом того, что это всё стекомахания различные. |
|
| Автор: | Victor__v [ Чт мар 06, 2025 17:15 ] |
| Заголовок сообщения: | Re: Nova Дневник разработчика |
Помимо эфемерных фортовских задач решил сделать библиотеку по поиску строки по маске. На практике мне это требуется время от времени, а каждый раз курить мануалы по регуляркам как-то задолбало. Поэтому решил сделать свой вариант с нарочито простейшим синтаксисом. Код: MASK| "<span" S ANY \ любые символы '>' C |MASK Возник затык в реализации. Тут прямо и просятся слова, которые могут быть объявлены позднее, чем они используются. А писать различные VECT и потом подфункции к ним уже задалбывает. Кто-то может скинуть существующие реализации аля виртуальных слов? Я и сам могу сделать такой функционал, просто не хочется городить велосипед. |
|
| Страница 15 из 15 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|