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



         

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


Другие слова ассемблера, например позволяющие организовать циклы и ветвление программы, сильно варьируются от версии к версии и не стандартизованы. Это делает трудным дать полное и общее описание ассемблера. Мы опишем некоторые аспекты MMSFORTH ассемблеров Z-80 и 8088, но мы рассчитываем на вас в случае использования этого описания для других процессоров и версий Форта. В зависимости от версии Форт-ассемблер может быть либо полным (способным компилировать все коды операций данного микропроцессора), либо частичным (включающим только наиболее часто используемые функции). В последнем случае коды операций, не генерируемые ассемблером, могут быть откомпилированы непосредственно с помощью С, точно так же, как выше компилировалось слово MYSWAP (пример приведен ниже).

Форт-ассемблер описан как словарь с именем ASSEMBLER и, как и в случае любых других контекстных словарей; команда ASSEMBLER DEFINITIONS используется, чтобы добавить новые ассемблерные слова в словарь ASSEMBLER. Имея отдельный словарь ASSEMBLER, можно использовать в ассемблере любые имена (например, слова мнемоники и условных переходов), не боясь конфликтов со словами в Форте или другом словаре.

Словом, открывающим ассемблерное описание, является CODE. Оно формирует заголовок слова-примитива, делает словарь ASSEMBLER контекстным, записывает в CFA нового слова адрес его PFA и машинную программу, которая там должна храниться. Его описание очень похоже на слова, которые мы использовали для формирования заголовка MYSWAP. : CODE CREATE HERE DUP 2- ! [COMPILE] ASSEMBLER ; где [COMPILE] необходимо в случае, если в вашем Форте имя словаря является словом немедленного исполнения.

Вот пример описания MYSWAP с использованием MMSFORTH на процессоре 8088 IBM PC. Описание для любой версии Форта на микропроцессорах 8088 или 8086 будут сходными: CODE MYSWAP ( n1 n2 - n2 n1) DX POP AX POP DX PUSH AX PUSH NEXT END-CODE

Запомните, что вам нужно использовать что-то еще вместо NEXT или, может быть, NEXT будет частью вашего Форт-описания END-CODE.


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