PL/M

Da Wikipedia, l'enciclopedia libera.
Curly Brackets.svg

Il PL/M (acronimo 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 sorgente]

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 sorgente]

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 sorgente]

  1. ^ Michael Swaine, Gary Kildall and Collegial Entrepreneurship in Dr. Dobb's Journal, 22/06/2001. URL consultato il 19/09/2010.
  • 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 sorgente]