P-Code

Autre jeu d'instructions p-code

Steven Pemberton et Martin Danielsref 3 proposent une implémentation Pascal du P-code comme le montre le tableau suivant :

InstructionOpération sur la pileParamDescription
AvantAprès
ABI(i)i Absolute value of integer
ABR(r)r Absolute value of real
ADI(i,i)i Adds two integers on the top of the stack and leaves an integer result
ADR(r,r)r Adds two reals on the top of the stack and leaves a real result
CHKcNo changePQChecks value is between upper and lower bounds
CHR(i)c Converts integer to character
CSPSpecialQCall standard procedure
CUPSpecialPQCall user procedure
DECc(x)xQDecrement
DIF(s, s)s Set difference
DVI(i,i)i Integer division
DVR(r,r)r Real division
ENTSpecialPQEnter block
EOF(a)b Test on end of file
EQUc(x,x)bQCompare on equal
FJP(b)  False jump
FLO(i,r)r,r Float next to the top
FLT(i)r Float top of the stack
GEQc(x,x)bQCompare on greater or equal
INCc(x)xQIncrement
INDc(a)xQIndexed fetch
INN(i,s)b Test set membership
INT(s,s)s Set intersection
IOR(b,b)b Boolean inciusive OR
IXA(a,i)aQCompute indexed address
LAO aQLoad base level address
LCA aQLoad address of constant
LCI xPQLoad constant indirect - assembler generated
LDA aPQLoad address with level P
LDCc xQLoad constant
LDOc xQLoad contents of base level address
LEQc(x,x)bQCompare on less than or equal
LESc(x,x)bQCompare on less than
LODc xPQLoad contents of address
MOD(i,i)i Modulo
MOV(a,a) QMove
MPI(i,i)i Integer multiplication
MPR(r,r)r Real multiplication
MSTSpecialPMark stack
NEQc(x,x)bQCompare on not equal
NGI(i)i Integer sign inversion
NGR(r)r Real sign inversion
NOT(b)b Boolean not
ODD(i)b Test on odd
ORDc(x)i Convert to integer
RETcSpecial Return from block
SBI(i,i)i Integer subtraction
SBR(r,r)r Real subtraction
SGS(i)s Generate singleton set
SQI(i)i Squareinteger
SQR(r)r Square real
SROc(x) QStore at base level address
STOc(a,x)  Store at base level address
STPNo effect Stop
STRc(x) PQStore at level P
TRC(r)i Truncate
UJCNo effect Error in case statement
UJPNo effectQUnconditional jump
UNI(s, s)s Set union
XJP(i) QIndexed jump

Types à utiliser dans la pile:

a address
b boolean
c character
i integer
r real
s set
x un des types qui précèdent

Table des matières Haut

Retour à la page sur le p-code.

Document créé le 31/07/2010, dernière modification le 21/03/2020
Source du document imprimé : https://www.gaudry.be/langages-pcode-rf-autres.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Liens utiles

Table des matières Haut

Références

  1. livre Langue du document :fr IHDCB332 - Théorie des langages : Syntaxe et sémantique : PY Schobbens, Syntaxe et sémantique (January 2010)
  2. Consulter le document html Langue du document :uk Prof. Dr. Dr. h.c. mult. Reinhard Wilhelm : Compiler Design Lab (version 30/07/10)
  3. Consulter le document html Langue du document :uk The P4 Compiler and Interpreter : Steven Pemberton, Martin Daniels, Pascal Implementation (version 30/07/10)

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut