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



         

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


Слово HERE выдает адрес, где начинается подпрограмма, он кладется в стек возвратов, откуда этот адрес может многократно извлекаться. Каждое описание типа CODE использует адрес из стека возвратов в качестве аргумента для CALL. Адрес удаляется из стека возвратов командой R> в описании 2DROP, после которого он более не нужен. Единственным преимуществом беззаголовочных подпрограмм по сравнению с LABEL (кроме экономии нескольких байтов) является то, что эти подпрограммы не могут быть использованы неправильно, так как не могут быть найдены в словаре. Недостаток такого метода заключается в том, что это делает программу трудночитаемой. Вы должны также помнить, что применение подпрограмм усложняет отладку программ на ассемблере.

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


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