История развития программного обеспечения

Язык программирования 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-разрядных процессоров и совершенно им адекватный, о чём свидетельствует высокая популярность языка на этих системах, с ростом Интеловских процессоров стал развиваться адаптируя в себя черты языка Си, но догнать его уже не смог и потому уступил дорогу.

Литература

  1. Р.Фаулджер. Программирование встроенных микропроцессоров. М .: Мир . 1985. –275 с .
  2. Intel Corporation 1976. PL/M-80 Programming Manual . Doc # 98-268B.
  3. PL/M 386 Programmer's Guide, RadiSys Corporation, 07-0710-01, December 1999. –422 pp.
  4. http://www.unix4fun.org/z80pack/doc_cpm_plm.html .
  5. 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 года.