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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср май 16, 2007 12:34 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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

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


in4 писал(а):
И еще вопрос (можно ответить и позже, но желательно ответить) чем лучше использовать несколько АЛУ (обычно использовали одно и через него все гоняли)?


Несколько АЛУ - это в общем-то просто громко звучит. АЛУ на стеке возвратов совсем мелкое (пара-тройка операций, и все). Нужно, опять же, чтобы ускорить исполнение некоторых критических по времени блочный операций.
Ведь, кроме пересылок с инкрементом адреса нужны пересылки и с декрементом и обработка счетчика пересылок, который по задумке и лежит на стеке возвратов под вторым адресом.

in4 писал(а):
Значит, надо выделять "общие" части и обязательно объяснять, что это "нужно всем"... Wink

Кстати, для того, чтобы это выделить, надо иметь "предложения всех" :) перед глазами. A пока видны только некие косые указания, что где-то там, еще что-то у кого-то есть. По такому указанию ничего "общего" выделить не удастся.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 16, 2007 13:35 
По-моему минимальный набор можно сделать таким:

Работа с памятью кода
jmp
if
call

ret
do
loop

Работа с памятью данных
!
@

Работа со стеком данных
Lit
dup
drop
swap

Математические операции
NAND (или NOR)

Работа с терминалом
Tin
Tout

Всего получилось 15 комманд.

Хотя все математические операции можно реализовать NAND'ом, придется вводит дополнительные
not
and
or
xor
=
+
-

А то я попробовал "+" с помощью NAND'а сделать и получилось 6500 тактов. :)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 16, 2007 13:54 
Не в сети
Administrator
Administrator
Аватара пользователя

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

http://www.msyst.ru/kf_3xx.htm :)


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

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

Традиционно - DATAWIDTH
WingLion писал(а):
последние три команды при отсутствии внешней памяти для стека
данных ничего не делают

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


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

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


Я думал это делать сразу железно. Программа лишь подает сигнал, что надо что-то делать со стеком, если надо, а железяка выполняет, не мешая программе работать дальше. А в железяк DEPTH (точнее StackPointer), разумеется, есть :)

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Ух, опять вечер, сумасшедший день на работе, не засну ли я за компьютером? :D
Ещё с прошлого для не высказал всё, что хотел, однако задам только один вопрос: (сил нет)

Желание делать что-то ИЗ ВМ ДЛЯ помещения в железо как влияет на совместимость с "непрограммируемым" железом (теми же pentium-совместимыми процессорами)?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт май 17, 2007 00:51 
Не должно совсем никак влиять.
В pentiume программа исполняется на ВМ, а в железе команды ВМ реализованы "железно".


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 26, 2007 17:14 
Не в сети

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

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


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

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

Разбор синтаксиса пишется на ВМ.
вопрос писал(а):
Где вообще прочесть о разборе синтаксиса форт-выражений

Баранов, Ноздрунов
Броуди


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Разбор синтаксиса пишется на ВМ.
То есть "поверх".
Т.е. синтаксис форт-выражений "не волнует " ВМ.
А собственный её синтаксис ?
как это вообще должно выглядеть? Код для ВМ - это просто байты (4-битный с префиксами) или это исходник типа ассемблерного? Ведь ВМ - интерпретатор.

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
Т.е. синтаксис форт-выражений "не волнует " ВМ.
А собственный её синтаксис ?

У нее обычные коды, в данном случае 4-битные. Каждый код запускает определенную подпрограмму, выполняющую действия, которые мы ассоциировали с таким кодом. Это не то чтобы синтаксис в его чистом виде. У процессора же нет никакого синтаксиса, когда ему на шину данных подается код.
вопрос писал(а):
как это вообще должно выглядеть? Код для ВМ - это просто байты (4-битный с префиксами) или это исходник типа ассемблерного?

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Просто байты. Байты скармливаются по очереди некоторой программе, в которой стоит большой оператор case. Который и запускает по очереди подпрограммы.
Но как это выглядит для человека, создающего эти байты (есть ассемблер?)

Я грешным делом подумал, что ВМ в данном случае - это Форт, в котором в первую очередь реализованы некоторые слова в машинном коде остальные же предполагается реализовыввать, но сама форт-машина уже минимально присутствует (механизм определений и т.п.). :o

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
Но как это выглядит для человека, создающего эти байты (есть ассемблер?)

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

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
На Форте такую машину написать действительно проще, именно благодаря наличию встроенного механизма определений.
Так, может, встроить его в ВМ?

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
Так, может, встроить его в ВМ?

Мне кажется, имеет место смешение понятий. Во-первых, WingLion на Форте ВМ и пишет. Так что у него Форт есть, и он может пользоваться всеми приятностями. Во-вторых, если речь идет о встраивании Форт-машины куда-то вообще, то тут тоже много вариантов. начиная (а если хронологически - то заканчивая ;) Quark-ом. :)


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

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


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

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


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

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