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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: ВМ и набор команд (предложение N1)
СообщениеДобавлено: Вт май 15, 2007 21:53 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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

параметры: разрядность=N (это должен быть глобальный параметр проекта, и ему надо придумать нормальное имя)

состав ВМ:

1. Стек данных (Вход DSDI[], Выход DSDO[])
DSDO[] - всегда отражает вершину стека
Указатель стека - внутренний и во вне не выдается.
разрядность N
глубина DSD (DataStackDepth) для определенности - 256 слов
команды:
dPUSH -- втолкнуть данные сo входа (регистр RAD) на стек
dPOP -- вытолкнуть данные со стека
dSWAP -- запись на вершину стека без изменения указателя стека
dNOP -- ничего не делать.
dRES -- сброс указателя стека в ноль
dFLUSH -- сброс данных стека во внешнюю память
dPUMP -- подкачка в стек данных из внешней памяти
dST -- обслуживание стека данных при работе с внешней памятью
последние три команды при отсутствии внешней памяти для стека
данных ничего не делают
Внешняя память стека данных считается отдельной памятью
2. Стек возвратов(Вход RSDI[], Выход RSDO[])
RSDO[] - всегда отражает вершину стека
Указатель стека - внутренний и во вне не выдается.
разрядность N
глубина RSD (RetStackDepth) для определенности - 256 слов
команды:
rPUSH -- втолкнуть данные сo входа DSDI[] (PC+1) на стек
rPOP -- вытолкнуть данные со стека
rSWAP -- запись на вершину стека без изменения указателя стека
rNOP -- ничего не делать.
rRES -- сброс указателя стека в ноль
rFLUSH -- сброс данных стека во внешнюю память
rPUMP -- подкачка в стек данных из внешней памяти
rST -- обслуживание стека данных при работе с внешней памятью
последние три команды при отсутствии внешней памяти для стека
возвратов ничего не делают
Внешняя память стека возвратов считается отдельной памятью
3. Регистр команд PC[]
Адресует память для выборки следующей команды
PC+1->PC - следующая команда
PC<-RAD - переход или загрузка данных для стека возвратов
RET - возврат

4. Регистр адреса/данных RAD[]
Содержит адрес, подготавливаемый для работы с памятью перед
циклом работы с памятью. И данные во время цикла работы с памятью.
RAD=ALU - исполнение A/L операции
RAD=DSDO - выборка адреса/данных с вершины стека
RAD=PC - для работы с текущим адресом (относительные
переходы, локальные? переменные)
RAD=МЕМ - загрузка данных из памяти

5. Устройство управления CMD - регистр команды
Получает на вход данные из памяти и формирует из них управление для
всех остальных блоков ВМ
LDCMD - загрузка регистра команды (пока единственный вариант)
(не забыть прерывания)

6. АЛУ(данных)
АЛУ для стека данных
команды:
daNOP
dADD(C)
dSUB(C)
dRL(C)
dRR(C)
dAND
dOR
dXOR
dNOT
dINC(C)
dDEC(C)
dIMUL
dIDIV
суффикс C - это либо префикс, либо дополнительные коды управления ALU, Либо такие команды являются вызовами подпрограмм.

7. АЛУ (возвратов)
работает с данными на стеке возвратов для организации циклов и
других операций (некоторых условных переходов, например)
raNOP
rINC(C)
rDEC(C)

8. Интерфейс к памяти МЕМ
память (данных и команд, не стеков!) подключается к адресом на RC,
данными, входными и выходными, на RAD[]
с выхода памяти данные так же поступают на устройство управления,
где разбираются на предмет распаковки команд. Рязрядность команд не
обязательно N, может быть N/2, N/4, N/8 и т.д.
RDМЕМ - читать из памяти
WRМЕМ - писать в память

9. Интерфейсы к устройствам
на данный момент интерфейсов как таковых нету. надо думать.
предположительно, интерфейс организуется программно, как вызов к
некой определенной точке (адреса), подобно программным int.
При этом в эмулироемой машине может, например, преключаться банки
памяти и происходить иные "интересные" вещи, которые потом будут
делаться железно.
Считая, что в 8 байт можно уложить команду перехода, можно выделить
отдельные команды для вызова адресов от 0 до 80h, как
INT_xx - что есть по сути call с коротким литералом
INT_00 - равносильно(?) RESET
в ВМ вызов INT_xx может подменять рабочую память для реализации
необходимых функций через ту же ВМ в дополнительном пространстве
памяти.

10. Собственно память
64кб кажется маловато. Но, можно считать, что объем памяти - это
опять же, параметр проекта - MemVolume - переменная или константа.
Надо предусмотреть оба варианта, а то вдруг ОС окажется на
аппаратуре с возможностью апгрейда объема памяти?

11. устройства (устройства, для начала, эмулируются)
Терминал
самые первые устройства, которые просто необходимы (как мне
кажется), это терминальные, т.е. экран и клавиатура.
Чтобы не гадать на кофейной гуще, можно просто задать, что по
такому-то адресу находится процедура вывода на экран, по такому-то
- ввода с клавиатуры.
Тout и Tin
Может быть это и одно внешнее устройство, которое по Tout принимает
команды, по Tin передает ответ
Для начала - текстовый (чернобелый) вывод.
Внешняя память -- это не обязательно винчестер или флэш. Это
может быть, например, просто зарезервированный в железе кусок
микросхемы SD-RAM. Для начала, можно определить, как "быстрый
диск" или как "медленную пямять".
Диск(и) - тут, по идее, объяснять ничего не надо. Надо лишь
собрать все идеи, которые могут понадобиться для работы с дисками.
Объем дисков - формально неограничен, Хотя, поначалу, можно и
задать некие ограничения, чтобы не запарывать винчестеры, а сами
диски эмулировать в длинных файлах.

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


Последний раз редактировалось WingLion Ср май 16, 2007 03:20, всего редактировалось 6 раз(а).

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

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

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


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

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

Прерывание - это функция блока управления, который пока еще совсем не описан. Но, спасибо, надо про них не забыть.

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


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

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

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

т.е. размер пямати, например, MemVolume - исчислять неким двоичным числом с плавающей разрядностью.
Соответственно, для таких чисел нужен некий стандарт и соответствующая математика.

Предложение, пока только одно - использовать для представления больших чисел строки со счетчиком (FLOATы, очевидно, не подойдут). Счетчик просто указывает, сколько разрядов (байтов?, слов?) числа действительны.

Операции для таких строк вводить надо постепенно, по мере надобности. Пока, например, вряд ли нужно умножение строк друг на друга. Кажется, достаточно умножения строки на константу.

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
интуитивно - слов мало.

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


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

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

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


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

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


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

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


стремное какое-то железо :) я бы такое и делать не стал...

вопрос писал(а):
Я бы ИМХО начал с прерываний - весь интерфейс через прерываня


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

Прерывания - это вызов некой программы по внешнему событию...
И прерывания - вызов подпрограммы...

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

А второе - это просто подпрограммы, об отсутствии которых и речи не идет.

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


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

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


стремное какое-то железо :) я бы такое и делать не стал...

Да, непонимание есть, мне показалось, что "запихнуть в железо" - это про программируемые микросхемы, в этом смысле х86 позволяет в себя что-то запихнуть.
WingLion писал(а):
вопрос писал(а):
Я бы ИМХО начал с прерываний - весь интерфейс через прерываня

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

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

П.С. - непонимание - это нормально, если преодолимо


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

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


Я и имел в виду запихивание в ПЛИСы.

вопрос писал(а):
Нет , всё именно это. Я имел ввиду, что машина (ВМ) должна обрабатывать прерывания по крайней мере от таймера, клавиатуры, иначе куда же их деть?


Формально, это не обязательные вещи. Без таймера обойтись можно.
А клавиатуру обрабатывать можно и простым опросом.
Собственно, даже с прерываниями обработка клавиатуры сведется к опросу, "а было ли прерывание?"


вопрос писал(а):
А начинать нужно с них потому, что процедуры обработки должны быть (если кто не помнит) реентерабельны, что может создавать сложности для ВМ (или не может, поздно уже, что-то не соображаю)


Что-то я уже и не соображаю, что означает это слово реентерабельны. Помню только, что когда-то где-то его слышал...

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


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

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

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

Я не вижу необходимости в реентерабельности прерываний - в каждый момент времени все равно может быть только одно прерывание, и пока оно не обработано нет смысла браться за следующее этого же типа... ;) Поэтому обработчик вполне может использовать глобальные объекты - переменные и порты ввода/вывода.
вопрос писал(а):
весь интерфейс через прерываня

Я бы так не делал. Эффективнее по быстродействию (более фортово и соответствует советам Броуди) для каждого действия иметь отдельный вызов. Использование одной точки входа для разных действий приводит к повторному анализу и принятию решения о действии, которое заведомо известно вызывающей стороне. В результате при каждом вызове выполняется лишний код анализа, а потом переход вместо того, чтобы делать переход сразу.
Правда, усложняется редактор связей (если он нужен, ведь в Форте есть встроенный - словарь ;) )...

_________________
With best wishes, in4.


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
По набору команд - многовато NOP-ов - уже 4шт. Или у тебя "очень большие команды" и ты кодируешь битами работу каждого блока? Тогда ок.
Не увидел косвеной адресации и загрузки констант/литералов. Думаю, выкрутится будет можно, (есть же наборы из одной команды... ;) ) но зачем? ;)
Не заметил проверок условий, переходов и ветвлений, вызова подпрограммы и возврата.

Прерывание от таймера хотелось бы иметь - иначе прийдется постоянно вертеться в цикле опроса... :( Остальное можно решить и поллингом...

Посмотри предлагавшиеся наборы команд! Там они, вроде, полные... ;) Особенно мне нравятся 4х битные... ;)

И закрадывается в душу сомнение, что прийдется делать несколько вариантов ВМ и ФортОс тоже... ;) И они могут быть совместимы специальными слоями, и/или только начиная с какого-то достаточно высокого уровня... ;)
Аргументы - разрушающий ли IF, есть ли специальные выделенные регистры и какое значение придавать хвостовой рекурсии - очень влияют на стиль программирования... ;)

_________________
With best wishes, in4.


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

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


да, дешифрация команды формально, в блоке управления находится, а там "табличка" 4->?

in4 писал(а):
Не увидел косвеной адресации и загрузки констант/литералов. Думаю, выкрутится будет можно, (есть же наборы из одной команды... Wink ) но зачем? Wink


сейчас уже есть. Просто не все было прописано.

in4 писал(а):
Не заметил проверок условий, переходов и ветвлений, вызова подпрограммы и возврата.

проверки условий пока не сделал, но это будет функция ALU.
соответственно, условный переход - условная функция в ALU (скорее всего, в ALU стека возвратов)

in4 писал(а):
Прерывание от таймера хотелось бы иметь - иначе прийдется постоянно вертеться в цикле опроса... Sad Остальное можно решить и поллингом...


Об этом надо еще как следует подумать, на каком уровне их сейчас вставлять. А для начала, я думаю можно обойтись и циклами с ожиданием/опросом.

in4 писал(а):
Посмотри предлагавшиеся наборы команд! Там они, вроде, полные... Wink Особенно мне нравятся 4х битные...


В сторону 4-х бит и смотрю :)
in4 писал(а):
И закрадывается в душу сомнение, что прийдется делать несколько вариантов ВМ и ФортОс тоже... Wink И они могут быть совместимы специальными слоями, и/или только начиная с какого-то достаточно высокого уровня...


Мне кажется, что именно так и надо делать, чтобы наша ФортОС заработала на идеях каждого, "чтобы никто не ушел обиженным" :)

in4 писал(а):
Аргументы - разрушающий ли IF, есть ли специальные выделенные регистры и какое значение придавать хвостовой рекурсии - очень влияют на стиль программирования...


В конце концов, все нужные фичи можно ввести. Либо программно, либо железно.

p.s. Описанная в первом посте система - еще не есть система команд. Пока это только раскладушка - конструктор Форт-процессора, на котором систему команд надо еще сделать.

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


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

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

Выдергиваю отсюда: http://fforum.winglion.ru/viewtopic.php?t=150
чуть подправленный набор, который я там предлагал.

<pre>
0 - nop PC+1->PC RDМЕМ LDCMD
-- просто считать следующую команду
1 - call PC+1->PC RDМЕМ dPUSH RAD=МЕМ
rPUSH PC<-RAD dPOP RAD=DSDO --> nop (переход на nop)
-- да, call тут получается 3-хтактным

2 - if PC+1->PC RDМЕМ dPUSH RAD=МЕМ RDМЕМ
ifPC<-RAD dPOP RAD=DSDO --> nop
if - тоже

3 - lit PC+1->PC RDМЕМ dPUSH RAD=МЕМ --> nop
4 - >R RAD/PC rPUSH dPOP RAD=DSDO +nop
(параллельное исполнение nop для загрузки следующей команды)

5 - R> dPUSH rPOP RAD=RSDO +nop

6 - ret rPOP PC<-RSDO --> nop

7 - dup +nop dPUSH RAD=ALU daNOP
8 - drop +nop dPOP RAD=DSDO
9 - over +nop dPUSH RAD=DSDO'2
A - swap +nop dSWAP RAD=DSDO

B - pre: -- not released
C - sys: -- not released

D - next (R@@->PC, R@++)
rPOP PC<-RSDO --> call
(вытащить со стека адрес интерпретации и вызвать следующую подпрограмму)
(call при этом прямо работает, как вызов адресного интерпретатора)

E - fetch rPUSH PC<-RAD dPOP RAD=DSDO
rPOP PC<-RSDO dPUSH RAD=МЕМ RDМЕМ --> nop

F - store rPUSH PC<-RAD dPOP RAD=DSDO
rPOP PC<-RSDO dPOP WRМЕМ
</pre>

Спор о том, какие команды - отложим в сторону.
Реализуем сначала все, даже больше 16, а потом выберем, какой набор оптимален.

п.с. наверняка я где-то наглючил или сделал неоптимально... ночь...

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


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
WingLion писал(а):
dSWAP -- запись на вершину стека без изменения указателя стека

WingLion писал(а):
rSWAP -- запись на вершину стека без изменения указателя стека

Еще раз посмотри, как это работает... ;) Если ок, расскажи мне, а то я не понял... ;)

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

Остальное надо смотреть внимааательно и пробовать... ;)
in4 писал(а):
И закрадывается в душу сомнение, что прийдется делать несколько вариантов ВМ и ФортОс тоже... И они могут быть совместимы специальными слоями, и/или только начиная с какого-то достаточно высокого уровня...

WingLion писал(а):
Мне кажется, что именно так и надо делать, чтобы наша ФортОС заработала на идеях каждого, "чтобы никто не ушел обиженным"

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

_________________
With best wishes, in4.


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

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


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

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


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

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