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


Глава 14. Память Форта. Словари и контекстные словари - часть 8


Стек возвратов используется для записи адресов так, что Форт знает, куда вернуться, когда выполнение слова завершилось. Это описано в деталях в разделе об исполнении слов Форта в гл.15. Область между стеком возвратов и верхней границей памяти может использоваться для различных целей в разных версиях. В MMSFORTH эта область может быть зарезервирована для дополнительных блочных буферов, которые расширяют число буферов, размещенных ниже словаря, но это, конечно, соответственно сокращает количество свободной памяти. Организация памяти, которую мы описывали до сих пор, является типичной для ЭВМ, которые могут непосредственно адресоваться до 64К байт. Но 16-битовые ЭВМ, так же как IBM PC, могут работать с 1М байтом памяти и более, в то время как числа одинарной длины не могут описать адрес более 65535. Существуют различные пути решения проблемы, чтобы работать с большими массивами памяти в Форте. Может быть, простейшим и наиболее общим является предоставление основной части Форта младших 64К байт (для программ редко требуется больше памяти) и использование адресов двойной длины для адресации к данным, лежащим выше. Например, MMSFORTH использует организацию памяти, которую мы описали, но имеет слова для извлечения, запоминания, пересылки, резервирования и прочего использования памяти с адресами более 64К. Очень часто в этой области памяти организуется псевдодиск. MMSFORTH использует сходную схему, но предусматривает возможность воспользоваться метакомпилятором для другого Форта в области старших сегментов памяти и работать с ним в дальнейшем как с совершенно независимым языком (это делается, когда подготовлена новая версия Форта). В тех случаях, когда программа со словарем больше, чем позволяет адресоваться 16-разрядное слово, могут использоваться оверлеи, когда части словаря замещаются с диска, по мере необходимости (за счет потери быстродействия). По крайней мере, одна версия Форта, PC/FORTH+, программно использует 32-разрядные, а не 16-битовые числа как для стека, так и для адресуемой памяти (хотя и за счет места и скорости).


Начало  Назад  Вперед