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 :
Instruction | Opération sur la pile | Param | Description | |
Avant | Aprè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 | |
CHKc | No change | PQ | Checks value is between upper and lower bounds | |
CHR | (i) | c | Converts integer to character | |
CSP | Special | Q | Call standard procedure | |
CUP | Special | PQ | Call user procedure | |
DECc | (x) | x | Q | Decrement |
DIF | (s, s) | s | Set difference | |
DVI | (i,i) | i | Integer division | |
DVR | (r,r) | r | Real division | |
ENT | Special | PQ | Enter block | |
EOF | (a) | b | Test on end of file | |
EQUc | (x,x) | b | Q | Compare 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) | b | Q | Compare on greater or equal |
INCc | (x) | x | Q | Increment |
INDc | (a) | x | Q | Indexed fetch |
INN | (i,s) | b | Test set membership | |
INT | (s,s) | s | Set intersection | |
IOR | (b,b) | b | Boolean inciusive OR | |
IXA | (a,i) | a | Q | Compute indexed address |
LAO | a | Q | Load base level address | |
LCA | a | Q | Load address of constant | |
LCI | x | PQ | Load constant indirect - assembler generated | |
LDA | a | PQ | Load address with level P | |
LDCc | x | Q | Load constant | |
LDOc | x | Q | Load contents of base level address | |
LEQc | (x,x) | b | Q | Compare on less than or equal |
LESc | (x,x) | b | Q | Compare on less than |
LODc | x | PQ | Load contents of address | |
MOD | (i,i) | i | Modulo | |
MOV | (a,a) | Q | Move | |
MPI | (i,i) | i | Integer multiplication | |
MPR | (r,r) | r | Real multiplication | |
MST | Special | P | Mark stack | |
NEQc | (x,x) | b | Q | Compare 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 | |
RETc | Special | 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) | Q | Store at base level address | |
STOc | (a,x) | Store at base level address | ||
STP | No effect | Stop | ||
STRc | (x) | PQ | Store at level P | |
TRC | (r) | i | Truncate | |
UJC | No effect | Error in case statement | ||
UJP | No effect | Q | Unconditional jump | |
UNI | (s, s) | s | Set union | |
XJP | (i) | Q | Indexed 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
Version en cache
21/11/2024 10:38:04 Cette version de la page est en cache (à la date du 21/11/2024 10:38:04) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.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
- GPMachine : Télécharger la dernière version
- Compiler Design : R. Wilhelm, et D. Maurer ISDN-10 : 0201422905
Références
- IHDCB332 - Théorie des langages : Syntaxe et sémantique : PY Schobbens,
Syntaxe et sémantique
(January 2010) - Prof. Dr. Dr. h.c. mult. Reinhard Wilhelm :
Compiler Design Lab
(version 30/07/10) - 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.