From 90f7ba9a23e7c290ebf84762a3c98b058102bf6f Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 4 Apr 2023 13:33:20 -0700 Subject: [PATCH] addressed final comments --- evm/src/cpu/kernel/asm/bignum/modexp.asm | 4 ---- evm/src/cpu/kernel/asm/bignum/modmul.asm | 2 +- evm/src/cpu/kernel/interpreter.rs | 11 +++++------ evm/src/cpu/kernel/tests/bignum/mod.rs | 14 +++++++------- evm/src/generation/prover_input.rs | 4 ++-- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/evm/src/cpu/kernel/asm/bignum/modexp.asm b/evm/src/cpu/kernel/asm/bignum/modexp.asm index 8081ae16..a994b12b 100644 --- a/evm/src/cpu/kernel/asm/bignum/modexp.asm +++ b/evm/src/cpu/kernel/asm/bignum/modexp.asm @@ -128,10 +128,6 @@ modexp_iszero_return: // stack: e != 0, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest %jumpi(modexp_loop) // end of modexp_loop - // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest - %pop10 - // stack: retdest - JUMP len_zero: // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest %pop10 diff --git a/evm/src/cpu/kernel/asm/bignum/modmul.asm b/evm/src/cpu/kernel/asm/bignum/modmul.asm index adc2ed91..57ed7eb5 100644 --- a/evm/src/cpu/kernel/asm/bignum/modmul.asm +++ b/evm/src/cpu/kernel/asm/bignum/modmul.asm @@ -164,4 +164,4 @@ len_zero: // stack: len, a_loc, b_loc, m_loc, out_loc, s1, s2, s3, retdest %pop8 // stack: retdest - JUMP \ No newline at end of file + JUMP diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index 77f4c2d5..cbd0162e 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -404,18 +404,17 @@ impl<'a> Interpreter<'a> { .debug_offsets .contains(&self.generation_state.registers.program_counter) { - // TODO: uncomment - // println!("At {}, stack={:?}", self.offset_name(), self.stack()); + println!("At {}, stack={:?}", self.offset_name(), self.stack()); } else if let Some(_label) = self.offset_label() { - // println!("At {label}"); + println!("At {label}"); } Ok(()) } - // fn offset_name(&self) -> String { - // KERNEL.offset_name(self.generation_state.registers.program_counter) - // } + fn offset_name(&self) -> String { + KERNEL.offset_name(self.generation_state.registers.program_counter) + } fn offset_label(&self) -> Option { KERNEL.offset_label(self.generation_state.registers.program_counter) diff --git a/evm/src/cpu/kernel/tests/bignum/mod.rs b/evm/src/cpu/kernel/tests/bignum/mod.rs index 29e19561..259d5889 100644 --- a/evm/src/cpu/kernel/tests/bignum/mod.rs +++ b/evm/src/cpu/kernel/tests/bignum/mod.rs @@ -475,7 +475,7 @@ fn test_modmul_bignum_all() -> Result<()> { let b = gen_bignum(bit_size); let m = gen_bignum(bit_size); if !m.is_zero() { - let output = a.clone() * b.clone() % m.clone(); + let output = &a * &b % &m; test_modmul_bignum(a, b, m, output)?; } @@ -483,20 +483,20 @@ fn test_modmul_bignum_all() -> Result<()> { let b = max_bignum(bit_size); let m = max_bignum(bit_size); if !m.is_zero() { - let output = a.clone() * b.clone() % m.clone(); + let output = &a * &b % &m; test_modmul_bignum(a, b, m, output)?; } } let inputs = test_data_biguint(TEST_DATA_BIGNUM_INPUTS); let modmul_outputs = test_data_biguint(TEST_DATA_MODMUL_OUTPUTS); - let mut modmul_outputs_iter = modmul_outputs.iter(); + let mut modmul_outputs_iter = modmul_outputs.into_iter(); for a in &inputs { for b in &inputs { // For m, skip the first input, which is zero. for m in &inputs[1..] { let output = modmul_outputs_iter.next().unwrap(); - test_modmul_bignum(a.clone(), b.clone(), m.clone(), output.clone())?; + test_modmul_bignum(a.clone(), b.clone(), m.clone(), output)?; } } } @@ -523,7 +523,7 @@ fn test_modexp_bignum_all() -> Result<()> { let e = max_bignum(*exp_bit_size); let m = max_bignum(*bit_size); if !m.is_zero() { - let output = b.clone().modpow(&e, &m); + let output = b.modpow(&e, &m); test_modexp_bignum(b, e, m, output)?; } } @@ -531,14 +531,14 @@ fn test_modexp_bignum_all() -> Result<()> { let inputs = test_data_biguint(TEST_DATA_BIGNUM_INPUTS); let modexp_outputs = test_data_biguint(TEST_DATA_MODEXP_OUTPUTS); - let mut modexp_outputs_iter = modexp_outputs.iter(); + let mut modexp_outputs_iter = modexp_outputs.into_iter(); for b in &inputs { // Include only smaller exponents, to keep tests from becoming too slow. for e in &inputs[..7] { // For m, skip the first input, which is zero. for m in &inputs[1..] { let output = modexp_outputs_iter.next().unwrap(); - test_modexp_bignum(b.clone(), e.clone(), m.clone(), output.clone())?; + test_modexp_bignum(b.clone(), e.clone(), m.clone(), output)?; } } } diff --git a/evm/src/generation/prover_input.rs b/evm/src/generation/prover_input.rs index 05e483a6..28380f7e 100644 --- a/evm/src/generation/prover_input.rs +++ b/evm/src/generation/prover_input.rs @@ -202,8 +202,8 @@ impl GenerationState { let m_biguint = mem_vec_to_biguint(m); let prod = a_biguint * b_biguint; - let quo = prod.clone() / m_biguint.clone(); - let rem = prod - quo.clone() * m_biguint; + let quo = &prod / &m_biguint; + let rem = prod - m_biguint * &quo; (biguint_to_mem_vec(rem), biguint_to_mem_vec(quo)) }