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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Пт сен 08, 2017 17:50 
Ethereal писал(а):
По поводу обвеса - я же сказал "сравниваем только приращения".
А кто Вам запретит в коде библиотеки, работающей со строками, сделать ф-ию strcpy()? Более того, если программа обозрима, то там будет использована ф-ия, для которой не понадобятся всякие SWAP-ы. Вот и сравнивайте "обвес": Ваши 9 слов и "call".
Если хотите честный эксперимент, то пересчитайте общую длину ассемблерной реализации всех мест Вашей "смарт-программы", где используется CMOVE (заменив очевидное использование cpystr() на ее вызов), и добавьте длину кода этой ф-ии. Будет намного меньше общей суммы Ваших "обвесов" и без учета кода CMOVE.
Что мы имеем в принципе: язык ассемблера, в котором мы можем "гранулировать" код по потребности, и FORTH, где "грануляция" нам навязана изначально. Т.е. мы, конечно, можем выиграть на "родных" для FORTH задачах (где пригодятся наши возможности работать с ПОТОКОМ, ЗНАЧЕНИЕМ, СТЕКОМ и СЛОВАРЕМ), но, в общем случае, всегда будем проигрывать.

Ethereal писал(а):
А в вашем примере 1 J LSHIFT в приращении даст цикл, а Форт не даст. SHL рег,CL такое только в персоналке есть.
Где в моем коде цикл? Или сдвиг на переменную величину?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Пт сен 08, 2017 21:14 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2109
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 36 раз.
В СССР ДССП называли "рабочей смесью". Может быть это название и не совсем подходит, но по отношению к тому как я программировал свои контроллеры самое то. Сначала вручную урезал набор подпрограмм фортсистемы для определенного MK под задачу, а потом надоело, и сделал это урезание автоматическим, путем введения многопроходной (3 прохода) трансляции программ. Где-то не надо обмена по последовательным портам, где-то не надо eprom, где-то не надо внешнего ОЗУ и/или ПЗУ и т.п. Поэтому ФортСистема(рабочая смесь) изначально ничего не отъедала.

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

_________________
С уважением, chess


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6341
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
chess писал(а):
По теме - искать доказательства, того, что на форте получаются более "плотные" программы, чем на чем-то еще - нецелесообразно, так как, во первых, плотнее чем маш.код все равно не получится,


Машинный код:
call addr1
call addr2
call addr3

ШК:
addr1
addr2
addr3

Добавляется, правда, адресный интерпретатор, но в данном случае имеем две "условно прямые". Одна Kx, другая kx + b, где K > k. Они явно пересекаются.

chess писал(а):
а в третьих - стоимость кристаллов падает и весовой коэффициент критерия "плотность кода ПО" в функции качества системы стремится сегодня к нулю.

Ничего подобного, это не универсальное правило. Всегда есть "маленькие кристаллы", "средние кристаллы" и "большие кристаллы". Даже 1024 слова памяти программ бывает. При таком размере, конечно, надо еще думать насчет ШК, тем более что память программ должна быть доступна для чтения, но в целом огромный пласт малых-средних устройств вполне заметит преимущества от компактной программы, даже в ущерб производительности.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Пт сен 08, 2017 23:49 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2109
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 36 раз.
Hishnik писал(а):
Машинный код:
call addr1
call addr2
call addr3

ШК:
addr1
addr2
addr3


ШК существовал до форта и используется вне форта сейчас.

Hishnik писал(а):
Ничего подобного, это не универсальное правило.

Имеется ввиду стоимость кристалла относительно стоимости всей системы.

_________________
С уважением, chess


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6341
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
chess писал(а):
ШК существовал до форта и используется вне форта сейчас.

Важнее, что Форт и такую технологию допускает. А еще важно, что 0-операндная машина тоже вносит свой вклад в сокращение размера кода. И что еще будем пробовать? Java? :)

chess писал(а):
Имеется ввиду стоимость кристалла относительно стоимости всей системы.

Хоть так, хоть так. Бывает задача "вписать BOM в 2$".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Сб сен 09, 2017 04:38 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 519
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
gudleifr писал(а):
А кто Вам запретит в коде библиотеки, работающей со строками, сделать ф-ию strcpy()? Более того, если программа обозрима, то там будет использована ф-ия, для которой не понадобятся всякие SWAP-ы. Вот и сравнивайте "обвес": Ваши 9 слов и "call
Хорошо, давай с strcpy или для пущей корректности с ассемблерным аналогом CMOVE с передачей параметров через регистры, а не стек, есс-но. Получается
Код:
   ldi   YL, low(адрес)
   ldi   YH, high(адрес)
   ld   r24, Y+
   ldi   r25, 0
   movw   ZH:ZL, YH:YL
   rcall   CMOVE   ;Копирование r25:r24 байт из YH:YL в ZH:ZL
   dec   r24   ;Предположим подпрограмма не портит r25:r24
   dec   r24   ;Требуемый результат на выходе помимо копирования
   ret
9 слов. Ноздря в ноздрю с Фортом. Итого опять получается, что Форт или не длиннее или короче.
gudleifr писал(а):
Где в моем коде цикл? Или сдвиг на переменную величину?
1 J LSHIFT это сдвиг единицы на переменную величину. За не имением нужного опкода делается циклом.
gudleifr писал(а):
язык ассемблера, в котором мы можем "гранулировать" код по потребности, и FORTH, где "грануляция" нам навязана изначально
Я упоминал в разговоре Форт для AVR, где грануляция ассемблерного и фортовского одинакова. Одно слово шитого кода - одна (а иногда, правда редко, и половина) ассемблерной команды. И это-ж не спроста я имел ввиду именно эту систему.
gudleifr писал(а):
Если хотите честный эксперимент, то пересчитайте общую длину ассемблерной реализации всех мест
Для чего этим экспериментом время терять ? Вас убедить ? Не, ради этого я лишний раз с постели не встану. А сам я уже увидел. что оно так.


Последний раз редактировалось Ethereal Сб сен 09, 2017 05:45, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Сб сен 09, 2017 05:07 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 519
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
chess писал(а):
сделал это урезание автоматическим, путем введения многопроходной (3 прохода) трансляции программ.

Поэтому ФортСистема(рабочая смесь) изначально ничего не отъедала.
Ну так великолепный подход при кросс-трансляции. И я думал поначалу сделать также. Но потом взял и сделал шизовую систему без кросс-трансляции. К которой можно подключаться терминалом по RS-232 и вручную системой управлять, а если надо, то скармливать ей исходник - она сама себя дошьет. AVR сам свою флеш дошивает, то есть компилирует в себя сама целевая система. В частном случае этой системой оказалась даже смарт-карта. Не знаю почему сделал именно так, наверное потому, что офигенно чумово выглядит. Особенно со смарт-картой, потому-что компилятор находится на самой смарт-карте, а это что-то с чем-то. Вообще, когда мне приходит в голову всякая шиза я ее тут-же реализую. Чтобы шиза ожила.

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

Дело было во времена Win-98SE + XP. Шиза была такая.
К виндозной программе добавляется DOS-овский stub.
Один раз я взял и написал одно и то-же консольное, но полноэкранное
вроде Norton Commander-а, приложение на SPF 2.x под DOS и абсолютно
то-же самое на SPF 3.x под Windows. Приложение обеспечивало удобную
работу с некоторым агрегатом через RS-232. При этом досовский вариант
работал с COM-портами через порты ввода-вывода, а виндозный через
вызовы Windows-API. А потом взял и вмонтировал досовский вариант в
качестве stub в виндозный. Получилась программа которую все равно
где запускать. И увидел я, что это шизово и хорошо.

А потом пришла в голову мысль, а как сделать так, чтобы это были
не две разные программы, вложенные друг в друга матрешкой, в
которых задача закодирана шитым кодом в двух разных экземплярах,
а чтобы шитый код для обоих варинтов был общий ? Просто в качестве
реализации красивой, шизовой идеи. И подумал я, что если виндозная
программа будет 16-разрядной NE-Executable, то это будет вполне реально.
Более того у большей части слов их виндозная и досовская реализации нативным
кодом будут совпадать. И только совсем малая часть нативной реализации
слов должна будет ветвиться - где я запушена ? в ДОС-е или в Винде ?
И начал даже наметку такого досо-виндозного форта рисовать. И все
складывалось везде на редкость удачно, но разбилось об одну единственную
фигню - NE-приложения не знают что такое консоль. Они работают только с
окнами и больше ни с чем. Я даже книжку по внутренностиям Win-3.x
скачал, но нигде не нашел упоминания о связи NE-приложения хоть с
какой-то консолью. В Win 3.x не было консольных виндозных приложений.
Роль таковых в ней играли досовские. И ни досовиндозный Форт не нарисовать -
ему консоль нужна и даже одно приложение не сделать - если рисовать его
виндозный вариант оконным, то виндозный и досовский варианты шитого
кода перестанут иметь общее семантически. Вот ведь блин.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Сб сен 09, 2017 10:06 
Ethereal писал(а):
Итого опять получается, что Форт или не длиннее или короче.
Посмотрите внимательно на код. Основные ассемблерные потери места - на загрузку параметров в нужные ф-ии регистры. Основные же потери FORTH - на перестановки стека (и избыточные иеерархии). Первых часто можно избежать, приписав некоторым регистрам "специальные значения" или, в связках ф-ий, сразу грузить "куда надо". Потери же "на стек" неизбежны.

Ethereal писал(а):
1 J LSHIFT это сдвиг единицы на переменную величину. За не имением нужного опкода делается циклом.
Эта операция в ассемблерном коде не нужна. Она не очень-то нужна и в FORTH-овском, здесь служит примером платы за удобство FORTH-писания.

Ethereal писал(а):
грануляция ассемблерного и фортовского одинакова.
Грануляцией я обозвал размер подпрограм. В языке ассемблера он произвольный: хочу, каждый чих оформляю, хочу, на большие куски делю. В FORTH - только заранее отмеренные минимальные кирпичики. Отсюда - и потери на "избыточные иерархии".


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Сб сен 09, 2017 11:12 
Ethereal писал(а):
Щас расскажу про еще одну шизу, чтобы сменить тему разговора...
Зачем менять тему на другую, в которой, судя по вбросу, Вы разбираетесь еще хуже, чем в предыдущей? Тем более, опять не относящейся к "Самозапросам на форт-софт".


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Сб сен 09, 2017 14:49 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 843
Благодарил (а): 3 раз.
Поблагодарили: 32 раз.
gudleifr писал(а):
Ethereal писал(а):
Щас расскажу про еще одну шизу, чтобы сменить тему разговора...
Зачем менять тему на другую, в которой, судя по вбросу, Вы разбираетесь еще хуже, чем в предыдущей? Тем более, опять не относящейся к "Самозапросам на форт-софт".

Снобизм. опять снобизм :)

P.S. Основное сжатие Форт программ происходит из того факта, что СЛОВА сами завботятся о входных и выходных своих обрабатываемых параметрах.
а так как подготовка параметров для этих слов происходит часто достаточно высокоуровневыми словами, то отсюда и основной профит.
Цепочки слов, при использовании стека, достаточно оптимально выстраиваются для того, чтобы не манипулировать данными на нём без необходимости.
+ имеется возможность "кэширования" данных с использованием стека, что в регистровой архитектуре почти невозможно (не управляется программистом)
а т.к. "наверченность" классических языков достаточно большая (и удалённость от железа), то этот момент тоже не делает их более компактными при исполнении.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Сб сен 09, 2017 15:34 
KPG писал(а):
Основное сжатие Форт программ происходит из того факта, что СЛОВА сами завботятся о входных и выходных своих обрабатываемых параметрах.


: INS_44 ( -- u ) LENGTH COUNT SWAP 2DUP CHAR+ -ROT CMOVE CELL- ;

Ага, видим. Половина кода - "забота о параметрах".


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Сб сен 09, 2017 20:00 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 519
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
gudleifr писал(а):
Ага, видим. Половина кода - "забота о параметрах".
Занимающая размер 3-х ассемблерных команд. Но на ассемблере столько их будет ? Учитывая узкие места, такие как наличие аккамулятора или всего одного регистра-указателя у PIC и 6805 и трех у AVR огромное количество ассемблерного "клея" будет уходить на сохранение и восстановление старых значений регистров. А в Форте стек организует этот вопрос автоматически.

Вообще говоря, разные архитектуры должны уже самой своей организацией создавать разный процент избыточности. Как его оценить ? Думаю субъективной, но верной оценкой будет следующая : Пусть некто написал код с первой попытки. Насколько он вышел близким к кратчайшему ? Иначе говоря как долго можно этот код по размеру ужимать до тех пока возможностей его ужать уже не будет видно ? Ужимать не алгоритмически, а кодированием
Худшим в этом отношении будет PIC. Такое чувство, что код для него можно уминать до бесконечности и жмется он не на проценты, а в разы. На нем просто не реально сразу написать что-то близкое к самому короткому.
Лучшим - PDP-11 , где сразу кодируется то, что короче уже не может быть.
Остальные варианты промежуточные.
А что будет если шитым кодом, где каждое слово длиной в ассемблерную команду, привести архитектуру, например, к системе команд, подобной PDP-11 ? Да тут просто обязано на практике выйти сжатие. Не в теории, но на практике. Потому-что человек пишет не так, как это теоретически наилучшим образом возможно, а так как пишет человек. И Форт, как система команд, получше многих однокристалок будет в указанном отношении.
Второй критерий процента избыточности, проистекающего от самой архитектуры - это то, о чем ты думаешь, когда кодируешь алгоритм. В PDP-11 ты думаешь именно о самом алгоритме. А у PIC думаешь в первую голову о 37-и кирпичиках из которых складываешь код. Алгоритм, при этом, находится далеко на заднем плане сознания. И опять к каким эффектам приведет смена системы команд, а ведь фортизация - это в каком-то смысле смена системы команд ?
gudleifr писал(а):
судя по вбросу, Вы разбираетесь еще хуже
По какому вбросу ? Вброс делается с какой-то целью. Ну и какая тут может быть цель ? Просто захотелось рассказать. В плане генерации идей по одной штуке на дню и разбрасывания их во все стороны. Вы любите таким заниматься ?
А в плане способности разбираться, то в ассемблерах, самых, что ни на есть разных архитектур, я как раз разбираюсь, хотя бы по факту наличия опыта. А Вас в их отношении отличает очень удивительное "не знать, но мнение все равно иметь". Ну вот это, что вот было такое ?
gudleifr писал(а):
Честно говоря, мне кажется, что Вы либо плохо читали документацию на все эти эзотерические системы
То есть не знаю, руками не щупал, но все равно кажется. Снобизм+верхоглядство - такой получается коктейль.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Сб сен 09, 2017 22:16 
Ethereal писал(а):
...

Бисер кончился.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Ср окт 18, 2017 14:39 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 564
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
У фотошопа есть com-интерфейс или что-то подобное?
Хочу с форта снять несколько рутинных операций по сохранению

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Самозапросы на форт-софт
СообщениеДобавлено: Вт дек 26, 2017 09:56 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 843
Благодарил (а): 3 раз.
Поблагодарили: 32 раз.
Сообщение c форума balancera от 18.10.2017 от mak44 из топика
Что не хватает Форту?

Цитата:
Технико, экономическую проблему Форта решил
Но проблема не столько техническая, сколько историческая и идеологическая.
Если, система пойдёт, для Форта это будет спасением.
Но не думаю, что Форты будут первыми, кто этой системой интересуются (слишком умные).
Нужно найти тех, кто выложит файлы на продажу, не особо задумываясь, зачем они могут кому-то понадобится.


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

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


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

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


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

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