In informatica il P-Code o Pseudo-Code è un codice per la descrizione delle istruzioni di programmi che può essere eseguito da un tipo particolare di interprete chiamato macchina P-Code, analogo alla virtual machine del linguaggio Java. Il P-Code era il target di alcune implementazioni del linguaggio Pascal (compresa quella realizzata nel 1975 dal suo inventore, Niklaus Wirth): un programma in Pascal non veniva tradotto direttamente in istruzioni macchina, comprensibili direttamente dal processore, ma in istruzioni P-Code. Per eseguire il programma si usava un altro programma in grado di interpretare questo codice.
Il P-Code è simile al bytecode ma descrive istruzioni a un livello più alto. Mentre il bytecode funziona a un livello molto basso simile al codice macchina, il P-Code descrive operazioni moderatamente complesse come stampare un messaggio o pulire lo schermo. Alcune implementazioni del BASIC e del Pascal usano P-Code che viene tradotto da un compilatore just-in-time in istruzioni in codice macchina. Questa tecnica permette di eseguire lo stesso programma pseudo-compilato su piattaforme differenti e di semplificare lo studio e la realizzazione dei compilatori di linguaggio.
Il Business Operating System (BOS) degli anni ottanta era un sistema operativo multi piattaforma progettato per eseguire esclusivamente programmi in P-Code.
L'UCSD p-System era un sistema operativo portatile indipendente dalla macchina basato su P-Code. Esistevano versioni realizzate per computer estremamente diversi tra loro, tra i quali, oltre ai grossi sistemi al tempo attivi nelle università, il "Texas Instruments TI99/4A", l'l'Apple II (Apple Pascal), e il PC IBM, che lo proponeva come alternativa al CP/M-86 e all'MS-DOS.
Il Pascal Microengine era un computer prodotto dalla Western Digital alla fine degli anni 70 in grado di interpretare il P-Code in modo nativo.
Collegamenti esterni
[modifica | modifica wikitesto]- Storia dell'UCSD P-System, su threedee.com.
- Storia dell'UCSD Pascal, su threedee.com.
Controllo di autorità | LCCN (EN) n92062941 |
---|