Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср апр 24, 2024 11:36

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 150 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 10  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 00:53 
Не в сети
Moderator
Moderator
Аватара пользователя

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

точнее добавление еще одного уровня обстракции (в смысле то, что пока что получилось)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 00:58 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
вопрос писал(а):
См. выше. Действительно, речь и идёт не о языке а о движке, который кушает условия (чего можно а чего нельзя в этом процессоре) в декларативном виде ("нельзя класть множитель в сегментный регистр") и алгоритм форта ("снять со стека значение") в императивном виде, одно подгоняет под другое.

Почему это нельзя класть множитель в сегментный регистр? :) (/me побежал писать на VHDL процессор, в котором можно :) )
Нельзя в данном процессоре (например). Ну, попробуйте умножить
imul cs, ip ; в пентиуме
В декларативной форме должны даваться ограничения конкретного процессора, тогда как алгоритм общего для всех форта - императивен (процедура)

Хищник писал(а):
вопрос писал(а):
Разумеется, эту машину нужно сначала создать, но алгоритм прост (сравнительно прост) ввиду простоты форта

Простота алгоритма с простотой Форте слабо связана. Надо же еще из описания понять, как именно оно делается, и возможно ли. Да еще сделать автоматически. За время разработки такого ассемблера появится вагон новых процессоров...
ассемблер каждого из которых сможет быть получен несложной модификацией метаассемблера...

Выделенное красным не понял

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 01:15 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Чтобы алгоритм понимал описания самого универсального вида (в том числе и такие, что mul cs, ip делать нельзя), он должен быть достаточно сложным. А, к примеру, если у нас есть регистр, который может делать mul и in/out, то как мы поймем, стоит ли использовать его для mul? В том же x86 операнд можно положить в edx (и ecx свободен для jecxz), или в ecx (edx может послужить адресом порта). И ква? Как понять, в какой именно регистр класть? Программист, пишущий примитив, сделает это интуитивно, если даст себе труд подумать над дальнейшим течением алгоритма.


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


Наподобие вот такого?...

Код:
: MB90F545 ( --> )
  ['] mb90_LIT    TO LIT>
  ['] mb90_->     TO ->
  ['] mb90_<-     TO <-
  ['] mb90_-->    TO -->
  ['] mb90_->>    TO ->>
  ['] mb90_@@>    TO @@>
  ['] mb90_-[     TO -[
  ['] mb90_]-     TO ]-
  ['] mb90_--[    TO --[
  ['] mb90_-[[    TO -[[
  ['] mb90_-{     TO -{
  ['] mb90_}-     TO }-
  ['] mb90_--{    TO --{
  ['] mb90_-{{    TO -{{
  ['] mb90_<->    TO <->
  ['] mb90_(+)    TO (+)
  ['] mb90_(-)    TO (-)
  ['] mb90_(*)    TO (*)
  ['] mb90_(&)    TO (&)
  ['] mb90_(|)    TO (|)
  ['] mb90_(~)    TO (~)
  ['] mb90_(<<)   TO (<<)
  ['] mb90_(>>)   TO (>>)
  ['] mb90_(=)    TO (=)
  ['] mb90_(>)    TO (>)
  ['] mb90_(<)    TO (<)
  ['] mb90_[!]    TO [!]
  ['] mb90_[@]    TO [@]
  ['] mb90_{!}    TO {!}
  ['] mb90_{@}    TO {@}

  ['] mb90_(JMP)  TO (JMP)
  ['] mb90_(?JMP) TO (?JMP)
  ['] mb90_(CALL) TO (CALL)
  ['] mb90_(RET)  TO (RET)
  ['] mb90_<MARK  TO <MARK
  ['] mb90_<RESOLVE TO <RESOLVE

  ['] mb90_STARTUP TO STARTUP
;


Неуниверсально оно... Либо слишком сложно, чтобы быть удобным...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 07:18 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
вопрос писал(а):
... Для тех, в которые вшит Форт уже метаассемблер..


Следует ли из этого, что метаассемблер EQU Forth ?

Приставка в слове мета для языка программирования означает возможность
пересоздать свой же код самостоятельно и возможности саморасширения.
а как это будет выглядеть в метаассемблере?

Т.к. возможности универсальных вещей применительно к конкретным условиям
ограничена, то придется виртуализировать дополнительные уровни метаассемблера.
Например оптимизацию на конкретный процессор делать свою или ее тоже
пытаться абстрагировать.

P.S. Ассемблер из простого понятия превратится в сложную систему программирования
с возможностями языков высокого уровня:)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 07:24 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Вот еще такое есть определение мета-языка

Мета язык

Язык научного исследования, средствами которого описываются и исследуются свойства другого языка (обычно называемого предметным). Часто говорят, что метаязык – «язык о языке». В частном случае, язык может являться своим же метаязыком - так, например, для описания русского языка можно использовать термины того же русского языка


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 08:49 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Дважды начинал обьяснять алгоритм и ... пришёл к выводу, что тут это делать не надо. Но он проще, чем кажется. Просто все примитивы форта сначала виртуально реализуются (один проход) затем анализируются на предмет, оставляют ли они после себя уникальные "следы" в состоянии процессора (всё тот же один проход) и если эти следы таковы, что модифицируют (влияют на ) работу других примитивов, то ищется реализация, которая не оказывает модифицирующего действия, скажем, занятость рессурсов предполагает или специальное их освобождение или использование другими примитивами других рессурсов.Это воторой проход.
Если реализация какого-либо примитива делает невозможной (неудобной) реализацию другого примитива, возвращаемся к реализации первого

Перебор с возвратом. Задача о 8 ферзях сложнее :) :shuffle;

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 08:58 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Уф, какой интеллектуальный форум, мне уже кажется, что легче реализовать, чем ответить всем :zombypc;

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 11:43 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
вопрос писал(а):
. Просто все примитивы форта сначала виртуально реализуются (один проход) затем анализируются на предмет, оставляют ли они после себя уникальные "следы" в состоянии процессора (всё тот же один проход) и если эти следы таковы, что модифицируют (влияют на ) работу других примитивов, то ищется реализация, которая не оказывает модифицирующего действия, скажем, занятость рессурсов предполагает или специальное их освобождение или использование другими примитивами других рессурсов.Это воторой проход.
Если реализация какого-либо примитива делает невозможной (неудобной) реализацию другого примитива, возвращаемся к реализации первого

Хмм... А почему бы не попробовать использовать для этого нейронную сеть?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 14:31 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
mOleg писал(а):
- повышение читаемости за счет более широкого использования макросов, например, вместо MOV EAX, [EBP] LEA ESP, 4 ESP -- dpop tos


Я тоже обычно создаю макросы dpop dpush.
Назначаю имена выбранным регистрам:

TOS - вершина стека данных
DSTK - указатель на второй элемент стека данных
UP - регистр потока

Для прямого/косвенного шитого кода:
IP - текущий адрес шитого кода

Чего еще?

Делать макросы для логики/арифметики особого смысла нет, т.к. применяются (как правило) однократно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 17:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
VoidVolker писал(а):
А почему бы не попробовать использовать для этого нейронную сеть?


oт Хомо Сапиенса! :)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 18:02 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
WingLion писал(а):
oт Хомо Сапиенса!

Угу, отрезать кусочек мозга и интегрировать его в форт-процессор. Во будет счастье всем - процессор будет сам себя программировать. :))
Ну а если серьезно, то думаю так: скормить сети возможные команды процессора, на выходе - команды метаассемблера, а сеть уже самостоятельно собирает из команд процессора разные варианты и комбинации команд, и пробует их в действии, пока не получит наиболее эффективные варианты. Или что-то около того, я пока только начинаю их изучать, так что еще подумаю, что же это такое у /me получилось :shock:.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 18:59 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Надо только помнить, что нейронная сеть не всесильна. И пррежде чем она начнет решать задачи на программирование, кто-то должен ее научить решать такие задачи, а значит, этот учитель должен сам решить много-много подобных задач, вплоть до умения решать ту которую хочет научить решать нейронную сеть.

p.s. 2+2=4 - обычно не решают, а зазубривают.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 21:17 
Не в сети
Аватара пользователя

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



p.s. 2+2=4 - обычно не решают, а зазубривают.

Да конечно, недостаточно просто создать нейронную сеть, надо ее еще и правильно обучить. Но и возможности нейро-сети(естественно хорошо обученной и с продумманной топологией для решения конкретной задачи) куда шире, чем просто набор макросов.
Хмм... А откуда еще два перевода строки?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 21:18 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Давно пора! ;)

Заодно в форуме будет наглядная демонстрация понятия "NP-полная задача" :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 30, 2007 21:34 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Mihail писал(а):
mOleg писал(а):- повышение читаемости за счет более широкого использования макросов, например, вместо MOV EAX, [EBP] LEA ESP, 4 ESP -- dpop tos



Я тоже обычно создаю макросы dpop dpush.

Назначаю имена выбранным регистрам:



TOS - вершина стека данных

DSTK - указатель на второй элемент стека данных

UP - регистр потока



Для прямого/косвенного шитого кода:

IP - текущий адрес шитого кода

Чего еще?

Делать макросы для логики/арифметики особого смысла нет, т.к. применяются (как правило) однократно.

оч. интересно.

А еще какие макросы стоит делать? у меня все-таки их побольше 8)
но вопрос в другом, можно ли заменить ассемблер таким псевдоасмом ( по идее все гораздо проще должно выйти ) и на сколько проще
получится реализовать оптимизатор, если он будет учитывать наличие псевдоасма?


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

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


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

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


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

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