Язык программирования PL/M-80 и его потомки. PL/M-386
Эдуард Пройдаков
1. Различия между PL/M-386 и PL/M-286
PL/M-386 отличается от PL/M-286 следующим:
- Встроенные строковые функции FIND, CMP и SKIP возвращают в качестве результата значение 0FFFFFFFFH при неудачном поиске и при равенстве строк.
- Добавлена поддержка 64-битовых беззнаковых величин (скаляров).
- Введена поддержка 8- и 32-битовых чисел со знаком.
- Введены типы HWORD и QWORD для беззнаковых целых и CHARINT, SHORTINT и LONGINT – для целых со знаком.
- Ключевое слово ADDRESS трактуется как OFFSET, а не как WORD в PL/M-286.
- Добавлена поддержка функций преобразования типов.
- Поддержка отображения в память типов WORD 32 и WORD 16.
- Дополнения для опций управления компилятором WORD 32| WORD 16, чтобы обеспечить совметимость типов данных и языка.
- Опции управления моделью сегментации MEDIUM и LARGE больше не имееют для компилятора уникального значения: MEDIUM интерпретируется как SMALL, а LARGE – как COMPACT, за исключением случая, когда LARGE используется для обозначения подсистемы, имя которой неизвестно во время компиляции.
- Несколько новых встроенных процедур и функций добавлено для поддержки новых типов данных (например, CMPHW, BLOCKINHWORD) и некоторых операций над битовыми строками (например SCANBIT, MOVBIT).
- Для поддержки микропроцессора Intel 386 в язык встроены переменные CONTROL$REGISTER, DEBUG$REGISTER и TEST$REGISTER.
- Для поддержки микропроцессора Intel 486 добавлены следующие переменные: BYTE$SWAP, TEST$REGISTER, INVALIDATE$DATA$CACHE, WB$INVALIDATE$DATA$CACHE и INVALIDATE$TLB$ENTRY.
- В компилятор добавлены опции FLAT и MOD 486. [3]
2. Особенности языка PL/M-386
Программа на PL/M-386 записывается в свободной форме.
Набор символов – подмножество кода ASCII:
A..Z
a..z
0..9
и следующих специальных символов:
= . / ( ) + - ' * , < > : ; @ $ _
к ним относятся также пробел, табуляция, символы возврата каретки и перевода строки.
В дополнение к базовому набору символов PL/M позволяет использовать специальный набор символов, находящийся в кодовой таблице от 080h по 0FFh (исключая символ 081 h). Первым символом индентификатора может быть буква или знак подчёркивания (этого символа не было в PL/M-80).
Целочисленные константы в PL/M-386 могут быть 8-, 16-, 32- и 64-битовыми.
Константы с плавающей запятой записываются только в десятичной системе счисления.
По мере развития языка в PL/M-386 накопилось довольно много встроенных типов данных: CHARINT (1 байт), SHORTINT (2 байта), LONGINT (4 байта), OFFSET, WORD (4 байта), QWORD (8 байтов), HWORD (2 байта), DWORD (8 байтов), INTEGER (4 байта), REAL, STRUCTURE, ADDRESS. (Значения длин в байтах в скобках даны для опции трансляции WORD 32.)
Неявный спецификатор массива. Если значения элементам массива присваиваются во время объявления, то чтобы не подсчитывать вручную длинну этого массива, в язык введён знак *, показывающий компилятору, что тот должен сам посчитать длину массива, например:
DECLARE FAREWELL(*) BYTE INITIAL ('GOODBYE, NOW');
3. Компилятор PL/M-386
Компилятор PL/M-386 – это программное средство для трансляции исходных текстов на языке PL/M в перемещаемые объектные модули. Эти модули совместимы по формату (он называется формат OMF386) с объектными модулями, создаваемыми другими трансляторами, такими как ASM386, iC-386 и Fortran-386.
Для целей отладки и документирования компилятор может создавать также листинг трансляции.
Объектные модули могут быть объединены с библиотеками поддержки времени исполнения и исполняться под DOS, либо как часть операционной системы iRMX. Компилятор имеет множество опций. [3]
Заключение Как видно из приведённого описания, язык PL/M-80, рождённый для 8-разрядных процессоров и совершенно им адекватный, о чём свидетельствует высокая популярность языка на этих системах, с ростом Интеловских процессоров стал развиваться адаптируя в себя черты языка Си, но догнать его уже не смог и потому уступил дорогу.
Литература
- Р.Фаулджер. Программирование встроенных микропроцессоров. М .: Мир . 1985. –275 с .
- Intel Corporation 1976. PL/M-80 Programming Manual . Doc # 98-268B.
- PL/M 386 Programmer's Guide, RadiSys Corporation, 07-0710-01, December 1999. –422 pp.
- http://www.unix4fun.org/z80pack/doc_cpm_plm.html .
- PL/M-86 Programming Manual for 8080/85-Based Development Systems. Intel. 1980. Manual Order Number 4800466-03 Rev. C.
Статьи "Язык программирования PL/M-80 и его потомки"
Статья помещена в музей 09.06.2007 года.