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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 98 ]  На страницу 1, 2, 3, 4, 5 ... 7  След.
Автор Сообщение
 Заголовок сообщения: Хард-подход к стандарту на Форт
СообщениеДобавлено: Сб янв 31, 2009 09:44 
Не в сети
Аватара пользователя

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

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


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

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

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

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


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

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


Жаль, что с такой постановкой мало кто согласится, но я был бы за однозначно!

chess писал(а):
Сразу поэтому можно отбросить часть слов форт-системы, которые сейчас принято помещать в ядро(например MOVE).


Выкидывать MOVE из уже существующей реализации? - Это как-то неправильно все же.
Взгляните на старые процессоры.
Z80 - имеет команды LDIR и LDDR, которые фактически являются аналогами MOVE и <MOVE.
x86 имеет префикс REP: реализующий повтор для команд пересылки блоков данных и заполнения блоков.

И почему Форт-Процессор должен лишаться подобной удобной конструкции? Потому что "якобы сложно"?
Так ведь совсем не сложно же!


chess писал(а):
Тут только надо определиться с набором инструкций этого форт-процессора


С этим, как выясняется, есть "щукораколебедевая проблема".
Уже куча тем на форуме про "минимальные наборы" для форт-процессоров.

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


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


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


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

chess писал(а):
По идее более правильно перейти от фон-Неймановской архитектуры к Гарвардской,
либо вести два варианта одновременно.

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

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


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

Зарегистрирован: Вт ноя 06, 2007 21:23
Сообщения: 227
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
Ремарка: Я думаю команды сложения тоже можно удалить ;) ведь есть исключающие или


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

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

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


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

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1255
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
WingLion писал(а):
Жаль, что с такой постановкой мало кто согласится

WingLion писал(а):
Если же копнуть еще глубже, то надо думать и про системы ввода/вывода, ибо без них и форт не форт,
и получится, что изначально надо целый форт-компьютер придумать.(Опять же, лично я не против, но за будет мало кто, так мне кажется.)

Я уже за! :)

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


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

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

почему же?
в моем видении это как раз "первый уровень языка" раздел: 5.1 - Базовый обязательный набор примитивов
но на этот уровень нет смысла выносить все возможные слова, реализуемые в коде, потому что можно скатиться к WORD в примитиве проца, и пр.

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


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

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

Я вот, уже "скатился" до MOVE и ничуть не жалею.

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

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6408
Благодарил (а): 14 раз.
Поблагодарили: 100 раз.
WingLion писал(а):
И сколько времени будем бодаться на тему, какой набор примитивов базовый и обязательный?

А чего бодаться-то? Появился форт-процессор - вот и предмет для обсуждения. А то можно еще план заселения Марса пообсуждать... только на что это повлияет?


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

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

И о совместимости разных реализаций форт-процессоров тоже можно помечтать, поплакать над погибшей мечтой и забыть.

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


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

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

ну почему же?
есть общий набор, без которого обходиться сложно, его и надо стандартизировать!
тот же DUP например :)

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
0 - NOP
1 - LIT
2 - CALL
3 - RET
4 - IF
5 - DUP
*DUP ( dd --> dd dd)
*OVER ( dd1 dd2 --> dd1 dd2 dd1)
*TRUE ( dd --> dd FFFF)
*FALSE ( dd --> dd 0)
*ONE ( dd --> dd 1)
6 - DROP
*DROP ( dd2 dd1 --> dd2)
*ADD ( dd2 dd1 --> dd2+dd1)
*SUB ( dd2 dd1 --> dd2-dd1)
*MUL ( dd2 dd1 --> dd2*dd1)
*AND ( dd2 dd1 --> dd2 and dd1)
*OR ( dd2 dd1 --> dd2 or dd1)
*XOR ( dd2 dd1 --> dd2 xor dd1)
7 - SWAP
*SWAP (dd2 dd1 --> dd1 dd2)
*INC (dd2 dd1 --> dd2 dd1+1)
*DEC (dd2 dd1 --> dd2 dd1-1)
*NEG (dd2 dd1 --> dd2 -dd1)
8 - @
9 - !
10 - >R
11 - R>
12 - *MOVE


Знаю, что даже этого недостаточно, однако, если все, что со звездочками выкинуть, то и останется то, без чего не обойтись.

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


Последний раз редактировалось WingLion Сб янв 31, 2009 23:08, всего редактировалось 1 раз.

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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Предложение следующее.
1. Для начала, обозначаем все, "без чего не обойтись" при условии, что без этого никто не обойдется.
2. Затем обозначаем все, "без чего не обойтись" конкретным реализациям и фиксируем мнемоники, чтобы при появлении подобных операций в других реализациях они назывались бы одинаково, а не вразнобой.
3. Определяемся, без чего не обойтись собственно Форту и определяем это через слова из п.1
4. Если не удается, смотрим, что мешает или чего не хватает, корректируем, возвращаемся к п.1 пока не получится "NormalForth"

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4949
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
не все звездочки на мой взгляд правильно поставлены, по крайней мере: DUP OVER DROP ADD AND XOR OR SWAP
оставить нужно. А предлагаемый набор мною следующий:

DROP - удалить верхнее значение с вершины стека данных
DUP - поместить копию верхнего значения стека данных на вершину стека данных
SWAP - поменять местами два значения на вершине стека данных
OVER - положить копию второго значения, лежащего в стеке данных, на вершину стека данных

AR> - переместить адресную ссылку с вершины стека возвратов на вершину стека данных
A>R - переместить адресную ссылку с вершины стека данных на вершину стека возвратов

EXIT - снять верхнее значение с вершины стека данных и записать его в IP
CALL - текущее значение IP сохранить на вершину стека возвратов, совершить переход на адрес, сохраненный в коде за опкодом команды. Верхнее значение стека возвратов должно указывать после выполнения операции на адрес, следующий за адресной ссылкой перехода.

?BRANCH – перейти на адресную ссылку, находящуюся в коде за опкодом команды, в случае если значение на вершине стека данных отличается хоть в одном бите от нуля, иначе обойти адресную ссылку, и передать управление на код, находящийся за ней.

AND - произвести логическую операцию «и» над двумя числами, находящимися на вершине стека данных, результат операции вернуть туда же.
XOR - произвести логическую операцию «исключающее или» над двумя числами, находящимися на вершине стека данных, результат операции вернуть туда же.
OR - произвести логическую операцию «или» над двумя числами, находящимися на вершине стека данных, результат операции вернуть туда же.
ADD - произвести сложение двух чисел, находящихся на вершине стека данных, результат сложения оставить на вершине стека данных, в случае переполнения установить флаг переполнения
2/ - арифметический сдвиг числа, лежащего на вершине стека данных на один бит вправо

@ - или FETCH – извлечь значение из памяти по адресу, находящемуся на вершине стека данных, результат операции поместить на место адреса
! - или STORE – сохранить значение в память по указанному адресу. Адрес лежит на вершине стека данных, значение под ним, после совершения операции оба удаляются.
LIT - положить значение, лежащее в коде за LIT на вершину стека данных.

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6408
Благодарил (а): 14 раз.
Поблагодарили: 100 раз.
mOleg писал(а):
?BRANCH – перейти на адресную ссылку, находящуюся в коде за опкодом команды, в случае если значение на вершине стека данных отличается хоть в одном бите от нуля, иначе обойти адресную ссылку, и передать управление на код, находящийся за ней.

Естественнее для железа делать переход, если на стеке 0. Тогда это IF. Арифметика неоднозначна - она ведь может выражаться через какие-то простые вещи, а то и вообще не требоваться. SWAP стоит отдельным пунктом в стековых манипуляциях, поскольку модифицирует две ячейки стека сразу.


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

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


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

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


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

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