Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 18:02

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 19, 2011 09:21 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
danbst писал(а):
ну да, я тоже вижу вариант "отказатся от использования первых 8 Кб памяти RAM (использовать их под стек, буфер какойнить) с целью создания неперекрывающегося пространства памяти". Но хорош ли вариант?

Очень близоруко ты видишь.
Ножку A15 твоей внешней RAM (если такая ножка вообще есть) отрежь от
схемы и запаяй на землю. А если такой ножки нет, то и делать ничего не надо.
И тогда у тебя внешняя RAM будет в адресном пространстве в двух экземплярах
- одна копия в первых 32 Kb (без первых 0x260 байт), а вторая - во вторых 32 Kb.
Работать можно со второй копией.
Тогда все IP = 0..FFF указуют в ROM, а все IP = 8000..FFFF указуют в RAM.
Если 15-й бит = 0, то делать lpm, если = 1, то индирект.
И ни одного байта RAM для использования не пропало.
Наоборот, на 0x260 байт больше стало !


Последний раз редактировалось Ethereal Сб мар 19, 2011 10:02, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 19, 2011 09:28 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
WingLion писал(а):
Собственно, эти два тезиса, кажется, и есть причина, почему а так старался встроить адресный интерпретатор (CALL и NEXT) для прямого шитого кода в свой форт-процессор.

Не подходит для данного случая совершенно !
У AtMega8515 нельзя исполнять код в RAM !
Форт-определения будут создаваться в RAM, но они там не могут
иметь исполняемых шапок. Потому-что процессор код из RAM для исполнения
не выбирает. Только из ROM.
Так-что только косвенный шитый код, где поле CFA указует на токены в ROM !
И никакого иного исполняемого кода, кроме кода примитивов в ROM.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 19, 2011 10:25 
Не в сети
Administrator
Administrator
Аватара пользователя

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


мда... полез я со своим коромыслом (форт-процессором) не в тот колодец...
Странно, что в топике про атмегу не сказано ни слова.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 19, 2011 11:05 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
а можно для начала другие системы посмотреть:
http://amforth.sourceforge.net/
http://www.staton.us/electronics/remote ... acker.html
наверняка есть и другие

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 19, 2011 11:12 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
WingLion писал(а):
Ethereal писал(а):
Не подходит для данного случая совершенно !
У AtMega8515 нельзя исполнять код в RAM !


мда... полез я со своим коромыслом (форт-процессором) не в тот колодец...
Странно, что в топике про атмегу не сказано ни слова.

danbst писал(а):
Хорошая статья. Однако по ней мне не удалось построить адресный интерпретатор для системы с гарвардской архитектурой. Буду писать свои размышления по ходу, а вдруг неправ в чем-нибудь.

В распоряжении плата с AVR ATmega8515, 8 Kb flash-ROM, 32 Kb external RAM. Поскольку нельзя выполнять данные, нужно использовать косвенный шитый код. Собственно, нужно 3 процедурки:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 19, 2011 12:48 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Идея крейзи

Без жертв Форт на гарвардскую почву не посадишь.
Надо чем-то жертвовать. Надо только определиться с приоритетом жертв.
Предлагаю такие жертвы :
- Быстродействием не жертвовать вовсе при исполнении скомпилированных
Форт-определений (только улучшать), а вот при компиляции Форт-определений
и работе со словарем можно совсем немного в быстродействии и потерять.
Можно также немножко потерять по времени при старте Форт-системы.
- ext.RAM пожертвовать можно, но тоже совсем немного
- Можно пожертвовать половиной ROM.

Тогда такое решение :
1.) Примитивы на ассемблере написать в двух экземплярах -
для косвенного шитого кода (все) и для подпрограммного (не все).
Словарь будет ссылаться на примитивы для косвенного шитого кода.
На примитивы для подпрограммного словарь ссылаться не будет.
2.) Все определения, вновь создаваемые в ext.RAM будут создаваться в технике
косвенного шитого кода и использовать примитивы для косвенного
шитого кода.
3.) Все определения, созданные в ROM при написании Форт-системы
будут написаны в технике подпрограммного шитого кода и будут вызывать
примитивы для подпрограммного шитого кода.
4.) Добавочные примитивы для подпрограммного шитого кода будут написаны
только для тех примитивов, что используются в Форт-определениях в ROM.
5.) В начале ext.RAM будут задействованы столько ячеек, сколько
Форт-определений и примитивов есть в ROM. Значения в эти ячейки нужно будет
заносить при старте Форт-системы. Эти ячейки будут содержать адреса
исполнимого кода Форт-слов из ROM. Для Форт-слов из ROM в подпрограммном
шитом коде это будут просто адреса начал определений в этом коде.
Таким образом это будет таблица исполнимых токенов для Форт-слов из ROM.
6.) В итоге :
Косвенный шитый код будет весь находится в ext.RAM.
Ячейка в шитом коде в ext.RAM будет ссылаться на ячейку в ext.RAM, которая будет
содержать адрес исполнимого кода в ROM. И так для любых Форт-определений

Теперь организация NEXT единообразна и не требует никаких проверок и ветвлений.
Только при поиске по словарю придется выбирать - читать из ROM или ext.RAM
и по разному обрабатывать поле CFA. Если запись словаря читается из ext.RAM,
то поле CFA в ней пусть содержит адрес исполняемого кода для данного
слова в ROM (адрес ENTER в ROM) и именно адрес поля CFA нужно будет
компилировать при компиляции. А если запись словаря читается из ROM, то пусть
поле CFA содержит адрес элемента таблицы токенов из начала ext.RAM
(элемента, содержащего адрес исполнимого кода для данного слова в ROM) и
компилировать нужно будет уже не адрес, а значение поля CFA из словаря.

Это как-бы была почти-что ТРИЗ-овская задача :
Замыслим, чтобы весь исполнимый код был бы только ROM, а косвенный шитый код
только в ext.RAM. Писать все определения в ROM на ассемблере не хочется, но
они должны быть простым исполнимым кодом. Решение - подпрограммный шитый код.
Это одновременно исполнимый код - раз и на Форте - два. Плюс подпрограммный
шитый код требует на одну единицу косвенности меньше, а значит можно
компенсировать это промежуточным указателем в таблице, разместив ее в RAM,
и, тем самым, заединообразив работу NEXT. Ну и наконец - подпрограммный
шитый код в ядре - это выигрыш в быстродействии, а не проигрыш.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 19, 2011 16:35 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Вс мар 20, 2011 01:55 
Не в сети

Зарегистрирован: Пн ноя 23, 2009 16:12
Сообщения: 64
Откуда: Київ, Івано-Франківськ
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Ethereal писал(а):
Очень близоруко ты видишь.
Ножку A15 твоей внешней RAM (если такая ножка вообще есть) отрежь от
схемы и запаяй на землю. А если такой ножки нет, то и делать ничего не надо.
И тогда у тебя внешняя RAM будет в адресном пространстве в двух экземплярах
- одна копия в первых 32 Kb (без первых 0x260 байт), а вторая - во вторых 32 Kb.
Работать можно со второй копией.
Тогда все IP = 0..FFF указуют в ROM, а все IP = 8000..FFFF указуют в RAM.
Если 15-й бит = 0, то делать lpm, если = 1, то индирект.
И ни одного байта RAM для использования не пропало.
Наоборот, на 0x260 байт больше стало !

Если честно, то перепаивать ничего не буду, в этом деле опыта 0. Во-вторых, между ОЗУ и процессором стоит ПЛИС, которая мапит адреса 8000-FFFF на управляющие регистры периферии. Тоесть, обращятся я уже могу к 64К памяти, просто вторая половина не доступна как ОЗУ. Так что, никаких +260 байт =) ну и да, стенд стоил деньги и гарантия еще не кончилась.

mOleg писал(а):
а можно для начала другие системы посмотреть:
http://amforth.sourceforge.net/
http://www.staton.us/electronics/remote ... acker.html
наверняка есть и другие

спасибо, особенно за вторую ссылку - точно понадобится. А вот по первой не совсем понятно. Они используют самопрошивку флеша, от чего я отказался в первую очередь в силу конечности ресурса и, соответственно, всегда читают из флеша
Код:
76   DO_NEXT:
77       brts DO_INTERRUPT
78       movw zl, XL        ; READ IP
79       readflashcell wl, wh
80       adiw XL, 1        ; INC IP

Там дальше коду увидел, что : (а соответственно и COMPILE) использует сохранение в флеш данных, а COMMA работает исключительно с флешем
Код:
1   ; ( n -- ) Dictionary
2   ; R( -- )
3   ; compile 16 bit into flash at DP
4   VE_COMMA:
5       .dw $ff01
6       .db $2c,0 ; ,
7       .dw VE_HEAD
8       .set VE_HEAD = VE_COMMA
9   XT_COMMA:
10       .dw DO_COLON
11   PFA_COMMA:
12       .dw XT_DP
13       .dw XT_STOREI
14       .dw XT_DP
15       .dw XT_1PLUS
16       .dw XT_DOTO
17       .dw PFA_DP
18       .dw XT_EXIT

XT_STORE - это сохранение в озу, XT_STOREE - в еепром, а XT_STOREI - во флеш.

Ethereal писал(а):
Идея крейзи

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

Пока-что я решил пожертвовать 8 кб ОЗУ (или возможно 4, если буду использовать выравнивание по слову в ROM) с целью создания единого кодового пространства. Ну и в NEXT использовать один бранч на нужный код - ld или lpm. Эти 8 Кб пойдут под стеки и буфер ввода-вывода. (кстати, я собираюсь приделать также мультизадачность, вот эти начальные килобайты и буду использовать под контексты и доп. стеки). Начальную прошивку я буду закидывать в EEPROM, если не хватит кодовой.

В общем, спасибо. Если есть еще варианты - выкладывайте ) Как говорят про версии программы, "между первой и второй - промежуток не большой" =)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 26, 2011 16:03 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Хищник писал(а):
Как раз на гарвардской архитектуре Форт реализовать удобнее всего. Другое дело, что память команд должна быть доступна для модификации, а код - машинный, а не шитый.

На практике, тот Гарвард, что часто встречается, такой, что :
- память, доступная для исполнения, недоступна для модификации
- память, доступная для модификации, недоступна для исполнения
Так-что правит бал какой-то неправильный Гарвард.
Или таки правильный ?
Так-что мысль про "удобнее всего" просто непонятна.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 26, 2011 16:36 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
не понятна полемика.
в пространстве, где можно исполнять располагаем ФВМ т.е. примитивы.
выбираем косвенный или токенезированный ШК.
вся форт-программа располагается в пространстве доступном на запись и чтение.
Т.е. по сути делаем из гарвардской - форт машину.

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 26, 2011 16:48 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Смысл уже состоит в том, что если Хищник говорит, что удобно, а мне так не кажется,
то пусть скажет еще что-нибудь по этому поводу. Может быть есть какая-то идея,
которая лежит на поверхности, а я ее в упор не вижу. Так иногда бывает.


Последний раз редактировалось Ethereal Сб мар 26, 2011 16:59, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 26, 2011 16:55 
Не в сети
Administrator
Administrator
Аватара пользователя

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


Ой, а первый пост данной темы прочитать слабо?

Из первого поста:
mOleg писал(а):
Токенизированный шитый код.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 26, 2011 17:03 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Блин, ну и зачем было выдумывать столь не по русски звучащий термин "токенезированный", коли такой тип ШК называется свернутым ? См. Баранов-Ноздрунов, например.
В свернутом шитом коде адрес исполняемого кода слова представлен более коротким числом и вычисляется из этого числа по некоторому правилу. Индекс в таблице токенов - это частный случай.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 26, 2011 17:14 
Не в сети
Administrator
Administrator
Аватара пользователя

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


тут согласен, нерусское слово в переводе статьи надо менять.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Портирование Форта. ч1. адресная интерпретация, регистры
СообщениеДобавлено: Сб мар 26, 2011 22:02 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ethereal писал(а):
На практике, тот Гарвард, что часто встречается, такой, что :
- память, доступная для исполнения, недоступна для модификации
- память, доступная для модификации, недоступна для исполнения
Так-что правит бал какой-то неправильный Гарвард.
Или таки правильный ?
Так-что мысль про "удобнее всего" просто непонятна.

Существующие МК чаще всего ориентированы на кросс-компиляцию, при которой модификация программы в процессе работы попросту не нужна. В гарвардской архитектуре нет какого-то специального запрета на модификацию памяти программ в процессе работы. Однако если не обеспечивать доступ к памяти программ специально, то его не получится - идет постоянная выборка команд, в которую надо как-то вклиниваться. Это проблема не архитектуры, а технической реализации процессора.


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

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


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

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


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

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