Instrukce ICM

Legenda

TOP0 je vrchol zásobníku, TOP1 je hodnota pod vrcholem zásobníku a TOP2 je druhá hodnota pod vrcholem zásobníku. RES je případný výsledek, který se uloží na vrcholek zásobníku.

IN1, IN2, IN3 a IN4 jsou vstupní registry, OUT je výstupní registr, INOUT je vstupně/výstupní registr.

Adresa proměnné - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
GREF GSTKOFFS Po Po = GP + STKOFFS uloží na vrchol zásobníku ukazatel na globální hodnotu s posunem stkoffs
LREF LSTKOFFS Po Po = FP + STKOFFS uloží na vrchol zásobníku ukazatel na lokální hodnotu s posunem stkoffs
SREF SSTKOFFS Po Po = SP + STKOFFS uloží na vrchol zásobníku ukazatel na lokální hodnotu s posunem stkoffs

Adresa proměnné - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
GEREF GSTKOFFS Po Po = GP + STKOFFS uloží do registru ukazatel na globální hodnotu s posunem stkoffs
LEREF LSTKOFFS Po Po = FP + STKOFFS uloží do registru ukazatel na lokální hodnotu s posunem stkoffs

Inicializace - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
INITB Bo Bo = undefB zkonstruuje neinicializovanou hodnotu typu BOOLEAN na vrcholu zásobníku
INITI Io Io = undefI zkonstruuje neinicializovanou hodnotu typu INTEGER na vrcholu zásobníku
INITR Ro Ro = undefR zkonstruuje neinicializovanou hodnotu typu REAL na vrcholu zásobníku
INITS So So = undefS zkonstruuje neinicializovanou hodnotu typu STRING na vrcholu zásobníku

Inicializace - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EINITB Bo Bo = undefB zkonstruuje neinicializovanou hodnotu typu BOOLEAN v registru
EINITI Io Io = undefI zkonstruuje neinicializovanou hodnotu typu INTEGER na vrcholu zásobníku
EINITR Ro Ro = undefR zkonstruuje neinicializovanou hodnotu typu REAL na vrcholu zásobníku
EINITS So So = undefS zkonstruuje neinicializovanou hodnotu typu STRING v registru

Načtení literálů - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
LDLITB ABSNUM B1 B1 = static_cast<BOOLEAN>(operand) vytvoří na zásobníku konstantu typu BOOLEAN podle přímého operandu v instrukci; 0==FALSE, 1==TRUE
LDLITI LITINT I1 I1 = literalI[INTIDX] načte konstantu typu INTEGER s indexem INTIDX na zásobník
LDLITR LITREAL R1 R1 = literalR[REALIDX] načte konstantu typu REAL s indexem REALIDX na zásobník
LDLITS LITSTR S1 S1 = literalS[STRIDX] načte konstantu typu STRING s indexem STRIDX na zásobník

Načtení literálů - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
ELDLITB ABSNUM B1 B1 = static_cast<BOOLEAN>(operand) načte do registru konstantu typu BOOLEAN podle přímého operandu v instrukci; 0==FALSE, 1==TRUE
ELDLITI LITINT I1 I1 = literalI[INTIDX] načte konstantu typu INTEGER s indexem INTIDX na zásobník
ELDLITR LITREAL R1 R1 = literalR[REALIDX] načte konstantu typu REAL s indexem REALIDX na zásobník
ELDLITS LITSTR S1 S1 = literalS[STRIDX] načte konstantu typu STRING s indexem STRIDX na zásobník

Přesun mezi registry - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EMOVB B1 Bo Bo = B1 přesun mezi registry
EMOVI I1 Io Io = I1 přesun mezi registry
EMOVP P1 Po Po = P1 přesun mezi registry
EMOVR R1 Ro Ro = R1 přesun mezi registry
EMOVS S1 So So = create_string_by_copy( S1) přesun mezi registry

Unární aritmetické operace - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
CVRTIR I1 Ro Ro = real( I1) převede hodnotu typu INTEGER z vrcholu zásobníku na REAL a uloží ji na vrchol zásobníku
CVRTRI R1 Io Io = integer( R1) převede hodnotu typu REAL z vrcholu zásobníku na INTEGER a uloží ji na vrchol zásobníku
MINUSI I1 Io Io = -I I1 unární minus typu INTEGER
MINUSR R1 Ro Ro = -R R1 unární minus typu REAL
NOT B1 Bo Bo = not B1 negace

Unární aritmetické operace - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
ECVRTIR I1 Ro Ro = real( I1) převede hodnotu typu INTEGER z vrcholu zásobníku na REAL a uloží ji na vrchol zásobníku
ECVRTRI R1 Io Io = integer( R1) převede hodnotu typu REAL z vrcholu zásobníku na INTEGER a uloží ji na vrchol zásobníku
EMINUSI I1 Io Io = -I I1 unární minus typu INTEGER
EMINUSR R1 Ro Ro = -R R1 unární minus typu REAL
ENOT B1 Bo Bo = not B1 negace

Binární booleovské operace - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
AND B1 B2 Bo Bo = B1 and B2 booleovský součin
OR B1 B2 Bo Bo = B1 or B2 booleovský součet

Binární booleovské operace - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EAND B1 B2 Bo Bo = B1 and B2 booleovský součin
EOR B1 B2 Bo Bo = B1 or B2 booleovský součet

Porovnání booleovské - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EQB B1 B2 Bo Bo = B1 ==B B2 porovnání = typu BOOLEAN, výsledek je typu BOOLEAN
GEB B1 B2 Bo Bo = B1 >=B B2 porovnání >= typu BOOLEAN, výsledek je typu BOOLEAN
GTB B1 B2 Bo Bo = B1 >B B2 porovnání > typu BOOLEAN, výsledek je typu BOOLEAN
LEB B1 B2 Bo Bo = B1 <=B B2 porovnání <= typu BOOLEAN, výsledek je typu BOOLEAN
LTB B1 B2 Bo Bo = B1 <B B2 porovnání < typu BOOLEAN, výsledek je typu BOOLEAN
NEB B1 B2 Bo Bo = B1 <>B B2 porovnání <> typu BOOLEAN, výsledek je typu BOOLEAN

Porovnání booleovské - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EEQB B1 B2 Bo Bo = B1 ==B B2 porovnání = typu BOOLEAN, výsledek je typu BOOLEAN
EGEB B1 B2 Bo Bo = B1 >=B B2 porovnání >= typu BOOLEAN, výsledek je typu BOOLEAN
EGTB B1 B2 Bo Bo = B1 >B B2 porovnání > typu BOOLEAN, výsledek je typu BOOLEAN
ELEB B1 B2 Bo Bo = B1 <=B B2 porovnání <= typu BOOLEAN, výsledek je typu BOOLEAN
ELTB B1 B2 Bo Bo = B1 <B B2 porovnání < typu BOOLEAN, výsledek je typu BOOLEAN
ENEB B1 B2 Bo Bo = B1 <>B B2 porovnání <> typu BOOLEAN, výsledek je typu BOOLEAN

Binární celočíselné operace - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
ADDI I1 I2 Io Io = I1 +I I2 součet typu INTEGER
ADDP P1 I2 Po Po = P1 +I I2 součet POINTER + INTEGER
DIVI I1 I2 Io Io = I1 div I2 celočíselné dělení
MODI I1 I2 Io Io = I1 mod I2 celočíselné modulo
MULI I1 I2 Io Io = I1 *I I2 součin typu INTEGER
SUBI I1 I2 Io Io = I1 -I I2 rozdíl typu INTEGER
SUBP P1 I2 Po Po = P1 -I I2 rozdíl POINTER - INTEGER

Binární celočíselné operace - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EADDI I1 I2 Io Io = I1 +I I2 součet typu INTEGER
EADDP P1 I2 Po Po = P1 +P P2 součet POINTER + INTEGER
EDIVI I1 I2 Io Io = I1 div I2 celočíselné dělení
EMODI I1 I2 Io Io = I1 mod I2 celočíselné modulo
EMULI I1 I2 Io Io = I1 *I I2 součin typu INTEGER
ESUBI I1 I2 Io Io = I1 -I I2 rozdíl typu INTEGER
ESUBP P1 I2 Po Po = P1 -P P2 rozdíl POINTER - INTEGER

Porovnání celočíselné - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EQI I1 I2 Bo Bo = I1 ==I I2 porovnání = typu INTEGER, výsledek je typu BOOLEAN
GEI I1 I2 Bo Bo = I1 >=I I2 porovnání >= typu INTEGER, výsledek je typu BOOLEAN
GTI I1 I2 Bo Bo = I1 >I I2 porovnání > typu INTEGER, výsledek je typu BOOLEAN
LEI I1 I2 Bo Bo = I1 <=I I2 porovnání <= typu INTEGER, výsledek je typu BOOLEAN
LTI I1 I2 Bo Bo = I1 <I I2 porovnání < typu INTEGER, výsledek je typu BOOLEAN
NEI I1 I2 Bo Bo = I1 <>I I2 porovnání <> typu INTEGER, výsledek je typu BOOLEAN

Porovnání celočíselné - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EEQI I1 I2 Bo Bo = I1 ==I I2 porovnání = typu INTEGER, výsledek je typu BOOLEAN
EGEI I1 I2 Bo Bo = I1 >=I I2 porovnání >= typu INTEGER, výsledek je typu BOOLEAN
EGTI I1 I2 Bo Bo = I1 >I I2 porovnání > typu INTEGER, výsledek je typu BOOLEAN
ELEI I1 I2 Bo Bo = I1 <=I I2 porovnání <= typu INTEGER, výsledek je typu BOOLEAN
ELTI I1 I2 Bo Bo = I1 <I I2 porovnání < typu INTEGER, výsledek je typu BOOLEAN
ENEI I1 I2 Bo Bo = I1 <>I I2 porovnání <> typu INTEGER, výsledek je typu BOOLEAN

Binární reálné operace - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
ADDR R1 R2 Ro Ro = R1 +R R2 součet typu REAL
DIVR R1 R2 Ro Ro = R1 /R R2 reálné dělení
MULR R1 R2 Ro Ro = R1 *R R2 součin typu REAL
SUBR R1 R2 Ro Ro = R1 -R R2 rozdíl typu REAL

Binární reálné operace - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EADDR R1 R2 Ro Ro = R1 +R R2 součet typu REAL
EDIVR R1 R2 Ro Ro = R1 /R R2 reálné dělení
EMULR R1 R2 Ro Ro = R1 *R R2 součin typu REAL
ESUBR R1 R2 Ro Ro = R1 -R R2 rozdíl typu REAL

Porovnání reálné - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EQR R1 R2 Bo Bo = R1 ==R R2 porovnání = typu REAL, výsledek je typu BOOLEAN
GER R1 R2 Bo Bo = R1 >=R R2 porovnání >= typu REAL, výsledek je typu BOOLEAN
GTR R1 R2 Bo Bo = R1 >R R2 porovnání > typu REAL, výsledek je typu BOOLEAN
LER R1 R2 Bo Bo = R1 <=R R2 porovnání <= typu REAL, výsledek je typu BOOLEAN
LTR R1 R2 Bo Bo = R1 <R R2 porovnání < typu REAL, výsledek je typu BOOLEAN
NER R1 R2 Bo Bo = R1 <>R R2 porovnání <> typu REAL, výsledek je typu BOOLEAN

Porovnání reálné - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EEQR R1 R2 Bo Bo = R1 ==R R2 porovnání = typu REAL, výsledek je typu BOOLEAN
EGER R1 R2 Bo Bo = R1 >=R R2 porovnání >= typu REAL, výsledek je typu BOOLEAN
EGTR R1 R2 Bo Bo = R1 >R R2 porovnání > typu REAL, výsledek je typu BOOLEAN
ELER R1 R2 Bo Bo = R1 <=R R2 porovnání <= typu REAL, výsledek je typu BOOLEAN
ELTR R1 R2 Bo Bo = R1 <R R2 porovnání < typu REAL, výsledek je typu BOOLEAN
ENER R1 R2 Bo Bo = R1 <>R R2 porovnání <> typu REAL, výsledek je typu BOOLEAN

Binární řetězcové operace - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
ADDS S1 S2 So So = S1 +S S2 sloučení dvou řetězců
EQS S1 S2 Bo Bo = S1 ==S S2 porovnání = typu STRING, výsledek je typu BOOLEAN
GES S1 S2 Bo Bo = S1 >=S S2 porovnání >= typu STRING, výsledek je typu BOOLEAN
GTS S1 S2 Bo Bo = S1 >S S2 porovnání > typu STRING, výsledek je typu BOOLEAN
LES S1 S2 Bo Bo = S1 <=S S2 porovnání <= typu STRING, výsledek je typu BOOLEAN
LTS S1 S2 Bo Bo = S1 <S S2 porovnání < typu STRING, výsledek je typu BOOLEAN
NES S1 S2 Bo Bo = S1 <>S S2 porovnání <> typu STRING, výsledek je typu BOOLEAN

Binární řetězcové operace - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EADDS S1 S2 So So = S1 +S S2 sloučení dvou řetězců
EEQS S1 S2 Bo Bo = S1 ==S S2 porovnání = typu STRING, výsledek je typu BOOLEAN
EGES S1 S2 Bo Bo = S1 >=S S2 porovnání >= typu STRING, výsledek je typu BOOLEAN
EGTS S1 S2 Bo Bo = S1 >S S2 porovnání > typu STRING, výsledek je typu BOOLEAN
ELES S1 S2 Bo Bo = S1 <=S S2 porovnání <= typu STRING, výsledek je typu BOOLEAN
ELTS S1 S2 Bo Bo = S1 <S S2 porovnání < typu STRING, výsledek je typu BOOLEAN
ENES S1 S2 Bo Bo = S1 <>S S2 porovnání <> typu STRING, výsledek je typu BOOLEAN

Destrukce proměnných - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
DTORB B1 nothing zruší hodnotu typu BOOLEAN na vrcholu zásobníku
DTORI I1 nothing zruší hodnotu typu INTEGER na vrcholu zásobníku
DTORP P1 nothing zruší hodnotu typu ukazatel na vrcholu zásobníku
DTORR R1 nothing zruší hodnotu typu REAL na vrcholu zásobníku
DTORS S1 nothing zruší hodnotu typu STRING na vrcholu zásobníku

Čtení globálních proměnných - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
GLDB GSTKOFFS Bo Bo = *B (GP + STKOFFS) načte obsah globální hodnoty s posunem stkoffs typu BOOLEAN na vrchol zásobníku
GLDI GSTKOFFS Io Io = *I (GP + STKOFFS) načte obsah globální hodnoty s posunem stkoffs typu INTEGER na vrchol zásobníku
GLDR GSTKOFFS Ro Ro = *R (GP + STKOFFS) načte obsah globální hodnoty s posunem stkoffs typu REAL na vrchol zásobníku
GLDS GSTKOFFS So So = *S (GP + STKOFFS) načte obsah globální hodnoty s posunem stkoffs typu STRING na vrchol zásobníku

Čtení globálních proměnných - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
GELDB GSTKOFFS Bo Bo = *B (GP + STKOFFS) načte obsah globální hodnoty s posunem stkoffs typu BOOLEAN do registru
GELDI GSTKOFFS Io Io = *I (GP + STKOFFS) načte obsah globální hodnoty s posunem stkoffs typu INTEGER do registru
GELDR GSTKOFFS Ro Ro = *R (GP + STKOFFS) načte obsah globální hodnoty s posunem stkoffs typu REAL do registru
GELDS GSTKOFFS So So = *S (GP + STKOFFS) načte obsah globální hodnoty s posunem stkoffs typu STRING do registru

Zápis do globálních proměnných - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
GSTB GSTKOFFS B1 *B (GP + STKOFFS) = B1 uloží vrchol zásobníku do globální hodnoty s posunem stkoffs typu BOOLEAN
GSTI GSTKOFFS I1 *I (GP + STKOFFS) = I1 uloží vrchol zásobníku do globální hodnoty s posunem stkoffs typu INTEGER
GSTR GSTKOFFS R1 *R (GP + STKOFFS) = R1 uloží vrchol zásobníku do globální hodnoty s posunem stkoffs typu REAL
GSTS GSTKOFFS S1 *S (GP + STKOFFS) = S1 uloží vrchol zásobníku do globální hodnoty s posunem stkoffs typu STRING

Zápis do globálních proměnných - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
GESTB GSTKOFFS B1 *B (GP + STKOFFS) = B1 uloží registr do globální hodnoty s posunem stkoffs typu BOOLEAN
GESTI GSTKOFFS I1 *I (GP + STKOFFS) = I1 uloží registr do globální hodnoty s posunem stkoffs typu INTEGER
GESTR GSTKOFFS R1 *R (GP + STKOFFS) = R1 uloží registr do globální hodnoty s posunem stkoffs typu REAL
GESTS GSTKOFFS S1 *S (GP + STKOFFS) = S1 uloží vrchol zásobníku do globální hodnoty s posunem stkoffs typu STRING

Čtení lokálních proměnných - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
LLDB LSTKOFFS Bo Bo = *B (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu BOOLEAN na vrchol zásobníku
LLDI LSTKOFFS Io Io = *U (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu INTEGER na vrchol zásobníku
LLDP LSTKOFFS Po Po = *P (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu ukazatel na vrchol zásobníku
LLDR LSTKOFFS Ro Ro = *R (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu REAL na vrchol zásobníku
LLDS LSTKOFFS So So = *S (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu STRING na vrchol zásobníku

Čtení lokálních proměnných - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
LELDB LSTKOFFS Bo Bo = *B (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu BOOLEAN do registru
LELDI LSTKOFFS Io Io = *U (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu INTEGER na vrchol zásobníku
LELDP LSTKOFFS Po Po = *P (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu ukazatel na vrchol zásobníku
LELDR LSTKOFFS Ro Ro = *R (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu REAL na vrchol zásobníku
LELDS LSTKOFFS So So = *S (FP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu STRING na vrchol zásobníku

Zápis do lokálních proměnných - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
LSTB LSTKOFFS B1 *B (FP + STKOFFS) = B1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu BOOLEAN
LSTI LSTKOFFS I1 *I (FP + STKOFFS) = I1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu INTEGER
LSTR LSTKOFFS R1 *R (FP + STKOFFS) = R1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu REAL
LSTS LSTKOFFS S1 *S (FP + STKOFFS) = S1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu STRING

Zápis do lokálních proměnných - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
LESTB LSTKOFFS B1 *B (FP + STKOFFS) = B1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu BOOLEAN
LESTI LSTKOFFS I1 *I (FP + STKOFFS) = I1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu INTEGER
LESTR LSTKOFFS R1 *R (FP + STKOFFS) = R1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu REAL
LESTS LSTKOFFS S1 *S (FP + STKOFFS) = S1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu STRING

Čtení pomocných proměnných - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
SLDB SSTKOFFS Bo Bo = *B (SP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu BOOLEAN na vrchol zásobníku
SLDI SSTKOFFS Io Io = *U (SP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu INTEGER na vrchol zásobníku
SLDP SSTKOFFS Po Po = *P (SP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu ukazatel na vrchol zásobníku
SLDR SSTKOFFS Ro Ro = *R (SP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu REAL na vrchol zásobníku
SLDS SSTKOFFS So So = *S (SP + STKOFFS) načte obsah lokální hodnoty s posunem stkoffs typu STRING na vrchol zásobníku

Zápis do pomocných proměnných - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
SSTB SSTKOFFS B1 *B (SP + STKOFFS) = B1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu BOOLEAN
SSTI SSTKOFFS I1 *I (SP + STKOFFS) = I1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu INTEGER
SSTP SSTKOFFS P1 *P (SP + STKOFFS) = P1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu POINTER
SSTR SSTKOFFS R1 *R (SP + STKOFFS) = R1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu REAL
SSTS SSTKOFFS S1 *S (SP + STKOFFS) = S1 uloží vrchol zásobníku do lokální hodnoty s posunem stkoffs typu STRING

Přidání na zásobníku - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EPUSH Ao A1 Ao = A1 přidání na zásobník
EPUSHB Bo B1 Bo = B1 přidání na zásobník
EPUSHI Io I1 Io = I1 přidání na zásobník
EPUSHP Po P1 Po = P1 přidání na zásobník
EPUSHR Ro R1 Ro = R1 přidání na zásobník
EPUSHS So S1 So = S1 přidání na zásobník

Odebrání ze zásobníku - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
EPOP A1 Ao Ao = A1 odebrání ze zásobníku
EPOPB B1 Bo Bo = B1 odebrání ze zásobníku
EPOPI I1 Io Io = I1 odebrání ze zásobníku
EPOPP P1 Po Po = P1 odebrání ze zásobníku
EPOPR R1 Ro Ro = R1 odebrání ze zásobníku
EPOPS S1 So So = S1 odebrání ze zásobníku

Nepřímé čtení - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
XLDB P1 Bo Bo = *B P1 načte na vrchol zásobníku obsah proměnné typu BOOLEAN přes ukazatel
XLDI P1 Io Io = *I P1 načte na vrchol zásobníku obsah proměnné typu INTEGER přes ukazatel
XLDR P1 Ro Ro = *R P1 načte na vrchol zásobníku obsah proměnné typu REAL přes ukazatel
XLDS P1 So So = *S P1 načte na vrchol zásobníku obsah proměnné typu STRING přes ukazatel

Nepřímé čtení - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
XELDB P1 Bo Bo = *B P1 načte na vrchol zásobníku obsah proměnné typu BOOLEAN přes ukazatel
XELDI P1 Io Io = *I P1 načte na vrchol zásobníku obsah proměnné typu INTEGER přes ukazatel
XELDR P1 Ro Ro = *R P1 načte na vrchol zásobníku obsah proměnné typu REAL přes ukazatel
XELDS P1 So So = *S P1 načte do registru obsah proměnné typu STRING přes ukazatel

Nepřímý zápis - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
XSTB B1 P2 *B P2 = B1 uloží B1 do proměnné typu BOOLEAN přes ukazatel
XSTI I1 P2 *I P2 = I1 uloží I1 do proměnné typu INTEGER přes ukazatel
XSTR R1 P2 *R P2 = R1 uloží R1 do proměnné typu REAL přes ukazatel
XSTS S1 P2 *S P2 = S1 uloží S1 do proměnné typu STRING přes ukazatel

Nepřímý zápis - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
XESTB B1 P2 *B P2 = B1 uloží B1 do proměnné typu BOOLEAN přes ukazatel
XESTI I1 P2 *I P2 = I1 uloží I1 do proměnné typu INTEGER přes ukazatel
XESTR R1 P2 *R P2 = R1 uloží R1 do proměnné typu REAL přes ukazatel
XESTS S1 P2 *S P2 = S1 uloží S1 do proměnné typu STRING přes ukazatel

Skoky - univerzální

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
CALL ABSJUMP Fo Fo.RA = IP + 1
Fo.PFP = FP
IP = ABSNUM
FP = & Fo
skok do funkce/procedury s absolutní adresou
HALT Konec programu
JMP RELJUMP IP = IP + RELNUM nepodmíněný skok s relativním posunem
RET F1 IP = F1.RA
FP = F1.PFP
návrat z funkce/procedury

Skoky - zásobníkový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
JF RELJUMP B1 if not B1 then IP = IP + RELNUM podmíněný skok s relativním posunem, pokud je na vrcholu zásobníku FALSE
JT RELJUMP B1 if B1 then IP = IP + RELNUM podmíněný skok s relativním posunem, pokud je na vrcholu zásobníku TRUE

Skoky - registrový stroj

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
JEF RELJUMP B1 if not B1 then IP = IP + RELNUM podmíněný skok s relativním posunem, pokud je na vrcholu zásobníku FALSE
JET RELJUMP B1 if B1 then IP = IP + RELNUM podmíněný skok s relativním posunem, pokud je v registru TRUE

Ostatní - univerzální

Opcode Operand TOP2 TOP1 TOP0 RES IN1 IN2 IN3 IN4 OUT INOUT Symbolický popis Slovní popis
FNCREADI Io Io=READI volání předdefinované funkce READI
FNCREADR Ro Io=READR volání předdefinované funkce READR
FNCREADS So So=READS volání předdefinované funkce READS
FNCWRITEI I1 WRITEI(I1) volání předdefinované funkce WRITEI
FNCWRITELN WRITELN() volání předdefinované funkce WRITELN
FNCWRITER R1 WRITER(R1) volání předdefinované funkce WRITER
FNCWRITES S1 WRITES(S1) volání předdefinované funkce WRITES
NOP nedělá nic
SADD SSTKOFFS SP =SP + STKOFFS přičte konstantu (případně zápornou) k ukazateli zásobníku