diff --git a/evm/src/cpu/kernel/asm/ripemd/compression.asm b/evm/src/cpu/kernel/asm/ripemd/compression.asm index c8cbd020..67757738 100644 --- a/evm/src/cpu/kernel/asm/ripemd/compression.asm +++ b/evm/src/cpu/kernel/asm/ripemd/compression.asm @@ -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