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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 107 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
 Заголовок сообщения: 5.1 Базовая модель Форт-Машины
СообщениеДобавлено: Ср авг 12, 2009 21:29 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Изображение
Форт-машина основана на 0-операндной модели, то есть в формате команды не кодируются регистры источники и приемники информации. В простейшем случае это четырехрегистровый (R1-R4) процессор, под двумя из регистров (RTOP,SUB) наращены стеки. Два арифметико-логических устройства (АЛУ) обеспечивают преобразование информации, причем, один работает с данными (дАЛУ) и жестко связан со стеком данных и регистром TOS (R4), а второй (аАЛУ) жестко связан с указателем интерпретации (R2), и отвечает за операции формирования адресов в памяти.
TOS – (top of stack) не смотря на общепринятое название является регистром аккумулятором, а так же адресным регистром, с участием этого регистра выполняются все операции над данными.
SUB – (subtop) это верхний элемент стека данных, который работает совместно с регистром TOS в случае двухоперандных операций с dALU и памятью. Под данным регистром наращен стек данных, кэширующий необходимые данные.
IP – (interpretation\instruction pointer в зависимости от того ФВМ или ФМ) указатель на следующую (еще не исполненную) команду; либо литеральные данные, содержащиеся в коде за текущей командой.
RTOS – верхний элемент стека возвратов, хранит адрес возврата из текущей процедуры. Под данным регистром наращен стек возвратов, хранящий трассу возвратов из процедур.
Управляющее устройство включает в себя дешифратор команд, устройство синхронизации, другие необходимые управляющие механизмы (в случае ФВМ оно фактически отсутствует).
ФМ может работать с различными моделями памяти и различными разрядностями данных, но в простейшем случае используется плоская модель памяти и одинаковые разрядности данных и адресов. Пространство данных стеков так же может быть расположено в любом месте, в том числе в общей памяти, но наиболее выгодно выносить каждый из стеков в отдельное адресное пространство. Доступ к стекам может вестись как только с вершины, так и произвольным образом в зависимости от методики реализации ВМ, однако, базовый набор слов предполагает, что доступ к стеку ведется только с одного его конца (то есть с вершины стека).

В классическом случае любая команда выполняется за два такта (1 цикл = 2 такта ), на первом такте производится чтение очередной команды, на которую указывает IP (при этом IP инкрементируется на размер команды), на втором команда исполняется, что на два такта меньше по сравнению с RISC архитектурой. Данные всегда берутся со стека данных и туда же возвращаются, поэтому этапы дешифрации команды и сохранения результата совмещаются, соответственно, с чтением команды, и выполнением команды. Команды Форт-процессора не являются элементарными, и могут одновременно задействовать множество регистров и исполнительных устройств.

Формат команды выглядит следующим образом:
Opcode [Literal]
Опкод занимает 1 cell адресного пространства, за которым может следовать литеральное поле, выбираемое на втором такте цикла (команды LIT BRANCH CALL и подобные).
В опкоде не кодируются источники и приемники команд в явном виде, т.к. каждая команда работает с фиксированными, заранее известными регистрами, стеками и исполнительными устройствами, то есть обычно используется 0-операндная модель.
Каждое новое определение (последовательность опкодов, составляющих аналог подпрограммы в других языках программирования) так же является опкодом. Таким образом, набор команд процессора как бы расширяется с каждым новым определением (то есть во время работы количество команд растет). Однако при этом появляется деление на примитивы ( т.е. команды, исполняемые процессором в рамках одного цикла), и высокоуровневые определения, выполнение которых производится за множество тактов.
Вне зависимости от того, на реальном процессоре, либо на ВМ выполняется программа, базовый формат команды остается похожим, на описанный выше вариант.

Вариант WingLion:

Изображение

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


Последний раз редактировалось WingLion Вс авг 16, 2009 18:32, всего редактировалось 4 раз(а).

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

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

По сути Форт-Машина (ФМ) это модель четырехрегистрового проецессора
IP - указатель на следующую команду\данные
RTOS - вершина стека возвратов
TOS - регистр общего назначения\аккумулятор\флаговый
SUB - регистр общего назначения
Только перечисленные регистры доступны программно, под двумя из них: IP
и SUB нарощены стеки. Под IP - стек возвратов с вершиной в RTOP, а под SUB -
стек данных, причем, регистр SUB может быть верхним регистром в стеке данных,
а может быть и независимым регистром общего назначения.

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

ФВМ включает в себя как минимум следующие регистры:
IP - хранит адрес следующей команды, которая будет исполняться после
выполнения текущей команды. Регистр IP может быть недоступен.
TOS - хранит значение верхнего элемента стека данных
SUB - хранит значения второго элемента стека данных от его вершины
RTOS - хранит значение верхнего элемента стека возвратов

Необязательные регистры ФВМ:
TOP - хранит указатель на вершину стека данных
RTOP - хранит указатель на вершину стека возвратов

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

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Только перечисленные регистры доступны программно, под двумя из них: IP
и SUB нарощены стеки. Под IP - стек возвратов с вершиной в RTOP, а под SUB -
стек данных,
Олег, я прошу прощения. но по рисунку кажется получается наоборот: стек возвратов ближе к SUB ,
а данных к RTOP.
И вообзе - раньше были более выразительные цветные рисунки, а это какой-то чёрно-белый схемтизм


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

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

поэтому
вопрос писал(а):
Цитата:Только перечисленные регистры доступны программно, под двумя из них: IP
и SUB нарощены стеки. Под IP - стек возвратов с вершиной в RTOP, а под SUB -
стек данных, Олег, я прошу прощения. но по рисунку кажется получается наоборот: стек возвратов ближе к SUB ,
а данных к RTOP.

надо переписывать.
но, вобщем так получается, что SUB может быть вообще не вершиной стека, а еще одним регистром (к примеру, если поддерживать команду ROT)
что же касается RTOP, то он полностью относится к стеку возвратов и в отдельный регистр его выделять бессмысленно.

вопрос писал(а):
И вообзе - раньше были более выразительные цветные рисунки, а это какой-то чёрно-белый схемтизм

это не окончательный вариант. критикуйте, предлагайте !!!:)

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


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

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


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

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

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


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

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

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


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

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

тут, правда отсутствуют регистры и стеки в явном виде, и может быть схема не совсем удачна :shuffle; , но заманчивая цель (схематически охватить "форт вообще") привела вот к этому рисунку
левая часть рисунка схематически изображает код, точнее, зависимости внутри кода, правая часть - данные

стрелки изображают зависимости, т.е. идя по стрелке "задом наперёд" мы ответим на вопрос "из чего состоит" или "на что сориентировано". Так, например, стрелка 6 (посредине) отображает, что
"слова для работы со стеком сориентированы на то, как организован стек" (и стек ли это в буквальном смысле слова)
стрелка 7 означает, что
" в форте работа с массивами и другими структурами данных реализуются на базе слов для работы со стеком"
при этом: то, что стрелка 7 направлена не "обратно" говорит, что "стек не есть один из массивов, используемый как стек", т.е. стек в форт системе не моделируется, а входит в "замысел", тогда как массивы и т.п. нуждаются в моделировании, впрочем стрелки 8 и 9 показывают, что их можно включать в замысел при желании (ARRAY как в кварке, где-то я видел очередь)
Изображение


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

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

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

Собственно в предлагаемом мною наброске предусмотрена трех (можно и больше, но никак не меньше) уровневая структура:

1) основа - это либо виртуальная машина, либо физическая машина и минимальный\оптимальный\выше_оптимального набор команд (примитивов)
2) компилятор
3) транслятор и утилиты

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

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6332
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
mOleg писал(а):
1) основа - это либо виртуальная машина, либо физическая машина и минимальный\оптимальный\выше_оптимального набор команд (примитивов)
2) компилятор
3) транслятор и утилиты

Сначала интерпретатор, потом компилятор. Интерпретатор - это ввод и поиск, а компилятор - еще и модификация памяти после ввода и поиска. Интерпретатор может присутствовать в компактных реализациях, которые тем не менее могут управляться непосредственно текстом на Форте с внешнего источника.


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

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

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

вобщем и транслятор тоже

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


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

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


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

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


a если мне торт захочется, его тоже на схеме предусмотреть?

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


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

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

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


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

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

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

вопрос писал(а):
Я на самом деле не против регистров и схем тоже, и те, что есть вполне рабочие, но можно и нужно искать и лучшие решения, потому что не всегда успех у того, кто талантлив, а часто и у того, кто просто постоянно искал и получше.

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

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


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

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


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

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


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

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