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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: [BF] система команд
СообщениеДобавлено: Вт май 22, 2007 23:32 
Не в сети

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
команды -- опкод 8 бит, префиксы переключения на расширенные наборы команд 8 бит (любое количество, получается дерево расширений), параметры у команд типа lit, call, jmp один cell

диапазон 0x0F..0xFF зарезервирован для экспериментальных команд

команды пока поделены на группы по 8 опкодов

0x0N команды управления выполнением программы типа call/ret, jmp, ?jmp, lit, bye
0x1N стековые операции
0x2N операции с памятью включая XMEM (динамически выделяемые блоки вне адресного пространства основной памяти форт-машины)
0x3N целочисленная арифметика
0x4N логические и битовые операции
0x7N консольный ввод/вывод с поддержкой stdin/stdout
0x8N отладочные

расширения

0x9N EXT_GR простейшая 2D монохромная (лучше без цветной для портабельности) графика
0xAN EXT_FILEIO доступ к файловой системе (или лучше завязаться на доступ к файлам через сеть ?)
0xBN EXT_NET сетевые стеки ETH/PPP/IP/TCP/UDP/ICMP и более высокоуровневые протоколы
0xCN EXT_CRYPTO поддержка криптографии нужна ?
0xDN EXT_3D видимо не обойтись, быстрые векторные операции

0xEN префикс для других расширений

0xFN резерв для экспериментальных команд и спец.версий движков

_________________
http://akps.ssau.ru/forth/


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

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
после того как набор CORE команд устоится, их можно сжать в один диапазон, освободится еще примерно 40% опкодов

_________________
http://akps.ssau.ru/forth/


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

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


Это в смысле 240 кодов из 256 - зарезервированы? :)

Или имелось в виду 0xF0..0xFF?

forth@km.ru писал(а):
параметры у команд типа lit, call, jmp один cell


Мне почему-то кажется, что вот эти парамерты как раз, лучше сделать регулируемыми, т.е. 1 байт, 1 слово, 1 селл и т.д. до некоего 'псевдоразумного' предела.

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


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

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
добавить еще wlit & blit, а переходы сделать как в relfе относительными ?

_________________
http://akps.ssau.ru/forth/


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

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

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


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

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
для работы примера простейшей программы EMPTY.4th нужно чтобы в коде целевого компилятора и в движке были прописаны и реализованы команды bye:

Код:
void bye() { exit(0); }

void step()
{
...
            case 0x07: bye(); break;
...
}


и

Код:
void jmp() { Ip=Mget(Ip); }

void step()
{
...
            case 0x01: jmp(); break;
...
}

_________________
http://akps.ssau.ru/forth/


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

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
функция Mget(addr) используется для получения cellа побайтно или в случае движка на Си для процессора, к которого порядок байт совпадает в порядком в форт-машине, используется финт ушами с применением макроса и хитрого доступа через указатели:

Код:
#ifdef I8086||I386
#define Mget(addr)        (*(uint *)(&M[addr]))
#define Mset(addr,n)      (*(uint *)(&M[addr]))=n
#endif

_________________
http://akps.ssau.ru/forth/


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

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
forth@km.ru писал(а):
в случае движка на Си для процессора, к которого порядок байт совпадает в порядком в форт-машине, используется финт ушами с применением макроса и хитрого доступа через указатели:


любой приличный компилятор Си должен породить для такой операции код из пары-тройки машинных команд, которые выполняют чтение/запись сразу 2/4 байт массива М[] идущих в памяти подряд. Но -- если компилятор в целях оптимизации включит выравнивание элементов этого массива на границы машинных слов, получим косяк.

В этом случае, а также для процессоров с другим порядком байт в маш.слове нужны функции, оперирующие с cellами побайтно через сдвиги и наложения.

_________________
http://akps.ssau.ru/forth/


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

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

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


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

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

ВМ можно встроить в микроконтроллер, у которого ресурсов маловато. Удобно отлаживаться на ПК, а потом проверенный код прошить в микроконтроллер. Получается, чем лучше упакована система команд - тем больше максимальный размер программы... :)

_________________
With best wishes, in4.


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

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


Последний раз редактировалось вопрос Ср май 30, 2007 00:58, всего редактировалось 1 раз.

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

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

Ценой потери быстродействия можно бОльше втиснуть в память - например, свернутый шитый код.
Или подбор системы команд - минимальный набор(только нужные команды) и "сжимающее" кодирование...
вопрос писал(а):
Форт и ФортВМ - разные вещё?
Конечно, разные. И независимые. М.б. ВМ без Форта - Ява, например, и Форт без ВМ - вариант нативного кода, м.б. даже без стеков... ;) И все равно будет Форт!
вопрос писал(а):
или наличие "форт-машины" (механизма компиляции определений - исполнения) превращает любой Форт в ВМ? ведь нет?

Форт-машина состоит из нескольких частей. Обычно есть машина исполнения - структуры данных и набор примитивов. Есть надстройка над ней - интерпретатор и компилятор. Машину исполнения уже можно рассматривать как ВМ с ассемблером, равным набору примитивов. :)
вопрос писал(а):
Тогда почему не делать форт без ВМ для микроконтроллера, а ВМ - только для отладки?
Можно. Но отлаживать проще, когда они одинаковы... ;) И у ВМ в микроконтроллере есть свои преимущества, особенно - экономичная работа с памятью... ;)
В мыслях есть сделать полную систему - с интерпретатором и компилятором, работающую в 1к ОЗУ на микроконтроллере... Пока не доказал невозможность... ;)

_________________
With best wishes, in4.


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

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

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


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

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

Набор примитивов - это уже ВМ или ещё нет?

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


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

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

Сделают - будет больше возможностей!! ;) А так в одном корпусе можно сделать удобно конфигурируемую систему... ;)
вопрос писал(а):
Набор примитивов - это уже ВМ или ещё нет?

Нет, надо еще их вызывать и параметры передавать... ;) Но от реализации зависит... ;)
ВМ обычно стартуют внешними средствами... Настраивают системы передачи параметров, вызовов и начало интерпретации...

_________________
With best wishes, in4.


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

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


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

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


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

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