Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
PL/M - Wikipedia, wolna encyklopedia

PL/M

Z Wikipedii

PL/M jest strukturalnym językiem programowania wysokiego poziomu, lecz równocześnie należy do kategorii języków tzw. bliskich sprzętowi, czasem (potocznie) używa się określenia asemblerowy język wysokiego poziomu. Był stosowany niegdyś 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.

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'.

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.

Instrukcje języka PL/M:

  • przypisania: v1, v2, …, vn = wyrażenie;
  • pusta: ;
  • grupująca:

DO; deklaracje i definicje instrukcje END;

IF wyrażenie THEN instrukcja [ELSE instr-else]

DO CASE wyrażenie"; instr_0" instr_1"instr_n" END;

DO v=e TO t [BY b]; instrukcje END;

DO WHILE wyrażenie; instrukcje END;

CALL nazwa_proc(argumenty);

RETURN [wyrażenie];

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] Zobacz też

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com