SELECT op
FROM
enterB => {
size: NAT ~ GetB[];
IF size > smallActivationSize THEN a.sEx ¬ NEW[SimpleVectorRep[size-smallActivationSize]];
a.bottom ¬ 0;
};
enterH => {
size: NAT ~ GetH[];
IF size > smallActivationSize THEN a.sEx ¬ NEW[SimpleVectorRep[size-smallActivationSize]];
a.bottom ¬ 0;
};
call0 => { a.bottom ¬ a.bottom - (a.n ¬ 1); EXIT };
call1 => { a.bottom ¬ a.bottom - (a.n ¬ 2); EXIT };
call2 => { a.bottom ¬ a.bottom - (a.n ¬ 3); EXIT };
call3 => { a.bottom ¬ a.bottom - (a.n ¬ 4); EXIT };
callB => { a.bottom ¬ a.bottom - (a.n ¬ 1+GetB[]); EXIT };
callH => { a.bottom ¬ a.bottom - (a.n ¬ 1+GetH[]); EXIT };
tailCall0 => { a.bottom ¬ a.bottom - (a.n ¬ 1); GOTO Tail };
tailCall1 => { a.bottom ¬ a.bottom - (a.n ¬ 2); GOTO Tail };
tailCall2 => { a.bottom ¬ a.bottom - (a.n ¬ 3); GOTO Tail };
tailCall3 => { a.bottom ¬ a.bottom - (a.n ¬ 4); GOTO Tail };
tailCallB => { a.bottom ¬ a.bottom - (a.n ¬ 1+GetB[]); GOTO Tail };
tailCallH => { a.bottom ¬ a.bottom - (a.n ¬ 1+GetH[]); GOTO Tail };
jumpB => { pc ¬ GetB[] };
jumpH => { pc ¬ GetH[] };
tJumpB => { target: NAT ~ GetB[]; IF True[Pop[a]] THEN pc ¬ target };
tJumpH => { target: NAT ~ GetH[]; IF True[Pop[a]] THEN pc ¬ target };
fJumpB => { target: NAT ~ GetB[]; IF False[Pop[a]] THEN pc ¬ target };
fJumpH => { target: NAT ~ GetH[]; IF False[Pop[a]] THEN pc ¬ target };
pushLiteral1 => { Push[a, c[1]] };
pushLiteral2 => { Push[a, c[2]] };
pushLiteral3 => { Push[a, c[3]] };
pushLiteral4 => { Push[a, c[4]] };
pushLiteralB => { Push[a, c[GetB[]]] };
pushLiteralH => { Push[a, c[GetH[]]] };
pushGlobal0 => { PushGlobal[0] };
pushGlobal1 => { PushGlobal[1] };
pushGlobal2 => { PushGlobal[2] };
pushGlobal3 => { PushGlobal[3] };
pushGlobalB => { PushGlobal[GetB[]] };
pushGlobalH => { PushGlobal[GetH[]] };
pushLocal0B => { Push[a, e[GetB[]]] };
pushLocalBB => {
p: Environment ¬ e;
THROUGH [0..GetB[]) DO p ¬ p.parent ENDLOOP;
Push[a, p[GetB[]]]
};
pushLocalBH => {
p: Environment ¬ e;
THROUGH [0..GetB[]) DO p ¬ p.parent ENDLOOP;
Push[a, p[GetH[]]]
};
pop => { a.bottom ¬ a.bottom - 1 };
popGlobalB => { g[GetB[]].cdr ¬ Pop[a] };
popGlobalH => { g[GetH[]].cdr ¬ Pop[a] };
popLocalBB => {
p: Environment ¬ e;
THROUGH [0..GetB[]) DO p ¬ p.parent ENDLOOP;
p[GetB[]] ¬ Pop[a];
};
popLocalBH => {
p: Environment ¬ e;
THROUGH [0..GetB[]) DO p ¬ p.parent ENDLOOP;
p[GetH[]] ¬ Pop[a];
};
closeB => { Push[a, CloseProcedure[c[GetB[]], e]] };
closeH => { Push[a, CloseProcedure[c[GetH[]], e]] };
return => { a.n ¬ 0; GOTO Tail };
ENDCASE => ERROR;