PL/MPL/M – strukturalny język programowania wysokiego poziomu, klasyfikowany zwykle jako asemblerowy język wysokiego poziomu ze względu na wysoki współczynnik przełożenia na język asemblera. Niegdyś stosowany był do tworzenia oprogramowania systemowego, w tym m.in. systemów operacyjnych i kompilatorów. Jedną z ważniejszych implementacji była wersja opracowana przez firmę Intel dla procesorów serii 8080/8085, stosowana m.in. w systemie ISIS-II oraz PL/M-86 opracowana głównie dla potrzeb programowania procesów w systemach czasu rzeczywistego iRMX. Składnia tego języka wzorowana jest na języku PL/1. Przykład/* HELLO WORLD dla systemów operacyjnych ISIS-II i CP/M */ HELLO: DO; DECLARE REP ADDRESS; WRITE: PROCEDURE (A,B,C,D) EXTERNAL; DECLARE (A,B,C,D) ADDRESS; END; CALL WRITE(0,.('Hello, world!'),13,.REP); END HELLO; CechyJęzyk PL/M jest językiem umożliwiającym programowanie modularne, przy czym jedną z ważniejszych jego cech było tworzenie przemieszczalnych modułów i możliwość programowania hybrydowego (PL/M + asembler). Język PL/M (jego implementacja PL/M-80) jest tak zaprojektowany, że istnieje bezpośrednie odwzorowanie konstrukcji tego języka na język maszynowy procesora Intel] 8080/8085. Kompilator ten posiada opcję umożliwiającą translację programu źródłowego w PL/M na program w asemblerze. Program w języku PL/M składa się z niezależnie kompilowanych modułów. Moduł źródłowy (najmniejsza kompilowalna jednostka) jest instrukcją strukturalną o postaci: nazwa: DO; deklaracje i definicje [instrukcje] END nazwa; Jeżeli moduł zawiera co najmniej 1 instrukcję, to stanowi moduł główny i od niego rozpoczyna się wykonywanie programu; przy kilku takich modułach wyróżnienie modułu głównego następuje na etapie konsolidacji. Pozostałe moduły mogą zawierać jedynie deklaracje i definicje. W języku PL/M zmienne posiadają określane w deklaracjach atrybuty:
Późniejsze wersje języka, jak PL/M 386 dla systemu iRMX, wprowadzają już nowe typy znane z innych języków programowania, takie jak całkowity, rzeczywisty, znakowy, umożliwiające programowanie na wyższym poziomie abstrakcji, choć oczywiście nadal jest możliwe programowanie bliskie sprzętowi, w tym korzystanie z ww. danych bajtowych i słowowych. Pozostałe atrybuty określają inne cechy zmiennych:
W deklaracjach (podobnie jak w PL/1) można grupować identyfikatory: DECLARE (A,B) (3) ADDRESS; Deklaracja i definicja procedury ma postać: nazwa: PROCEDURE(parametry) [typ_wartości] [atrybuty]; DECLARE deklaracje parametrów, deklaracje zmiennych; instrukcje END nazwa; W przypadku procedur zewnętrznych stosować należy deklarację o postaci jak wyżej z pominięciem deklaracji zmiennych i instrukcji, ale z dodatkowym atrybutem EXTERNAL. Inne atrybuty to PUBLIC dla procedur udostępnianych dla innych modułów i REENTRANT dla procedur rekurencyjnych. Główne instrukcje języka PL/M:
Język posiada także szereg wbudowanych procedur i predefiniowanych zmiennych. Przykład: PR1: DO; DECLARE LICZ BYTE, TAB(5) BYTE, SUM ADRESS INITAL(0); READTAB: PROCEDURE; DECLARE I BYTE; DO I=1 TO 5 BY 1; TAB(I)=INPUT(1); END; END READTAB; CALL READTAB; LICZ=1; DO WHILE LICZ<6; SUM=SUM+TAB(LICZ); LICZ=LICZ+1; END; OUTPUT(1)=SUM; END PR1; Bibliografia
Zobacz teżInformation related to PL/M |