VM-Instruction-Set (kuratiert)
Dieses Kapitel bindet das Instruktionsset der VM ein und ergaenzt es um Hinweise zur Nutzung im Unterricht.
Hinweise
- Die P-Code-Instruktionen sind zentral fuer das P-Code-Handbuch.
- Beispiele in diesem Handbuch referenzieren diese Liste.
Originalinhalt
TinyPl0 VM-Befehlssatz
Instruktionsformat
Jede Instruktion besteht aus:
op: Opcodel: Lexikalische Level-Differenza: Argument (Adresse oder Untercode)
Kodiert in C# als:
Opcodes
| Opcode | Wert | Bedeutung |
|---|---|---|
lit |
0 | Konstante a auf Stack laden |
opr |
1 | ALU-/Kontrolloperation nach Untercode a |
lod |
2 | Variable aus statischer Tiefe l, Offset a laden |
sto |
3 | Obersten Stackwert in statische Tiefe l, Offset a speichern |
cal |
4 | Prozeduraufruf mit statischem Link |
int |
5 | Stack um a Zellen erweitern |
jmp |
6 | Unbedingter Sprung zu a |
jpc |
7 | Bedingter Sprung zu a bei 0 auf Stack |
OPR-Untercodes
| Untercode | Bedeutung |
|---|---|
| 0 | Return (Frame verlassen) |
| 1 | Vorzeichenwechsel (-x) |
| 2 | Addition |
| 3 | Subtraktion |
| 4 | Multiplikation |
| 5 | Division |
| 6 | odd-Test |
| 8 | Gleichheit (=) |
| 9 | Ungleichheit (#) |
| 10 | Kleiner (<) |
| 11 | Groesser-gleich (>=) |
| 12 | Groesser (>) |
| 13 | Kleiner-gleich (<=) |
| 14 | Integer-Eingabe (?) |
| 15 | Integer-Ausgabe (!) |
Implementierung:
Registermodell
P: Program CounterB: Basiszeiger (aktueller Aktivierungsrahmen)T: Stack-Top
Statische Kette (base(l)) wird ueber ResolveBase aufgeloest.
Definierte Laufzeitdiagnosen
| Code | Bedeutung |
|---|---|
| 206 | Division durch 0 |
| 98 | EOF bei Integer-Eingabe |
| 97 | Ungueltiges Integer-Format bei Eingabe |
| 99 | Sonstiger VM-Laufzeitfehler (z. B. Stack-/Pointerfehler) |