fix stack manipulation

This commit is contained in:
Dmitry Vagner 2022-09-22 23:19:21 -07:00
parent 7342b96583
commit 0dfd1b6450

View File

@ -25,16 +25,38 @@
/// state[i], stateL[i], stateR[i], output[i], virt, retdest
global compress:
// stack: STATE, virt, retdest
%stack (stack) -> (0, 0, 16, 5, 1, stack)
%stack (CONSTS: 5, virt, switch, STATE: 5) -> (STATE, CONSTS, virt, switch, STATE)
// stack: STATE, 0, 0, 16, 5, 1, virt, switch, STATE, virt, retdest
// stack: STATE, virt, retdest
PUSH switch
DUP7
PUSH 1
PUSH 5
PUSH 16
PUSH 0
PUSH 0
// stack: 0, 0, 16, 5, 1, virt, switch, STATE, virt, retdest
DUP12
DUP12
DUP12
DUP12
DUP12
// stack: STATE, 0, 0, 16, 5, 1, virt, switch, STATE, virt, retdest
%jump(loop)
switch:
// stack: STATEL, STATE, virt, retdest
%stack (STATEL: 5, STATE: 5) -> (STATE, STATEL, STATE)
%stack (STATE: 5) -> (STATE, 0, 0, 16, 5, 0)
// %stack (STATEL: 5, STATE: 5, virt) -> (STATE, 0, 0, 16, 5, 0, virt, mix, STATEL, STATE, virt)
// stack: STATEL, STATE, virt, retdest
PUSH mix
DUP12
PUSH 0
PUSH 5
PUSH 16
// stack: 16, 5, 0, virt, mix, STATEL, STATE, virt, retdest
DUP15
DUP15
DUP15
DUP15
DUP15
// stack: STATE, 16, 5, 0, virt, mix, STATEL, STATE, virt, retdest
%stack (STATE: 5) -> (STATE, 0, 0)
// stack: STATE, 0, 0, 16, 5, 0, virt, mix, STATEL, STATE, virt, retdest
%jump(loop)
mix:
// stack: r0, r1, r2, r3, r4, l0, l1, l2, l3, l4, s0, s1, s2, s3, s4, VR, RD