Forth http://fforum.winglion.ru/ |
|
Как разработать кросс-компилятор Форта для микроконтроллеров http://fforum.winglion.ru/viewtopic.php?f=39&t=2271 |
Страница 4 из 4 |
Автор: | Hishnik [ Пт дек 02, 2011 01:36 ] |
Заголовок сообщения: | Re: Как разработать кросс-компилятор Форта для микроконтролл |
Тогда получается, что надо для 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. Вся работа по выбору между ПЗУ и ОЗУ уже сделана, можно пользоваться @. |
Автор: | oco [ Пт дек 02, 2011 01:45 ] |
Заголовок сообщения: | Re: Как разработать кросс-компилятор Форта для микроконтролл |
Ага, понятно! Но есть замечание, например в микроконтроллерах AVR два адресных пространства ПЗУ и ОЗУ с одинаковыми адресами, и чтение реализуется разными командами. Поэтому для нужны два слова "@" для чтения ОЗУ и "RO@" для чтения ПЗУ. Еще вопрос: а если я не хочу словарные статьи вообще в ПЗУ создавать? Тогда как? (то есть заголовки, я хотел сказать) |
Автор: | Hishnik [ Пт дек 02, 2011 01:52 ] |
Заголовок сообщения: | Re: Как разработать кросс-компилятор Форта для микроконтролл |
oco писал(а): Ага, понятно! Но есть замечание, например в микроконтроллерах AVR два адресных пространства ПЗУ и ОЗУ с одинаковыми адресами, и чтение реализуется разными командами. Поэтому для нужны два слова "@" для чтения ОЗУ и "RO@" для чтения ПЗУ. Да, все так. oco писал(а): Еще вопрос: а если я не хочу словарные статьи вообще в ПЗУ создавать? Тогда как? (то есть заголовки, я хотел сказать) Можно имена и адреса держать в памяти хост-машины, а в ПЗУ писать только код. Это часто делается при кросс-компиляции. Если от целевого МК не требуется в процессе работы самостоятельно интерпретировать передаваемые строки на Форте (для чего он должен иметь возможность найти в своей памяти, какому имени что соответствует), то имена в МК класть вобщем-то и не надо. |
Автор: | oco [ Пт дек 02, 2011 02:04 ] |
Заголовок сообщения: | Re: Как разработать кросс-компилятор Форта для микроконтролл |
Спасибо за ответы, буду рыть дальше |
Страница 4 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |