Loading AI tools
język programowania Z Wikipedii, wolnej encyklopedii
PL/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.
/* 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;
Ję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:
v1, v2, …, vn = wyrażenie
,;
(separator instrukcji),DO…END
,IF…THEN…[ELSE…]
,DO CASE…END
,GOTO
,DO…TO…[BY…]…END
, repetycyjnej DO WHILE…END
,CALL
,RETURN
.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;
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.