mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-03 14:23:07 +00:00
fix
This commit is contained in:
parent
264192aa05
commit
bc53ddc56f
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -204,6 +204,12 @@ impl<'a> Interpreter<'a> {
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub(crate) fn get_current_general_memory(&self) -> Vec<U256> {
|
||||
self.generation_state.memory.contexts[self.context].segments[Segment::KernelGeneral as usize]
|
||||
.content
|
||||
.clone()
|
||||
}
|
||||
|
||||
pub(crate) fn get_kernel_general_memory(&self) -> Vec<U256> {
|
||||
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<U256>) {
|
||||
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<U256>) {
|
||||
self.set_memory_segment(Segment::KernelGeneral, memory)
|
||||
}
|
||||
|
||||
@ -100,10 +100,10 @@ fn run_test(fn_label: &str, memory: Vec<U256>, stack: Vec<U256>) -> 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()))
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user