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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: Как разработать кросс-компилятор Форта для микроконтролл
СообщениеДобавлено: Пт дек 02, 2011 01:36 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Тогда получается, что надо для CREATE делать вариант RCREATE. При этом DOES> остается как есть, потому что оно на стек ничего не кладет, а просто дописывает в код переход на вот этот хвост, который после него. Вместо RO@ можно тоже @, если ПЗУ в общем адресном пространстве.

Предположим, что ПЗУ с данными находится в диапазоне 0x1000-0x1FFF, а ОЗУ - 0x7000-0x7FFF. Допустим также, что мы и туда, и туда чуть-чуть понаписали, и DP указывает на 0x7010, а RODP - на 0x1020. Тогда получается так:

: CONSTANT RCREATE RO, DOES> @ ; 5 CONSTANT FIVE

Слово CONSTANT создаст заголовок слова FIVE, и припишет ему код "push 0x1020". Далее RO, запишет 5 по адресу 0x1020 и передвинет указатель. Если мы теперь выполним FIVE, на стеке будет 0x1020. Вся работа по выбору между ПЗУ и ОЗУ уже сделана, можно пользоваться @.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как разработать кросс-компилятор Форта для микроконтролл
СообщениеДобавлено: Пт дек 02, 2011 01:45 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 202
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
Ага, понятно!
Но есть замечание, например в микроконтроллерах AVR два адресных пространства ПЗУ и ОЗУ с одинаковыми адресами, и чтение реализуется разными командами. Поэтому для нужны два слова "@" для чтения ОЗУ и "RO@" для чтения ПЗУ.

Еще вопрос: а если я не хочу словарные статьи вообще в ПЗУ создавать? Тогда как?
(то есть заголовки, я хотел сказать)


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
oco писал(а):
Ага, понятно!
Но есть замечание, например в микроконтроллерах AVR два адресных пространства ПЗУ и ОЗУ с одинаковыми адресами, и чтение реализуется разными командами. Поэтому для нужны два слова "@" для чтения ОЗУ и "RO@" для чтения ПЗУ.

Да, все так.
oco писал(а):
Еще вопрос: а если я не хочу словарные статьи вообще в ПЗУ создавать? Тогда как?
(то есть заголовки, я хотел сказать)

Можно имена и адреса держать в памяти хост-машины, а в ПЗУ писать только код. Это часто делается при кросс-компиляции. Если от целевого МК не требуется в процессе работы самостоятельно интерпретировать передаваемые строки на Форте (для чего он должен иметь возможность найти в своей памяти, какому имени что соответствует), то имена в МК класть вобщем-то и не надо.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как разработать кросс-компилятор Форта для микроконтролл
СообщениеДобавлено: Пт дек 02, 2011 02:04 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 202
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
Спасибо за ответы, буду рыть дальше :)


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

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


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

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


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

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