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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 98 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 03, 2009 04:17 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
WingLion писал(а):
Хотя, EXECUTE - это должен быть скорее CALL по адресу из стека данных.
а точно не JMP ? Обязательно возвращаться? Если да, то сложнее код патчить... :( И с реализацией структур управления будут трудности... :(

А также:
in4 писал(а):
OVER - обязательное
SWAP - необязательное
INV (dd2 dd1 --> dd2 ^dd1) - желательно в расширенном списке

SWAP по-другому работает со стеком. И возможны варианты, когда без него будет лучший дизайн софтпроца.
INV == NOT хотелось бы для полноты логики, раз уж есть AND и OR ...

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 03, 2009 08:46 
Не в сети
Administrator
Administrator
Аватара пользователя

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

in4 писал(а):
SWAP по-другому работает со стеком. И возможны варианты, когда без него будет лучший дизайн софтпроца.


Честно говоря, не понимаю, откуда такой "страх" перед SWAP. прекрасно он реализуется в софт-процессоре и без всяких проблем.

in4 писал(а):
INV == NOT хотелось бы для полноты логики, раз уж есть AND и OR ...


: INV -1 XOR ; - это для ленивых. А вообще, никто не запрещает делать в форт-процессоре дополнительные команды.

: NOT IF FALSE ELSE TRUE THEN ; - так логичнее, по моему, нежели NOT = INV

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


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

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

Исполнение токенов можно организовать по такой схеме
1. Состояние выборки токенов на управляющий стек.
2. Встретив токен EXEC переходим к их исполнению до исчерпания
управляющего стека.

Этот механизм решает по своему заморочки с LIT
Например выбрав:
LIT LIT EXEC
\ получаем на стеке данных 2-a литерала из программной памяти
\ После чего опять переходим к выборке команд до следующего EXEC
Можно предусмотреть пакетный или одиночный режим EXEC.
Необходимость использования управлящего стека, при этом, под вопросом.

Далее размышления привели к такому варианту:

Ввести отдельный бит в каждом токене ( IMMEDIATE) указывающий, что токен с ним
и ранее выбранные токены ( не имеющие признак IMMEDIATE ) необходимо исполнить.
Это может помочь в решении:
1. вышеозначенной проблемы с литералами.
2. указании cpu на возможность ( если она есть) включить сложный механизм
декодирования и выполнения цепочки токенов.
3. существует потенциальная возможность, при нехватке токенов, ввести
новую команду cpu (макро токен).

P.S. Интересны подводные камни при этом подходе.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 03, 2009 19:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Kopa писал(а):
Исполнение токенов можно организовать по такой схеме
1. Состояние выборки токенов на управляющий стек.
2. Встретив токен EXEC переходим к их исполнению до исчерпания
управляющего стека.

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


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

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


Возможность непосредственного выполнения токенов, при установленном бите IMMEDIATE
остаётся.

В рассмотренной, как идея, схеме команды имеют возможность попадания команд на стек управления как данные, а следующая команда может сама, как вариант, нужным способом их обработать или инициировать процесс выполнения, например, с верхнего элемента стека управления.
( Например: CMP LIT @ LIT @ LIT \ сравнение содержимого двух ячеек памяти )
Если в системе команд есть команды доступа и к этому стеку, то возможно появляются
ранее мало используемые схемы организации работы алгоритмов,
( стек похож в данном случае на кеш
а подкачкой этого кеша тоже можно из предложенной схемы частично управлять).

P.S. Практичен или нет данный подход мне трудно оценить, но идея мне нравится
на "подсознательном":) уровне. Лишним или нет будет ещё один стек в системе,
не знаю. Расход в 1бит на байт и при необходимости формировать литералы
предлагаемым способом один опкод на каждый литерал.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 04, 2009 09:03 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Kopa писал(а):
( Например: CMP LIT @ LIT @ LIT \ сравнение содержимого двух ячеек памяти )


К обратной польской записи выражений народ уже привык,
но против "обратной арабской записи программ" он, думаю, просто взбунтуется.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 04, 2009 10:03 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Kopa писал(а):
Возможность непосредственного выполнения токенов, при установленном бите IMMEDIATE
остаётся.

Решение полностью эквивалентно пересылке программы из одного места памяти в другое перед выполнением. И да, с помощью этого можно строить алгоритмы, а процессом перекладывания - управлять. Вот только почему ему на месте не лежится, и зачем надо перед выполнением поперекладывать из ячейки в ячейку?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 04, 2009 11:09 
Не в сети
Moderator
Moderator

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

Решение полностью эквивалентно пересылке программы из одного места памяти в другое перед выполнением. И да, с помощью этого можно строить алгоритмы, а процессом перекладывания - управлять. Вот только почему ему на месте не лежится, и зачем надо перед выполнением поперекладывать из ячейки в ячейку?


Может из-за того, если предположить, что необходимо использовать Гарвардскую архитектуру?
и непосредственный доступ к памяти программ не очень хорошее решение при изоляции
одного кода от другого в рамках одного ядра.

P.S. Другие аргументы ( возможно мало практичные ) в предыдущих топиках:)


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
WingLion писал(а):
Kopa писал(а):
( Например: CMP LIT @ LIT @ LIT \ сравнение содержимого двух ячеек памяти )


К обратной польской записи выражений народ уже привык,
но против "обратной арабской записи программ" он, думаю, просто взбунтуется.


А это уже транслятор может снять эти "выверты":)


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2120
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
По поводу несовместимости.
Несовместимость Форт-систем в основном закладывается на этапе реализации(эмуляции) Форт-ВМ на реальной машине.
Реализация(эмуляция) структуры памяти ФВМ, реализация(эмуляция) стеков ФВМ, реализация(эмуляция)
команд ФВМ - на любом из этих этапов может произойти закладка несовместимости в Форт-систему.
В стандарт необходимо изначально заложить ограничения, которые должны быть выполнены в конкретной реализации(эмуляции) ФВМ.

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
chess писал(а):
В стандарт необходимо изначально заложить ограничения, которые должны быть выполнены в конкретной реализации(эмуляции) ФВМ.

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

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Kopa писал(а):
Может из-за того, если предположить, что необходимо использовать Гарвардскую архитектуру?
и непосредственный доступ к памяти программ не очень хорошее решение при изоляции
одного кода от другого в рамках одного ядра.

Не вижу, как предложенное позволяет обойти эту проблему. Вернее, вижу, что никак. Если вместо того, чтобы положить картошку в кастрюлю, я предварительно покидаю ее в руках, а только потом положу, результат все равно будет одинаковый - картошка в кастрюле.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
mOleg писал(а):
кстати, насчет того, что мы забыли про гарвард... мы забыли и про другие модели памяти, все опять скатилось к только плоской памяти с возможно хардварными стеками 8( вобщем опять системный просчет...

Гарвардская архитектура тоже может быть плоской. И деление на фон-Нейман/гарвард абсолютно перпендикулярно плоской/сегментированной модели. В рамках спора с этим утверждением я хотел бы видеть RTL-представление, а не общие слова.


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

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

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

Хищник писал(а):
RTL-представление
что есть RTL ?

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
mOleg писал(а):
собственно речь о том, что надо начинать с различных моделей памяти, а Гарвард или нет это уже вторично.

Оно не вторично, а просто из другой области. Это способ доведения команды до ее декодера, и ничего более. С точки зрения электроники, линии, ответственные за номер сегмента, ничем не отличаются от линий, ответственных за смещение ячейки памяти в этом сегменте.
mOleg писал(а):
что есть RTL ?

Register Transfer Level. Я вот все думаю, когда же вместо рассуждений о возможных характеристиках процессора таки начнутся уточнения, как же он устроен? :) Мы с Winglion-ом на пару закрываем вопросы проектирования для обоих ведущих производителей ПЛИС... так нет, надо обязательно поспорить по пунктам, которые становятся очевидны разве что через несколько лет регулярной работы. Ну вперед... а я пока Proteus еще подрихтую :))


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

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


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

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


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

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