PL/M (acrónimo de Programming Language for Microcomputers ou «Linguaxe de Programación para Microcomputadoras») é unha linguaxe de programación de alto nivel creada por Gary Kildall en 1972 para os microprocesadores Intel. O soporte de Intel para PL/M xa non existe, pero os tradutores de PL/M a C aínda existen.
Características O PL/M incorporou a reprodución de conceptos das linguaxes preexistentes como PL/I, ALGOL e XPL, e integrou un macroexecutor. A diferenza das linguaxes contemporáneas como Pascal, C ou BASIC, PL/M non ten unha funcionalidade estándar para a xestión de entrada/saída. Incluía funcións escritas para acceder ao hardware do procesador a baixo nivel e, por esa razón, admitía de forma moi eficiente o acceso directo a calquera enderezo de memoria, ao porto de E/S e ao indicador de interrupción do procesador.
PL/M foi a linguaxe na que Kildall escribiu o sistema operativo CP/M; tamén se usou para escribir o firmware para o AS/400 (CISC). Os compiladores PL/M estiveron dispoñibles para varias plataformas: Intel 4004, 8008, 8080, 8085, 8051, 8052, 8096, 80196, 8086/8088, 80186/80188, 286 e 386. Aínda que algúns eran «nativos», é dicir, executábanse en sistemas que empregaban o mesmo microprocesador (por exemplo, o sistema operativo Intel ISIS),tamén había «compiladores cruzados», é dicir, executábanse noutras contornas, como o DOS de Microsoft ou o VAX/VMS de Digital Equipment Corporation.
Código de exemplo 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;
Notas
Véxase tamén Outros artigos CP/M
Ligazóns externas
Categoría:Linguaxes compiladas Categoría:Digital Research