Язык программирования Форт



         

Глава 16. Программирование на форт-ассемблере - часть 6


Не забудьте включить машинную программу, которая осуществляет возврат к Форту. В MMSFORTH вы могли бы использовать слово NEXT вместо байтов FD и Е9. Вы можете, конечно, применить эквивалентное слово из вашей версии. Если MYSWAP делает то же, что и SWAP, то открыт путь для описания аналогичным способом остальных слов-примитивов. Если MYSWAP не работает (что маловероятно). распечатайте ваше описание, чтобы убедиться, что содержимое CFA указывает на PFA и что машинная программа соответствует откомпилированному тексту SWAP, и затем испытайте. описание еще раз. Если вы собираетесь описать более чем пару слов-примитивов, вы, возможно, захотите для формирования заголовков описать : CODEHEAD CREATE HERE DUP 2- ! ; Форма обращения CODEHEAD MYSWAP (машинная программа...NEXT) CODEHEAD работает во многом аналогично слову CODE из ASSEMBLER, описанному в следующем разделе.

Если вы намереваетесь написать много слов-примитивов, используя эту методику или ассемблер, имеется пара вопросов, которые вы должны решить. Первый: использует ли ваш Форт аппаратный указатель стека (указатель стека, с которым работает микропроцессор) для хранения адреса стека параметров? Большинство версий Форта используют. Это может быть определено путем пропечатки SWAP, DUP или OVER, чтобы выяснить, как они определены. Если они используют PUSH и (или) РОР- команды, как определено для вашего микропроцессора, тогда Форт-стек и аппаратный стек совпадают. Второй: какой регистр используется Фортом в качестве указателя инструкции (который мы в гл. 15 назвали IP)? Пропечатайте машинную программу для EXIT, чтобы выяснить, в какой регистр заносится содержимое стека возвратов. Важно сохранить содержимое этого регистра, если вы должны использовать его для своих целей, и принять меры для того, чтобы восстановить его исходное значение, когда машинная программа будет завершена. Указатель слов Форта (WP) может быть, вероятно, изменен вашей программой-примитивом, так как он, вернее всего, будет изменен сразу после NEXT, когда исполнение вашего слова будет завершено.


Содержание  Назад  Вперед