PL/M

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
PL/M
linguaggio di programmazione
AutoreGary Kildall
Data di origine1973
Paradigmiprogrammazione procedurale e programmazione strutturata
Influenzato daALGOL, PL/I e XPL

Il PL/M (sigla di Programming Language for Microcomputers) è un linguaggio di programmazione ad alto livello creato da Gary Kildall nel 1972 per i microprocessori Intel[1]. Il PL/M non è più supportato da Intel ma esistono comunque in circolazione dei traduttori da PL/M a C.

Caratteristiche[modifica | modifica wikitesto]

Il PL/M incorporava concetti ripresi da preesistenti linguaggi quali il PL/I, l'ALGOL e l'XPL, ed integrava un esecutore di macro. A differenza di altri linguaggi contemporanei come il Pascal, il C o il BASIC, il PL/M non aveva funzioni standard per la gestione dell'input/output. Includeva delle funzionalità scritte per accedere a basso livello all'hardware dei processori a cui si rivolgeva e, per tale motivo, supportava in maniera molto efficiente l'accesso diretto a qualsiasi locazione di memoria, alle porte di I/O ed ai flag degli interrupt del processore.

Il PL/M è stato il linguaggio con il quale Kildall ha scritto il sistema operativo CP/M; è stato usato anche per scrivere il firmware dell'AS/400 (CISC). I compilatori PL/M sono stati resi disponibili per diverse piattaforme: Intel 4004, 8008, 8080, 8085, 8051, 8052, 8096, 80196, 8086/8088, 80186/80188, 286 e 386. Mentre alcuni di essi erano "nativi", vale a dire che giravano su sistemi che usavano lo stesso microprocessore (ad esempio per il sistema operativo Intel ISIS), c'erano anche dei "cross compiler", che giravano cioè su altri ambienti come il DOS di Microsoft o il VAX/VMS di Equipment Corporation.

Esempio di codice[modifica | modifica wikitesto]

FIND: PROCEDURE(PA,PB) BYTE;
    DECLARE (PA,PB) BYTE;
    /* FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB */
    DECLARE J ADDRESS,
        (K, MATCH) BYTE;
    J = BACK ;
    MATCH = FALSE;
        DO WHILE NOT MATCH AND (MAXM > J);
        LAST,J = J + 1; /* START SCAN AT J */
        K = PA ; /* ATTEMPT STRING MATCH AT K */
            DO WHILE SCRATCH(K) = MEMORY(LAST) AND
                NOT (MATCH := K = PB);
            /* MATCHED ONE MORE CHARACTER */
            K = K + 1; LAST = LAST + 1;
            END;
        END;
    IF MATCH THEN /* MOVE STORAGE */
        DO; LAST = LAST - 1; CALL MOVER;
        END;
    RETURN MATCH;
    END FIND;

Note[modifica | modifica wikitesto]

  1. ^ Michael Swaine, Gary Kildall and Collegial Entrepreneurship, in Dr. Dobb's Journal, 22/06/2001. URL consultato il 19/09/2010.

Bibliografia[modifica | modifica wikitesto]

  • Intel Corporation: PL/M-80 Programming Manual (1976) Doc. nº 98-268B
  • Daniel D. McCracken: A Guide to PL/M Programming for Microcomputer Applications (1978) - Pearson Addison-Wesley

Collegamenti esterni[modifica | modifica wikitesto]

Controllo di autoritàLCCN (ENsh85102554 · J9U (ENHE987007550806205171