P-kode (Pi-kode) er begrebet hardware-uafhængig eksekverbar kode i programmering, det er ofte defineret som " Assembler for en hypotetisk processor". Udtrykket bruges almindeligvis til at henvise til virtuelle maskineimplementeringer for Pascal-programmeringssproget (f.eks. i UCSD p-System ), nogle gange også brugt som et synonym for udtrykket bytecode for forskellige virtuelle maskiner (f.eks. Java virtual machine, CIL'er ) bytecode). .NET platform osv.).
Selve konceptet med abstrakt maskinkode til programmeringssprog blev først anvendt i 1966 ( O-kode for BCPL ). Udtrykket P-kode blev opfundet i begyndelsen af 1970'erne af et team ledet af Niklaus Wirth , da de implementerede en bærbar compiler til Pascal. Introduktionen af en mellemliggende p-kode forenklede porteringen af sproget: compileren (skrevet i Pascal) skabte en sekvens af p-koder fra kildekoden, der kan eksekveres af p-systemet (en p-kodefortolker skrevet f.eks. , i assembler). For at overføre sproget til en ny platform var det kun nødvendigt at tilpasse p-systemet til det, hvilket blev gjort på kort tid for platformene 6502 , 8080 , Z-80 , PDP-11 og mange andre [1] [ 2] [3] .