P-kód (Pi-kód) je koncept hardwarově nezávislého spustitelného kódu v programování, často je definován jako „ Assembler pro hypotetický procesor“. Tento termín se běžně používá k označení implementací virtuálních strojů pro programovací jazyk Pascal (např. v UCSD p-System ), někdy se také používá jako synonymum pro termín bytecode pro různé virtuální stroje (např. Java virtual machine, CIL 's bytecode). Platforma .NET atd.).
Samotný koncept abstraktního strojového kódu pro programovací jazyky byl poprvé aplikován v roce 1966 ( O-kód pro BCPL ). Termín P-kód byl vytvořen na počátku 70. let minulého století týmem pod vedením Niklause Wirtha při implementaci přenosného kompilátoru pro Pascal. Zavedení přechodného p-kódu zjednodušilo portaci jazyka: kompilátor (napsaný v Pascalu) vytvořil ze zdrojového kódu sekvenci p-kódů, spustitelných p-systémem (překladač p-kódu napsaný např. , v assembleru). Pro převedení jazyka na novou platformu bylo potřeba mu pouze přizpůsobit p-systém, což se v krátké době podařilo pro platformy 6502 , 8080 , Z-80 , PDP-11a mnoho dalších [1] [2] [3] .