diff --git a/evm/src/cpu/kernel/asm/ripemd/ripemd.asm b/evm/src/cpu/kernel/asm/ripemd/ripemd.asm index 8112f20f..d0afb6d0 100644 --- a/evm/src/cpu/kernel/asm/ripemd/ripemd.asm +++ b/evm/src/cpu/kernel/asm/ripemd/ripemd.asm @@ -92,15 +92,14 @@ global process: %macro padlength // stack: count %mod_const(64) - // stack: count % 64 - PUSH 56 - SUB - // stack: x = 56 - count % 64 - DUP1 - %lt_const(9) - // stack: x < 9 , x + // stack: t = count % 64 + PUSH 47 + DUP2 + // stack: t , 47 , t + GT + // stack: t > 47 , t %mul_const(64) - // stack: 64*(x < 9) , x - ADD - // stack: 64*(x < 9) + x + %add_const(56) + // stack: 56 + 64*(t > 47), t + SUB %endmacro diff --git a/evm/src/cpu/kernel/tests/ripemd.rs b/evm/src/cpu/kernel/tests/ripemd.rs index a976b8cc..3eca4506 100644 --- a/evm/src/cpu/kernel/tests/ripemd.rs +++ b/evm/src/cpu/kernel/tests/ripemd.rs @@ -12,8 +12,8 @@ fn make_input(word: &str) -> Vec { #[test] fn test_ripemd() -> Result<()> { - let input: Vec = make_input("a"); - let expected = U256::from("0x0bdc9d2d256b3ee9daae347be6f4dc835a467ffe"); + let input: Vec = make_input("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); + let expected = U256::from("0xb0e20b6e3116640286ed3a87a5713079b21f5189"); let kernel = combined_kernel(); let label = kernel.global_labels["ripemd_alt"];