Information Technology Reference
In-Depth Information
15
12
11
8
7
0
F15
0
Opcode
ca
1
0
0 1
offset
F16
0
Opcode
ca
0 1
@s1 0
@s2_offset
Befehl
Operation
bsr
F15
111
1c
[•]
1
r0 = (pc & ~1) | glb.v, goto pc + (offset * 2)
bsr
F16
111
1c
[•]
1
r0 = (pc & ~1) | glb.v, goto s1 0 + s2_offset
ca:
Call-Flag : Zeigt einen unbedingten Sprung oder Unterprogrammaufruf an.
glb.v:
Visible-Flag : Zeigt an, dass der globale Registerspeicher sichtbar ist.
pc:
Program-Counter : Befehlszähler.
r0:
Register r0 (nimmt die Rücksprungadresse und das Visible-Bit auf).
s1 0 :
Base-Register : Basisregister (@0xf entspricht dem Wert 0).
s2:
Index-Register : Registerindirekte Adresse.
offset:
Befehlszählerrelative Halbwortsprungdistanz.
s2_offset:
Registerindirekte Adresse oder befehlszählerrelative Halbwortsprungdistanz.
@:
Bezeichnet die Registeradresse eines Operanden.
Stapelverwaltende Befehle und Systemaufrufe
15
12
11
8
7
4
3
0
F17
0
Opcode
1 1 1 1
uOpcode
imm
Befehl
Operation
alloc
100
1100
1b
Register auf dem Stapel reservieren:
lrm.sp -= imm
allocshow
100
0100
1b
Register auf dem Stapel reservieren und globale
Register einblenden: lrm.sp -= imm, glb.v = 1
allochide
100
0101
1b
Register auf dem Stapel reservieren und globale
Register ausblenden: lrm.sp -= imm, glb.v = 0
callpal
100
0010
1b
[•]
Aufruf eines PAL-Programms: save (status, glb, pc)
status = pmode , pc = pb (imm)
free
100
1110
1b
Register auf dem Registerstapel freigeben:
lrm.sp += imm, lrm.bp = lrm.sp < lrm.bp? lrm.bp: lrm.sp
mode
100
0011
1b
Betriebsmodus festlegen:
if (imm & 0x3) status.dmod = imm & 0x3
if (imm & 0xc) status.xmod = imm >> 2
trap
100
1000
1b
[•]
Aufruf eines Systemprogramms: save (status, glb, pc),
status = smode , pc = tb (imm)
glb.v:
Visible-Flag : Zeigt an, dass der globale Registerspeicher sichtbar ist.
imm:
Immediate-Value : Im Befehl codierter unmittelbarer Wert.
pb:
PAL-Base-Register (Spezialregister): Basisadresse der PAL-Tabelle.
Search WWH ::




Custom Search