Forth
http://www.fforum.winglion.ru/

ef \ esoteric forth \
http://www.fforum.winglion.ru/viewtopic.php?f=40&t=3244
Страница 3 из 15

Автор:  Victor__v [ Чт авг 22, 2019 12:37 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Можно ещё сократить, добавив код архивации/разархивации :)

Автор:  Total Vacuum [ Чт авг 22, 2019 14:16 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Victor__v писал(а):
Можно ещё сократить, добавив код архивации/разархивации :)


:) Тоже была такая мысль. Взять и переделать, например, lzss в исполнении Haruhiko Okumura. Алгоритм декомпрессии там совсем короткий, много лет назад его на asm под ARM переписывали, а потом использовали в тех разработках, где надо было графику утрамбовать. :) Но вот алгоритм сжатия там достаточно громоздок, весь положительный эффект от сжатия нейтрализуется большим размером самого алгоритма сжатия :) Ну а какие-то простые алгоритмы (типа RLE) существенного выигрыша не дадут.

Автор:  KPG [ Чт авг 22, 2019 14:31 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Total Vacuum писал(а):
Victor__v писал(а):
Можно ещё сократить, добавив код архивации/разархивации :)


:) Тоже была такая мысль. Взять и переделать, например, lzss в исполнении Haruhiko Okumura. Алгоритм декомпрессии там совсем короткий, много лет назад его на asm под ARM переписывали, а потом использовали в тех разработках, где надо было графику утрамбовать. :) Но вот алгоритм сжатия там достаточно громоздок, весь положительный эффект от сжатия нейтрализуется большим размером самого алгоритма сжатия :) Ну а какие-то простые алгоритмы (типа RLE) существенного выигрыша не дадут.

А, смысл?
В KolibriOS, например, на уровне ядра используется алгоритм разжатия программ kpack, что позволяет уместить в размере 1.44 загрузочной дискеты много ПО (к слову SPF4 сжимается при этом до ~20Кб), но смысла сжатия кода для Windows совсем нет.
В рамках применения для контроллеров, ещё есть каккой то смысл.

P.S. Лучший способ использования сжатия в Windows, использовании штатной возможность сжатия папок и директорий.

Автор:  Total Vacuum [ Чт авг 29, 2019 15:24 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

KPG писал(а):
В KolibriOS, например, на уровне ядра используется алгоритм разжатия программ kpack, что позволяет уместить в размере 1.44 загрузочной дискеты много ПО (к слову SPF4 сжимается при этом до ~20Кб), но смысла сжатия кода для Windows совсем нет.

Побродил по форуму Колибри. Неприятно удивил тот факт, что там на порядок больше зарегистрированных пользователей, чем на нашем форуме.

Автор:  Victor__v [ Чт авг 29, 2019 17:24 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Ну так давайте напишем свою ОС и форумчанам из Колибри будет стыдно :)

Автор:  f02732 [ Чт авг 29, 2019 21:36 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Так почти все писали же, в форт же входит понятие ОС ;)

Автор:  KPG [ Пт авг 30, 2019 09:10 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Victor__v писал(а):
Ну так давайте напишем свою ОС и форумчанам из Колибри будет стыдно :)

Михаил уже встраивал в ядро КолибриОС SPF4, что уже достаточно близко к варианту ФортОС. :)
(а также он запускал код из проекта OpenFirmware и др. варианты)

P.S. Без возможности запуска широкого круга разнообразного ПО само ядро OC несколько бесполезно.
В этом плане даже проект ReactOS имеет больше возможностей.

Автор:  KPG [ Сб авг 31, 2019 19:54 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Интересно, что в
Sx-Forth
добавлены расширенные слова для переменных I и J (разыменования и сохранения и др.)

P.S. Интересно, а вне циклов счётчики циклов слова I и J какие то есть варианты их использования?
А, слова определения ассемблерного кода возможно использовать для переключения на исполнение процессорного кодa внутри esoteric forth слова с байт кодом на нативный код?

P.P.S. Никогда не понимал наличие слова Tuck в Форт-системах, но встретив
Код:
: *! TUCK @ * SWAP ! ;
(и подобного использования) понял, что ошибался :)
Ну и использование 2 / (сдвиг значения вправо, при дальнейшем контроле на 0) для использования операции сдвига значения для ограничения диапазона цикла (но это уже локальная оптимизация времени выполнения цикла в небольшом диапазоне цикла, и "оптимизаторы" могут этого не понять)

Автор:  Total Vacuum [ Сб авг 31, 2019 22:39 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

KPG писал(а):
Интересно, что в
Sx-Forth
добавлены расширенные слова для переменных I и J (разыменования и сохранения и др.)
P.S. Интересно, а вне циклов счётчики циклов слова I и J какие то есть варианты их использования?
Можно, наверное, использовать и вне цикла, если надо определить, при каком значении счетчика закончились итерации (т.е. если был выход из цикла по команде LEAVE). Но тут зависит от реализации. Если счетчики хранятся в стеке возвратов, то значения потеряются после завершения цикла. А если счетчики хранятся в регистрах, то вполне можно использовать.

KPG писал(а):
А, слова определения ассемблерного кода возможно использовать для переключения на исполнение процессорного кодa внутри esoteric forth слова с байт кодом на нативный код?
Не совсем понял вопрос. Обычный и ассемблерный код можно комбинировать внутри одного определения.
Например, определение
Код:
: a b c 1+ d 1- e ;
можно переписать так
Код:
: a b c `inc ax` d `dec ax` e ;
т.к. верхний элемент стека у нас в регистре ax

KPG писал(а):
P.P.S. Никогда не понимал наличие слова Tuck в Форт-системах, но встретив
Код:
: *! TUCK @ * SWAP ! ;
(и подобного использования) понял, что ошибался :)
Ну и использование 2 / (сдвиг значения вправо, при дальнейшем контроле на 0) для использования операции сдвига значения для ограничения диапазона цикла (но это уже локальная оптимизация времени выполнения цикла в небольшом диапазоне цикла, и "оптимизаторы" могут этого не понять)
Можно и без TUCK переписать:
Код:
: *! SWAP OVER @ * SWAP ! ;
проигрыш по скорости будет совсем незначительным, а можно и целиком на ассемблере слово *! реализовать. В Форте (лично для меня) есть много редко используемых слов (в т.ч. и TUCK), название которых ни о чем не говорит, приходится лезть в стандарт, чтобы посмотреть, что оно делает, какие параметры забирает из стека и что кладет обратно в качестве результата :) Это, повторюсь, мой личный ламерский опыт. Возможно, более профессиональные фортеры помнят все эти слова наизусть, поэтому у них таких проблем не возникает. :D

P.S. Заменил mov ax на mov al и "x" compile на 'x' compile, ну и несколько вещей по мелочи. Исполняемый файл весит меньше 1.5K: http://totalvacuum.ru/EF/00000004.zip

Автор:  Total Vacuum [ Сб авг 31, 2019 22:59 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Victor__v писал(а):
Ну так давайте напишем свою ОС и форумчанам из Колибри будет стыдно :)
По поводу ОС соглашусь с KPG. ОС без приложений не имеет практической ценности. Она сразу либо должна уметь запускать "чужие" (от другой ОСи) приложения, либо иметь богатый набор инструментов (компиляторов), позволяющий перекомпилировать многочисленные проекты с открытым исходым кодом. А если ОС будет привязана только к FORTH, то в таком случае желательно иметь примитивный и простой API, позволяющий быстро штамповать программы, но даже в этом случае наполнение такой ОСи приложениями будет происходить достаточно медленно. Сама идея легковесной ОС Колибри мне очень понравилась, но, мне кажется, что зря они привязались к x86 и fasm, что не позволяет портировать ее на другие платформы. Да и с компиляторами на борту самой Колибри как-то печально дело обстоит. Я так понял, что в основном для Колибри компилируют на компьютерах с установленной Window/Linux.

Автор:  f02732 [ Вс сен 01, 2019 02:51 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Total Vacuum писал(а):
KPG писал(а):
P.P.S. Никогда не понимал наличие слова Tuck в Форт-системах, но встретив
Код:
: *! TUCK @ * SWAP ! ;
(и подобного использования) понял, что ошибался :)
Ну и использование 2 / (сдвиг значения вправо, при дальнейшем контроле на 0) для использования операции сдвига значения для ограничения диапазона цикла (но это уже локальная оптимизация времени выполнения цикла в небольшом диапазоне цикла, и "оптимизаторы" могут этого не понять)
Можно и без TUCK переписать:
Код:
: *! SWAP OVER @ * SWAP ! ;

Дык, затем и нужен TUCK чтобы вместо 2-х мутаций стека была одна, восприниматся будет относительно легче. Хотя, конечно, при использовании локалсов было бы еще проще и нагляднее:
Код:
: *!  { n a-addr -- }  a-addr @ n * a-addr ! ;

Автор:  Victor__v [ Пн сен 02, 2019 13:18 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Total Vacuum писал(а):

Сама идея легковесной ОС Колибри мне очень понравилась, но, мне кажется, что зря они привязались к x86 и fasm, что не позволяет портировать ее на другие платформы. Да и с компиляторами на борту самой Колибри как-то печально дело обстоит. Я так понял, что в основном для Колибри компилируют на компьютерах с установленной Window/Linux.

Ага, для ОС написанной на ассемблере портируемость ну прям вообще нужна.
<<Сарказм>>

Автор:  Total Vacuum [ Пн сен 02, 2019 19:25 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Victor__v писал(а):
Ага, для ОС написанной на ассемблере портируемость ну прям вообще нужна.
<<Сарказм>>

Я имел ввиду, что "легковесная ОС, не имеющая привязки к ассемблеру" лучше, чем "легковесная ОС с жесткой привязкой к конкретному ассемблеру". Первую можно попытаться портировать куда-нибудь, портировать вторую будет как минимум затруднительно.
А вообще, коль скоро разговор про ОС зашел... Есть некий набор программ, наличие которых в любой операционной системе позволяет более-менее комфортно существовать как обычному пользователю, так и программисту. Перечислю то, что приходит на ум:
- а-ля Проводник, но лучше файловый менеджер;
- Архиватор;
- Программы для проигрывания аудио/видео;
- Просмотрщики pdf, картинок и прочего;
- Пара-тройка офисных программ;
- Простенький графический редактор;
- Компилятор Си;
- PHP, MySQL и т.д. (для веб-разработчиков);
- Браузер (= интерпретатор HTML+интерпретатор JavaScript);
- и т.д. и т.п.;
Что-то может быть лишнее, что-то забыл. Не суть. Но раз уж зашел разговор про Форт ОС, закономерно появляется следующий вопрос. Было ли когда-нибудь реализовано на Форте хоть что-то из вышеперечисленного? Если да, то шансы на успех Форт ОС есть. Если нет, то можно пойти по пути наименьшего сопротивления, сделав транслятор Си=>Форт, а все остальное реализовать (позаимствовать) на Си... Но все же хотелось бы иметь на борту Форт ОС софт, написанный исключительно на Форте.
Кстати, раньше был тренд "планшеты скоро отовсюду вытеснят настольные компьютеры/ноутбуки", но предсказания не сбылись. Андроид-планшеты так и остались безделушками для убивания времени. Не в последнюю очередь благодаря отсутствию нормальных средств для разработки: почти весь софт под Андроид по прежнему пишется на компьютерах с установленной Windows/Linux.

Автор:  Victor__v [ Вт сен 03, 2019 12:51 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

М-да, воспринять шутку на серьёзных щах это надо уметь :))

Автор:  KPG [ Ср сен 11, 2019 04:53 ]
Заголовок сообщения:  Re: ef \ esoteric forth \

Кстати по поводу ОС на ассемблере.

Есть такой проект делающийся на средства краудфандингa ZX-Spectrum Next
(спектрум совместимый компьютер на FPGA с наличием разных плюшек, как HDMI, SD, частоты процессора + 7, 14, 28 МГц ...)
в нём много софта исторического на ассемблере, так вот они в дизайне компьютера ещё предусмотрели возможность добавить ускоритель команд, графики ... на внешней шине на Raspberry Pi Zero (1Ггц, Mali, 512Кб)

Вот уже в данной Raspberry Pi Zero можно было бы задействовать функционал на ассемблерном Форт ядре
и частично наличие какого то популярного софта на Форт не так важно в рамках базового использования платы расширения
RPi в рамках экосистемы данного компьютера, но, наверное, с таким же успехом могла быть использована плата с Intel процессором и например KolibriOS.

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