PL/M
| Ten artykuł należy dopracować zgodnie z zaleceniami edycyjnymi : poprawić styl – powinien mieć encyklopedyczną formę . Po wyeliminowaniu niedoskonałości prosimy usunąć szablon {{Dopracować}} z kodu tego artykułu. |
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 .
Spis treści |
[ edytuj ] 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;
[ edytuj ] Cechy
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 :
- zmienne proste:
- BYTE – bajtowe
- ADDRESS – dwubajtowe, zmienne te mogą oprócz liczb całkowitych przechowywać dane wskaźnikowe (należy raczej powiedzieć, że dane całkowite przechowywane w tych zmiennych mogą być traktowane jako wskaźniki)
- BASE – bazowe
- tablicowe – tablice mogą być w PL/M jednowymiarowe o ustalonym wymiarze indeksowane od zera ,
- strukturowe,
- literały – LITERALLY 'tekst'.
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:
- AT(adres) – określa położenie zmiennej w pamięci,
- INITIAL(wartość) – nadanie początkowej wartości zmiennej,
- PUBLIC – udostępnienie zmiennej dla innych modułów,
- EXTERNAL – zmienna z innego modułu.
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:
- przypisania :
v1, v2, …, vn = wyrażenie, - pusta
;( separator instrukcji ), - grupująca
DO…END, - warunkowa
IF…THEN…[ELSE…], - wyboru
DO CASE…END, - skoku
GOTO, - pętli : iteracyjnej
DO…TO…[BY…]…END, repetycyjnejDO WHILE…END, - wywołania
CALL, - powrotu
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;
[ edytuj ] Bibliografia
- Jan Bielecki , PL/M – język programowania mikroprocesorów , Wydawnictwa Komunikacji i Łączności , Warszawa 1987 , Seria: Elektronizacja , zeszyt 25
- Jan Bielecki, System operacyjny ISIS-II, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, wyd. II uzup., seria: Mikrokomputery , ISBN 83-204-0893-8
[ edytuj ] Zobacz też
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Home Page , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

