From 264192aa05fe3a2862e2ee1b1c43adaa393ef335 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 20 Jun 2023 11:56:21 -0700 Subject: [PATCH 01/10] modexp uses current_general --- evm/src/cpu/kernel/asm/bignum/add.asm | 6 +++--- evm/src/cpu/kernel/asm/bignum/addmul.asm | 6 +++--- evm/src/cpu/kernel/asm/bignum/cmp.asm | 4 ++-- evm/src/cpu/kernel/asm/bignum/isone.asm | 2 +- evm/src/cpu/kernel/asm/bignum/iszero.asm | 2 +- evm/src/cpu/kernel/asm/bignum/modexp.asm | 6 +++--- evm/src/cpu/kernel/asm/bignum/modmul.asm | 8 ++++---- evm/src/cpu/kernel/asm/bignum/mul.asm | 4 ++-- evm/src/cpu/kernel/asm/bignum/shr.asm | 4 ++-- 9 files changed, 21 insertions(+), 21 deletions(-) diff --git a/evm/src/cpu/kernel/asm/bignum/add.asm b/evm/src/cpu/kernel/asm/bignum/add.asm index 7d63d407..c9070dd1 100644 --- a/evm/src/cpu/kernel/asm/bignum/add.asm +++ b/evm/src/cpu/kernel/asm/bignum/add.asm @@ -14,10 +14,10 @@ global add_bignum: add_loop: // stack: carry, i, a_cur_loc, b_cur_loc, retdest DUP4 - %mload_kernel_general + %mload_current_general // stack: b[cur], carry, i, a_cur_loc, b_cur_loc, retdest DUP4 - %mload_kernel_general + %mload_current_general // stack: a[cur], b[cur], carry, i, a_cur_loc, b_cur_loc, retdest ADD ADD @@ -32,7 +32,7 @@ add_loop: // stack: c[cur] = (a[cur] + b[cur] + carry) % 2^128, carry_new = (a[cur] + b[cur] + carry) // 2^128, i, a_cur_loc, b_cur_loc, retdest DUP4 // stack: a_cur_loc, c[cur], carry_new, i, a_cur_loc, b_cur_loc, retdest - %mstore_kernel_general + %mstore_current_general // stack: carry_new, i, a_cur_loc, b_cur_loc, retdest SWAP2 %increment diff --git a/evm/src/cpu/kernel/asm/bignum/addmul.asm b/evm/src/cpu/kernel/asm/bignum/addmul.asm index f12eaa00..13e59e6d 100644 --- a/evm/src/cpu/kernel/asm/bignum/addmul.asm +++ b/evm/src/cpu/kernel/asm/bignum/addmul.asm @@ -14,7 +14,7 @@ addmul_loop: // stack: carry_limb, i, a_cur_loc, b_cur_loc, val, retdest DUP4 // stack: b_cur_loc, carry_limb, i, a_cur_loc, b_cur_loc, val, retdest - %mload_kernel_general + %mload_current_general // stack: b[cur], carry_limb, i, a_cur_loc, b_cur_loc, val, retdest DUP6 // stack: val, b[cur], carry_limb, i, a_cur_loc, b_cur_loc, val, retdest @@ -31,7 +31,7 @@ addmul_loop: // stack: prod_lo = val * b[cur] % 2^128, prod_hi = (val * b[cur]) // 2^128, carry_limb, i, a_cur_loc, b_cur_loc, val, retdest DUP5 // stack: a_cur_loc, prod_lo, prod_hi, carry_limb, i, a_cur_loc, b_cur_loc, val, retdest - %mload_kernel_general + %mload_current_general // stack: a[cur], prod_lo, prod_hi, carry_limb, i, a_cur_loc, b_cur_loc, val, retdest DUP1 // stack: a[cur], a[cur], prod_lo, prod_hi, carry_limb, i, a_cur_loc, b_cur_loc, val, retdest @@ -75,7 +75,7 @@ addmul_loop: // stack: to_write, carry_limb, i, a_cur_loc, b_cur_loc, val, retdest DUP4 // stack: a_cur_loc, to_write, carry_limb, i, a_cur_loc, b_cur_loc, val, retdest - %mstore_kernel_general + %mstore_current_general // stack: carry_limb, i, a_cur_loc, b_cur_loc, val, retdest SWAP1 // stack: i, carry_limb, a_cur_loc, b_cur_loc, val, retdest diff --git a/evm/src/cpu/kernel/asm/bignum/cmp.asm b/evm/src/cpu/kernel/asm/bignum/cmp.asm index 840fceff..d5abd238 100644 --- a/evm/src/cpu/kernel/asm/bignum/cmp.asm +++ b/evm/src/cpu/kernel/asm/bignum/cmp.asm @@ -32,9 +32,9 @@ ge_loop: DUP3 DUP3 // stack: a_i_loc, b_i_loc, i, a_i_loc, b_i_loc, retdest - %mload_kernel_general + %mload_current_general SWAP1 - %mload_kernel_general + %mload_current_general SWAP1 // stack: a[i], b[i], i, a_i_loc, b_i_loc, retdest %stack (vals: 2) -> (vals, vals) diff --git a/evm/src/cpu/kernel/asm/bignum/isone.asm b/evm/src/cpu/kernel/asm/bignum/isone.asm index 69b2bfad..7aaf32f4 100644 --- a/evm/src/cpu/kernel/asm/bignum/isone.asm +++ b/evm/src/cpu/kernel/asm/bignum/isone.asm @@ -10,7 +10,7 @@ global isone_bignum: // stack: len, start_loc, retdest DUP2 // stack: start_loc, len, start_loc, retdest - %mload_kernel_general + %mload_current_general // stack: start_val, len, start_loc, retdest %eq_const(1) %jumpi(starts_with_one) diff --git a/evm/src/cpu/kernel/asm/bignum/iszero.asm b/evm/src/cpu/kernel/asm/bignum/iszero.asm index 2f742f77..a6027b61 100644 --- a/evm/src/cpu/kernel/asm/bignum/iszero.asm +++ b/evm/src/cpu/kernel/asm/bignum/iszero.asm @@ -17,7 +17,7 @@ iszero_loop: // stack: cur_loc, end_loc, retdest DUP1 // stack: cur_loc, cur_loc, end_loc, retdest - %mload_kernel_general + %mload_current_general // stack: cur_val, cur_loc, end_loc, retdest %jumpi(neqzero) // stack: cur_loc, end_loc, retdest diff --git a/evm/src/cpu/kernel/asm/bignum/modexp.asm b/evm/src/cpu/kernel/asm/bignum/modexp.asm index 331755a8..70095caa 100644 --- a/evm/src/cpu/kernel/asm/bignum/modexp.asm +++ b/evm/src/cpu/kernel/asm/bignum/modexp.asm @@ -72,7 +72,7 @@ e_zero_return: PUSH 1 DUP6 // stack: out_loc, 1, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest - %mstore_kernel_general + %mstore_current_general modexp_loop: // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest @@ -80,7 +80,7 @@ modexp_loop: // y := e % 2 DUP3 // stack: e_loc, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest - %mload_kernel_general + %mload_current_general // stack: e_first, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest %mod_const(2) // stack: y = e_first % 2 = e % 2, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest @@ -186,7 +186,7 @@ b_and_e_zero: // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest PUSH 1 DUP6 - %mstore_kernel_general + %mstore_current_general %pop10 // stack: retdest JUMP diff --git a/evm/src/cpu/kernel/asm/bignum/modmul.asm b/evm/src/cpu/kernel/asm/bignum/modmul.asm index 57ed7eb5..8b19d3e1 100644 --- a/evm/src/cpu/kernel/asm/bignum/modmul.asm +++ b/evm/src/cpu/kernel/asm/bignum/modmul.asm @@ -31,7 +31,7 @@ modmul_remainder_loop: DUP3 ADD // stack: out_loc[i], PI, i, len, a_loc, b_loc, m_loc, out_loc, s1, s2, s3, retdest - %mstore_kernel_general + %mstore_current_general // stack: i, len, a_loc, b_loc, m_loc, out_loc, s1, s2, s3, retdest %increment DUP2 @@ -79,7 +79,7 @@ modmul_quotient_loop: DUP3 ADD // stack: s1[i], PI, i, 2*len, len, a_loc, b_loc, m_loc, out_loc, s1, s2, s3, retdest - %mstore_kernel_general + %mstore_current_general // stack: i, 2*len, len, a_loc, b_loc, m_loc, out_loc, s1, s2, s3, retdest %increment DUP2 @@ -136,9 +136,9 @@ modmul_check_loop: // stack: n, i, j, retdest %stack (l, idx: 2) -> (idx, l, idx) // stack: i, j, n, i, j, retdest - %mload_kernel_general + %mload_current_general SWAP1 - %mload_kernel_general + %mload_current_general SWAP1 // stack: mem[i], mem[j], n, i, j, retdest %assert_eq diff --git a/evm/src/cpu/kernel/asm/bignum/mul.asm b/evm/src/cpu/kernel/asm/bignum/mul.asm index ae8230f3..ddb3346d 100644 --- a/evm/src/cpu/kernel/asm/bignum/mul.asm +++ b/evm/src/cpu/kernel/asm/bignum/mul.asm @@ -20,7 +20,7 @@ mul_loop: // stack: mul_addmul_return, n, len, a_start_loc, bi, output_cur, retdest DUP5 // stack: bi, mul_addmul_return, n, len, a_start_loc, bi, output_cur, retdest - %mload_kernel_general + %mload_current_general // stack: b[i], mul_addmul_return, n, len, a_start_loc, bi, output_cur, retdest, b DUP5 // stack: a_start_loc, b[i], mul_addmul_return, n, len, a_start_loc, bi, output_cur, retdest, b @@ -37,7 +37,7 @@ mul_addmul_return: // stack: len, output_cur, carry_limb, n, len, a_start_loc, bi, output_cur, retdest ADD // stack: output_cur + len, carry_limb, n, len, a_start_loc, bi, output_cur, retdest - %mstore_kernel_general + %mstore_current_general // stack: n, len, a_start_loc, bi, output_cur, retdest %decrement // stack: n-1, len, a_start_loc, bi, output_cur, retdest diff --git a/evm/src/cpu/kernel/asm/bignum/shr.asm b/evm/src/cpu/kernel/asm/bignum/shr.asm index 99911bf0..adf95770 100644 --- a/evm/src/cpu/kernel/asm/bignum/shr.asm +++ b/evm/src/cpu/kernel/asm/bignum/shr.asm @@ -22,7 +22,7 @@ shr_loop: // stack: i, carry, start_loc, retdest DUP1 // stack: i, i, carry, start_loc, retdest - %mload_kernel_general + %mload_current_general // stack: a[i], i, carry, start_loc, retdest DUP1 // stack: a[i], a[i], i, carry, start_loc, retdest @@ -40,7 +40,7 @@ shr_loop: // stack: carry << 127 | a[i] >> 1, i, new_carry, start_loc, retdest DUP2 // stack: i, carry << 127 | a[i] >> 1, i, new_carry, start_loc, retdest - %mstore_kernel_general + %mstore_current_general // stack: i, new_carry, start_loc, retdest DUP1 // stack: i, i, new_carry, start_loc, retdest From bc53ddc56f24e52a4d5c03a1d8bc8c40eae86e42 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 20 Jun 2023 12:01:24 -0700 Subject: [PATCH 02/10] fix --- evm/src/cpu/kernel/asm/bignum/modexp.asm | 10 +++++----- evm/src/cpu/kernel/asm/bignum/util.asm | 4 ++-- evm/src/cpu/kernel/interpreter.rs | 11 +++++++++++ evm/src/cpu/kernel/tests/bignum/mod.rs | 4 ++-- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/evm/src/cpu/kernel/asm/bignum/modexp.asm b/evm/src/cpu/kernel/asm/bignum/modexp.asm index 70095caa..f149e54d 100644 --- a/evm/src/cpu/kernel/asm/bignum/modexp.asm +++ b/evm/src/cpu/kernel/asm/bignum/modexp.asm @@ -65,7 +65,7 @@ e_zero_return: DUP3 DUP8 // stack: s1, b_loc, len, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest - %memcpy_kernel_general + %memcpy_current_general // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest // We store the accumulated output value x_i in output_loc, starting with x_0=1. @@ -108,7 +108,7 @@ modexp_mul_return: DUP11 DUP7 // stack: out_loc, s5, len, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest - %memcpy_kernel_general + %memcpy_current_general // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest // Zero out scratch_2..scratch_5. @@ -116,7 +116,7 @@ modexp_mul_return: %mul_const(8) DUP8 // stack: s2, 8 * len, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest - %clear_kernel_general + %clear_current_general // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest modexp_y_0: @@ -142,7 +142,7 @@ modexp_square_return: DUP11 DUP8 // stack: s1, s5, len, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest - %memcpy_kernel_general + %memcpy_current_general // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest // Zero out scratch_2..scratch_5. @@ -150,7 +150,7 @@ modexp_square_return: %mul_const(8) DUP8 // stack: s2, 8 * len, len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest - %clear_kernel_general + %clear_current_general // stack: len, b_loc, e_loc, m_loc, out_loc, s1, s2, s3, s4, s5, retdest // e //= 2 (with shr_bignum) diff --git a/evm/src/cpu/kernel/asm/bignum/util.asm b/evm/src/cpu/kernel/asm/bignum/util.asm index 2c6b2185..fd60c1e7 100644 --- a/evm/src/cpu/kernel/asm/bignum/util.asm +++ b/evm/src/cpu/kernel/asm/bignum/util.asm @@ -1,11 +1,11 @@ -%macro memcpy_kernel_general +%macro memcpy_current_general // stack: dst, src, len %stack (dst, src, len) -> (0, @SEGMENT_KERNEL_GENERAL, dst, 0, @SEGMENT_KERNEL_GENERAL, src, len, %%after) %jump(memcpy) %%after: %endmacro -%macro clear_kernel_general +%macro clear_current_general // stack: dst, len %stack (dst, len) -> (0, @SEGMENT_KERNEL_GENERAL, dst, 0, len, %%after) %jump(memset) diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index 821ff51b..717833a4 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -204,6 +204,12 @@ impl<'a> Interpreter<'a> { .collect() } + pub(crate) fn get_current_general_memory(&self) -> Vec { + self.generation_state.memory.contexts[self.context].segments[Segment::KernelGeneral as usize] + .content + .clone() + } + pub(crate) fn get_kernel_general_memory(&self) -> Vec { self.get_memory_segment(Segment::KernelGeneral) } @@ -216,6 +222,11 @@ impl<'a> Interpreter<'a> { self.generation_state.memory.contexts[0].segments[segment as usize].content = memory; } + pub(crate) fn set_current_general_memory(&mut self, memory: Vec) { + self.generation_state.memory.contexts[self.context].segments[Segment::KernelGeneral as usize] + .content = memory; + } + pub(crate) fn set_kernel_general_memory(&mut self, memory: Vec) { self.set_memory_segment(Segment::KernelGeneral, memory) } diff --git a/evm/src/cpu/kernel/tests/bignum/mod.rs b/evm/src/cpu/kernel/tests/bignum/mod.rs index 69474134..f7ba2206 100644 --- a/evm/src/cpu/kernel/tests/bignum/mod.rs +++ b/evm/src/cpu/kernel/tests/bignum/mod.rs @@ -100,10 +100,10 @@ fn run_test(fn_label: &str, memory: Vec, stack: Vec) -> Result<(Vec< initial_stack.reverse(); let mut interpreter = Interpreter::new_with_kernel(fn_label, initial_stack); - interpreter.set_kernel_general_memory(memory); + interpreter.set_current_general_memory(memory); interpreter.run()?; - let new_memory = interpreter.get_kernel_general_memory(); + let new_memory = interpreter.get_current_general_memory(); Ok((new_memory, interpreter.stack().to_vec())) } From afd4bd0406be3f26bd7298d4620497ad5d73fe1f Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 20 Jun 2023 12:02:45 -0700 Subject: [PATCH 03/10] cleanup --- evm/src/cpu/kernel/interpreter.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index 717833a4..2b15d552 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -218,19 +218,11 @@ impl<'a> Interpreter<'a> { self.get_memory_segment_bytes(Segment::RlpRaw) } - pub(crate) fn set_memory_segment(&mut self, segment: Segment, memory: Vec) { - self.generation_state.memory.contexts[0].segments[segment as usize].content = memory; - } - pub(crate) fn set_current_general_memory(&mut self, memory: Vec) { self.generation_state.memory.contexts[self.context].segments[Segment::KernelGeneral as usize] .content = memory; } - pub(crate) fn set_kernel_general_memory(&mut self, memory: Vec) { - self.set_memory_segment(Segment::KernelGeneral, memory) - } - pub(crate) fn set_memory_segment_bytes(&mut self, segment: Segment, memory: Vec) { self.generation_state.memory.contexts[0].segments[segment as usize].content = memory.into_iter().map(U256::from).collect(); From 9bb6da049e262bd25b90427d5ec5c801444ae795 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 20 Jun 2023 12:30:37 -0700 Subject: [PATCH 04/10] fmt --- evm/src/cpu/kernel/interpreter.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index 2b15d552..7e9482e8 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -205,7 +205,8 @@ impl<'a> Interpreter<'a> { } pub(crate) fn get_current_general_memory(&self) -> Vec { - self.generation_state.memory.contexts[self.context].segments[Segment::KernelGeneral as usize] + self.generation_state.memory.contexts[self.context].segments + [Segment::KernelGeneral as usize] .content .clone() } @@ -219,7 +220,8 @@ impl<'a> Interpreter<'a> { } pub(crate) fn set_current_general_memory(&mut self, memory: Vec) { - self.generation_state.memory.contexts[self.context].segments[Segment::KernelGeneral as usize] + self.generation_state.memory.contexts[self.context].segments + [Segment::KernelGeneral as usize] .content = memory; } From 2fa43121d787f6de50b730d2f2ac718c077eba7a Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 20 Jun 2023 12:48:21 -0700 Subject: [PATCH 05/10] dummy change to get tests to rerun :P --- evm/src/cpu/kernel/interpreter.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index 7e9482e8..798f7782 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -195,6 +195,7 @@ impl<'a> Interpreter<'a> { .content .clone() } + pub(crate) fn get_memory_segment_bytes(&self, segment: Segment) -> Vec { self.generation_state.memory.contexts[0].segments[segment as usize] From 8eeca9be95efe687d73c9cdb796861517e768dab Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 20 Jun 2023 12:48:38 -0700 Subject: [PATCH 06/10] undo dummy change --- evm/src/cpu/kernel/interpreter.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index 798f7782..916792de 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -196,7 +196,6 @@ impl<'a> Interpreter<'a> { .clone() } - pub(crate) fn get_memory_segment_bytes(&self, segment: Segment) -> Vec { self.generation_state.memory.contexts[0].segments[segment as usize] .content From 975e9a49faa176c013b073c5adc2b7a9c20e6959 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 20 Jun 2023 12:51:55 -0700 Subject: [PATCH 07/10] fmt --- evm/src/cpu/kernel/interpreter.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index 916792de..7e9482e8 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -195,7 +195,7 @@ impl<'a> Interpreter<'a> { .content .clone() } - + pub(crate) fn get_memory_segment_bytes(&self, segment: Segment) -> Vec { self.generation_state.memory.contexts[0].segments[segment as usize] .content From 54cf74ac2dccbfc255a988c8367a37d2e6b09878 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Wed, 21 Jun 2023 09:03:43 -0700 Subject: [PATCH 08/10] addressed comments --- evm/Cargo.toml | 4 ++-- evm/src/cpu/kernel/asm/bignum/util.asm | 6 ++++-- evm/src/cpu/kernel/asm/core/precompiles/expmod.asm | 14 +++++++------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/evm/Cargo.toml b/evm/Cargo.toml index 63f4ec0c..36ff15bc 100644 --- a/evm/Cargo.toml +++ b/evm/Cargo.toml @@ -26,8 +26,8 @@ num-bigint = "0.4.3" once_cell = "1.13.0" pest = "2.1.3" pest_derive = "2.1.0" -plonky2 = { version = "0.1.2", default-features = false, features = ["timing"] } -plonky2_util = { version = "0.1.0" } +plonky2 = { path = "../plonky2", default-features = false, features = ["timing"] } +plonky2_util = { path = "../util" } rand = "0.8.5" rand_chacha = "0.3.1" rlp = "0.5.1" diff --git a/evm/src/cpu/kernel/asm/bignum/util.asm b/evm/src/cpu/kernel/asm/bignum/util.asm index fd60c1e7..c790733a 100644 --- a/evm/src/cpu/kernel/asm/bignum/util.asm +++ b/evm/src/cpu/kernel/asm/bignum/util.asm @@ -1,13 +1,15 @@ %macro memcpy_current_general // stack: dst, src, len - %stack (dst, src, len) -> (0, @SEGMENT_KERNEL_GENERAL, dst, 0, @SEGMENT_KERNEL_GENERAL, src, len, %%after) + GET_CONTEXT + %stack (context, dst, src, len) -> (context, @SEGMENT_KERNEL_GENERAL, dst, 0, @SEGMENT_KERNEL_GENERAL, src, len, %%after) %jump(memcpy) %%after: %endmacro %macro clear_current_general // stack: dst, len - %stack (dst, len) -> (0, @SEGMENT_KERNEL_GENERAL, dst, 0, len, %%after) + GET_CONTEXT + %stack (context, dst, len) -> (context, @SEGMENT_KERNEL_GENERAL, dst, 0, len, %%after) %jump(memset) %%after: %endmacro diff --git a/evm/src/cpu/kernel/asm/core/precompiles/expmod.asm b/evm/src/cpu/kernel/asm/core/precompiles/expmod.asm index 1e712b8f..2185ee2c 100644 --- a/evm/src/cpu/kernel/asm/core/precompiles/expmod.asm +++ b/evm/src/cpu/kernel/asm/core/precompiles/expmod.asm @@ -61,7 +61,7 @@ store_limbs: // stack: offset, retdest, num_limbs, limb[num_limbs - 1], ..limb[0] %stack (offset, ret, num, limb) -> (offset, limb, offset, ret, num) // stack: offset, limb[num_limbs - 1], offset, retdest, num_limbs, limb[num_limbs - 2], ..limb[0] - %mstore_kernel_general + %mstore_current_general // stack: offset, retdest, num_limbs, limb[num_limbs - 2], ..limb[0] %increment SWAP2 @@ -230,7 +230,7 @@ l_E_prime_return: %stack (kexit_info, l: 4) -> (l, kexit_info) // stack: len, l_M, l_E, l_B, kexit_info - // Copy B to kernel general memory. + // Copy B to memory. // stack: len, l_M, l_E, l_B, kexit_info DUP1 // stack: len, len, l_M, l_E, l_B, kexit_info @@ -262,7 +262,7 @@ copy_b_len_zero: %pop3 copy_b_end: - // Copy E to kernel general memory. + // Copy E to memory. // stack: len, l_M, l_E, l_B, kexit_info DUP1 // stack: len, len, l_M, l_E, l_B, kexit_info @@ -294,7 +294,7 @@ copy_e_len_zero: %pop3 copy_e_end: - // Copy M to kernel general memory. + // Copy M to memory. // stack: len, l_M, l_E, l_B, kexit_info DUP1 // stack: len, len, l_M, l_E, l_B, kexit_info @@ -389,7 +389,7 @@ copy_m_end: expmod_contd: // stack: len, l_M, kexit_info - // Copy the result value from kernel general memory to the parent's return data. + // Copy the result value from memory to the parent's return data. // Store return data size: l_M (number of bytes). SWAP1 @@ -411,7 +411,7 @@ expmod_contd: DUP2 ADD // stack: cur_address=out+l_M_128-1, end_address=out-1, l_M_128, l_M%16, kexit_info - DUP1 %mload_kernel_general + DUP1 %mload_current_general %stack (cur_limb, cur_address, end_address, l_M_128, l_M_mod16, kexit_info) -> (@SEGMENT_RETURNDATA, 0, cur_limb, l_M_mod16, cur_address, end_address, l_M_128, kexit_info) %mload_context_metadata(@CTX_METADATA_PARENT_CONTEXT) @@ -425,7 +425,7 @@ expmod_store_loop: // stack: cur_address, offset, end_address, l_M_128, kexit_info DUP3 DUP2 EQ %jumpi(expmod_store_end) // stack: cur_address, offset, end_address, l_M_128, kexit_info - DUP1 %mload_kernel_general + DUP1 %mload_current_general %stack (cur_limb, cur_address, offset, end_address, l_M_128, kexit_info) -> (offset, cur_limb, cur_address, end_address, l_M_128, kexit_info) %stack (offset, cur_limb) -> (@SEGMENT_RETURNDATA, offset, cur_limb, 16) From 897e2e99e7448fef185b64003952c557ee26e98b Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Wed, 21 Jun 2023 12:32:39 -0700 Subject: [PATCH 09/10] fix --- evm/src/cpu/kernel/asm/bignum/util.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evm/src/cpu/kernel/asm/bignum/util.asm b/evm/src/cpu/kernel/asm/bignum/util.asm index c790733a..79cbc1ec 100644 --- a/evm/src/cpu/kernel/asm/bignum/util.asm +++ b/evm/src/cpu/kernel/asm/bignum/util.asm @@ -1,7 +1,7 @@ %macro memcpy_current_general // stack: dst, src, len GET_CONTEXT - %stack (context, dst, src, len) -> (context, @SEGMENT_KERNEL_GENERAL, dst, 0, @SEGMENT_KERNEL_GENERAL, src, len, %%after) + %stack (context, dst, src, len) -> (context, @SEGMENT_KERNEL_GENERAL, dst, context, @SEGMENT_KERNEL_GENERAL, src, len, %%after) %jump(memcpy) %%after: %endmacro From 605ea47fd1234f4b5a83f8fe120625fd11c291bc Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Wed, 21 Jun 2023 13:04:54 -0700 Subject: [PATCH 10/10] reset Cargo.toml --- evm/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evm/Cargo.toml b/evm/Cargo.toml index 36ff15bc..63f4ec0c 100644 --- a/evm/Cargo.toml +++ b/evm/Cargo.toml @@ -26,8 +26,8 @@ num-bigint = "0.4.3" once_cell = "1.13.0" pest = "2.1.3" pest_derive = "2.1.0" -plonky2 = { path = "../plonky2", default-features = false, features = ["timing"] } -plonky2_util = { path = "../util" } +plonky2 = { version = "0.1.2", default-features = false, features = ["timing"] } +plonky2_util = { version = "0.1.0" } rand = "0.8.5" rand_chacha = "0.3.1" rlp = "0.5.1"