PL/M
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
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
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
- ^ Michael Swaine, Gary Kildall and Collegial Entrepreneurship, in Dr. Dobb's Journal, 22/06/2001. URL consultato il 19/09/2010.
Collegamenti esterni
- PL/M 386 Programmer’s Guide (PDF) – RadiSys Corporation, dicembre 1999. Include la sintassi completa del PL/M in notazione BNF. Disponibile anche su Archive.org.
- Development Assistant for PL/M (DA-PL/M) – IDE commerciale per PL/M sviluppapta da RistanCASE GmbH
- PLM2C - PL/M to C Translator – Traduttore commerciale PL/M->C di Alternative Solutions
- XTRAN Demonstration: Translating PL/M to C – Traduttore commerciale PL/M->C di Pennington Systems, Inc.