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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Портирование Форта. ч1. адресная интерпретация, регистры
Автор Сообщение
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Спасибо, сделал трамплин, но с еще одним уровнем косвенности (нюансы ITC).
Сообщение Добавлено: Вс май 15, 2011 11:04
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Эх... Вот она путаница в терминах во всей красе...

"Адресный интерпретатор" и "Форт интерпретатор" - разные вещи.
Хотя, в данном топике изначально речь шла именно об адресной интерпретации. Потому и непонятки вышли.

Для возврата в форт интерпретатор, проще всего, наверно, вызвать (INTERPRET) заново с остатком интерпретируемой строки в параметрах.

danbst писал(а):
Или лучше интепретатор тоже закодить на форте?


Кстати, вот это именно то решение, которое вполне подойдет, чтобы не ломать сильно голову. А для "простого" вызова форт-слов из ассемблера (ассемблерной имитации EXECUTE) придется делать специальную ассемблерную оболочку, которая по сути будет "адресным интерпретатором на одно слово", которая и сделает возврат в нужную точку.
Сообщение Добавлено: Вс май 15, 2011 05:18
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
danbst писал(а):
НО до входа в слово IP вообще не использовался (интепретатор - асемблерная процедура)! Как вернутся в процедуру (интепретатор) после NEXT? Или лучше интепретатор тоже закодить на форте?

Напишите INTERPRET на форте.
Или втолкните на стек возвратов адрес трамплина, CFA которого вернет в ассемблер.

Код:
TRAMP:
  .word BACK2ASM

INTERPRET:
  ...
  (PUSH RP) := TRAMP
  JUMP (POP DP)
BACK2ASM:
...
Сообщение Добавлено: Сб май 14, 2011 23:22
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
ну правильно! это интерпретация скомпилированых слова! А я про интепретацию строковых слов (или как она называется).
Сообщение Добавлено: Сб май 14, 2011 21:40
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Так ведь NEXT - это и есть возврат в интерпретатор!

EXECUTE вызывает слово.
Если оно ассемблерное, то напрямую возвращается в адресный интерпретатор по NEXT.

Если фортовое, то оно сначала вызывает ENTER - новый вход в интерпретатор, a по EXIT выходит из него и по NEXT (из слова EXIT) вновь попадает в интерпретатор (который обслуживает то слово, что содержит EXECUTE)

Интерпретатор, конечно один на всех, просто ENTER - сохраняет текущий IP в стеке возвратов, который позже оттуда возвращается словом EXIT, и записывает в IP новый адрес... для вызываемого слова.
Сообщение Добавлено: Сб май 14, 2011 21:10
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Хорошо, тогда так.
Вход (режим интерпретации)
Код:
  <вычисление CFA>  EXECUTE <дальше слова>

EXECUTE делает jmp mem(CFA)

Слово выполняется через NEXT. Доходит очередь до EXIT. Последний должен восстановить IP, который находился ДО входа в слово. НО до входа в слово IP вообще не использовался (интепретатор - асемблерная процедура)! Как вернутся в процедуру (интепретатор) после NEXT? Или лучше интепретатор тоже закодить на форте?
Сообщение Добавлено: Сб май 14, 2011 21:00
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
danbst писал(а):
Есть какое-то стандартное решение проблемы?


а в чем проблема?..

Слово вызвалось и вернулось по NEXT на следующее слово за EXECUTE...

просто, само EXECUTE не имеет собственного jmp NEXT, а только jmp ADDR на исполняемый адрес слова
Сообщение Добавлено: Сб май 14, 2011 20:51
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Еще вопрос. Как работает слово EXECUTE, вызванное с режима интерпретации при ITC? Дело в том, что адресный интепретатор в режиме интерпретации не используется, а слово EXIT делает jmp NEXT, а не ret (не возврящается в интерпретатор). Есть какое-то стандартное решение проблемы?
Сообщение Добавлено: Сб май 14, 2011 20:25
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Ethereal писал(а):
Смысл уже состоит в том, что если Хищник говорит, что удобно, а мне так не кажется,
то пусть скажет еще что-нибудь по этому поводу. Может быть есть какая-то идея,
которая лежит на поверхности, а я ее в упор не вижу. Так иногда бывает.

А что говорить-то? Существуют процессоры с гарвардской архитектурой, которые могут дописывать код в процессе работы. Если даже не могут дописывать, все равно остается кросс-компиляция, что позволяет использовать Форт, разрабатывая программы только на хост-машине. Разделение адресных пространств полезно хотя бы потому, что в ходе компиляции нет проблем с выполнением ALLOT - выделяемая память не пересекается с программным кодом.
Если говорить о конфигурируемых процессорах, то вопрос вообще лишен смысла - почему вдруг нельзя описать память программ с доступом от процессора?
Сообщение Добавлено: Сб мар 26, 2011 22:08
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Ethereal писал(а):
На практике, тот Гарвард, что часто встречается, такой, что :
- память, доступная для исполнения, недоступна для модификации
- память, доступная для модификации, недоступна для исполнения
Так-что правит бал какой-то неправильный Гарвард.
Или таки правильный ?
Так-что мысль про "удобнее всего" просто непонятна.

Существующие МК чаще всего ориентированы на кросс-компиляцию, при которой модификация программы в процессе работы попросту не нужна. В гарвардской архитектуре нет какого-то специального запрета на модификацию памяти программ в процессе работы. Однако если не обеспечивать доступ к памяти программ специально, то его не получится - идет постоянная выборка команд, в которую надо как-то вклиниваться. Это проблема не архитектуры, а технической реализации процессора.
Сообщение Добавлено: Сб мар 26, 2011 22:02
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Ethereal писал(а):
ну и нафиг было выдумывать столь не по русски звучащий термин "токенезированный",


тут согласен, нерусское слово в переводе статьи надо менять.
Сообщение Добавлено: Сб мар 26, 2011 17:14
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Блин, ну и зачем было выдумывать столь не по русски звучащий термин "токенезированный", коли такой тип ШК называется свернутым ? См. Баранов-Ноздрунов, например.
В свернутом шитом коде адрес исполняемого кода слова представлен более коротким числом и вычисляется из этого числа по некоторому правилу. Индекс в таблице токенов - это частный случай.
Сообщение Добавлено: Сб мар 26, 2011 17:03
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Ethereal писал(а):
Можно, кстати, ссылку на статью или пояснение что значит токенезированный ШК.
А то я ить неучем помру :roll:


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

Из первого поста:
mOleg писал(а):
Токенизированный шитый код.
Сообщение Добавлено: Сб мар 26, 2011 16:55
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
Смысл уже состоит в том, что если Хищник говорит, что удобно, а мне так не кажется,
то пусть скажет еще что-нибудь по этому поводу. Может быть есть какая-то идея,
которая лежит на поверхности, а я ее в упор не вижу. Так иногда бывает.
Сообщение Добавлено: Сб мар 26, 2011 16:48
  Заголовок сообщения:  Re: Портирование Форта. ч1. адресная интерпретация, регистры  Ответить с цитатой
не понятна полемика.
в пространстве, где можно исполнять располагаем ФВМ т.е. примитивы.
выбираем косвенный или токенезированный ШК.
вся форт-программа располагается в пространстве доступном на запись и чтение.
Т.е. по сути делаем из гарвардской - форт машину.

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

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


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