mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-07 16:23:12 +00:00
a great many fixes
This commit is contained in:
parent
05eb70f908
commit
e4521c481f
@ -48,10 +48,11 @@ pub(crate) fn combined_kernel() -> Kernel {
|
|||||||
include_str!("asm/secp256k1/moddiv.asm"),
|
include_str!("asm/secp256k1/moddiv.asm"),
|
||||||
include_str!("asm/secp256k1/lift_x.asm"),
|
include_str!("asm/secp256k1/lift_x.asm"),
|
||||||
include_str!("asm/secp256k1/inverse_scalar.asm"),
|
include_str!("asm/secp256k1/inverse_scalar.asm"),
|
||||||
include_str!("asm/sha2.asm"),
|
include_str!("asm/sha2/constants.asm"),
|
||||||
include_str!("asm/sha2_constants.asm"),
|
include_str!("asm/sha2/memory.asm"),
|
||||||
include_str!("asm/sha2_memory.asm"),
|
include_str!("asm/sha2/ops.asm"),
|
||||||
include_str!("asm/sha2_ops.asm"),
|
include_str!("asm/sha2/sha2.asm"),
|
||||||
|
include_str!("asm/sha2/write_length.asm"),
|
||||||
include_str!("asm/ecrecover.asm"),
|
include_str!("asm/ecrecover.asm"),
|
||||||
include_str!("asm/rlp/encode.asm"),
|
include_str!("asm/rlp/encode.asm"),
|
||||||
include_str!("asm/rlp/decode.asm"),
|
include_str!("asm/rlp/decode.asm"),
|
||||||
|
|||||||
@ -94,6 +94,9 @@
|
|||||||
%mload_kernel_general_u32
|
%mload_kernel_general_u32
|
||||||
OR
|
OR
|
||||||
// stack: (c_7 << 224) | (c_6 << 192) | (c_5 << 160) | (c_4 << 128) | (c_3 << 96) | (c_2 << 64) | (c_1 << 32) | c_0, offset
|
// stack: (c_7 << 224) | (c_6 << 192) | (c_5 << 160) | (c_4 << 128) | (c_3 << 96) | (c_2 << 64) | (c_1 << 32) | c_0, offset
|
||||||
|
swap1
|
||||||
|
pop
|
||||||
|
// stack: (c_7 << 224) | (c_6 << 192) | (c_5 << 160) | (c_4 << 128) | (c_3 << 96) | (c_2 << 64) | (c_1 << 32) | c_0
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
// Store a single byte to kernel general memory.
|
// Store a single byte to kernel general memory.
|
||||||
@ -40,36 +40,36 @@ sha2_store_end:
|
|||||||
//JUMP
|
//JUMP
|
||||||
%jump(sha2_pad)
|
%jump(sha2_pad)
|
||||||
|
|
||||||
global test_sha2_read:
|
//global test_sha2_read:
|
||||||
JUMPDEST
|
// JUMPDEST
|
||||||
// stack: retdest
|
// // stack: retdest
|
||||||
push 0
|
// push 0
|
||||||
// stack: 0, retdest
|
// // stack: 0, retdest
|
||||||
%mload_kernel_general
|
// %mload_kernel_general
|
||||||
// stack: counter=num_bytes, retdest
|
// // stack: counter=num_bytes, retdest
|
||||||
test_sha2_read_loop:
|
//test_sha2_read_loop:
|
||||||
JUMPDEST
|
// JUMPDEST
|
||||||
// stack: counter, retdest, [stack]
|
// // stack: counter, retdest, [stack]
|
||||||
dup1
|
// dup1
|
||||||
// stack: addr=counter, counter, retdest, [stack]
|
// // stack: addr=counter, counter, retdest, [stack]
|
||||||
%mload_kernel_general
|
// %mload_kernel_general
|
||||||
// stack: value, counter, retdest, [stack]
|
// // stack: value, counter, retdest, [stack]
|
||||||
swap2
|
// swap2
|
||||||
// stack: retdest, counter, value, [stack]
|
// // stack: retdest, counter, value, [stack]
|
||||||
swap1
|
// swap1
|
||||||
// stack: counter, retdest, value, [stack]
|
// // stack: counter, retdest, value, [stack]
|
||||||
%decrement
|
// %decrement
|
||||||
// stack: counter-1, retdest, value, [stack]
|
// // stack: counter-1, retdest, value, [stack]
|
||||||
dup1
|
// dup1
|
||||||
iszero
|
// iszero
|
||||||
%jumpi(test_sha2_read_end)
|
// %jumpi(test_sha2_read_end)
|
||||||
%jump(test_sha2_read_loop)
|
// %jump(test_sha2_read_loop)
|
||||||
test_sha2_read_end:
|
//test_sha2_read_end:
|
||||||
// stack: counter=0, retdest, [stack]
|
// // stack: counter=0, retdest, [stack]
|
||||||
JUMPDEST
|
// JUMPDEST
|
||||||
pop
|
// pop
|
||||||
// stack: retdest, [stack]
|
// // stack: retdest, [stack]
|
||||||
JUMP
|
// JUMP
|
||||||
|
|
||||||
// Precodition: input is in memory, starting at 0 of kernel general segment, of the form
|
// Precodition: input is in memory, starting at 0 of kernel general segment, of the form
|
||||||
// num_bytes, x[0], x[1], ..., x[num_bytes - 1]
|
// num_bytes, x[0], x[1], ..., x[num_bytes - 1]
|
||||||
@ -120,7 +120,10 @@ global sha2_pad:
|
|||||||
push 0
|
push 0
|
||||||
%mstore_kernel_general
|
%mstore_kernel_general
|
||||||
// stack: retdest
|
// stack: retdest
|
||||||
JUMP
|
//JUMP
|
||||||
|
push 100
|
||||||
|
push 1
|
||||||
|
%jump(sha2_gen_message_schedule_from_block)
|
||||||
|
|
||||||
// Precodition: stack contains address of one message block, followed by output address
|
// Precodition: stack contains address of one message block, followed by output address
|
||||||
// Postcondition: 256 addresses starting at given output address, contain 32-bit chunks
|
// Postcondition: 256 addresses starting at given output address, contain 32-bit chunks
|
||||||
@ -321,11 +324,16 @@ sha2_gen_message_schedule_remaining_loop:
|
|||||||
// stack: counter, output_addr + 4, block[0], block[1], retdest
|
// stack: counter, output_addr + 4, block[0], block[1], retdest
|
||||||
%decrement
|
%decrement
|
||||||
// stack: counter - 1, output_addr + 4, block[0], block[1], retdest
|
// stack: counter - 1, output_addr + 4, block[0], block[1], retdest
|
||||||
|
dup1
|
||||||
iszero
|
iszero
|
||||||
%jumpi(sha2_gen_message_schedule_remaining_end)
|
%jumpi(sha2_gen_message_schedule_remaining_end)
|
||||||
%jump(sha2_gen_message_schedule_remaining_loop)
|
%jump(sha2_gen_message_schedule_remaining_loop)
|
||||||
sha2_gen_message_schedule_remaining_end:
|
sha2_gen_message_schedule_remaining_end:
|
||||||
JUMPDEST
|
JUMPDEST
|
||||||
|
// stack: counter=0, output_addr, block[0], block[1], retdest
|
||||||
|
%pop4
|
||||||
|
STOP
|
||||||
|
JUMP
|
||||||
|
|
||||||
global sha2_gen_all_message_schedules:
|
//global sha2_gen_all_message_schedules:
|
||||||
JUMPDEST
|
// JUMPDEST
|
||||||
@ -1,16 +1,20 @@
|
|||||||
%macro sha2_write_length
|
%macro sha2_write_length
|
||||||
|
// stack: last_addr, length
|
||||||
|
swap1
|
||||||
// stack: length, last_addr
|
// stack: length, last_addr
|
||||||
push 1
|
push 1
|
||||||
push 8
|
push 8
|
||||||
shl
|
shl
|
||||||
|
|
||||||
// stack: 1 << 8, length, last_addr
|
// stack: 1 << 8, length, last_addr
|
||||||
dup2
|
dup1
|
||||||
// stack: length, 1 << 8, length, last_addr
|
// stack: 1 << 8, 1 << 8, length, last_addr
|
||||||
mod
|
|
||||||
// stack: length % (1 << 8), length, last_addr
|
|
||||||
dup3
|
dup3
|
||||||
// stack: last_addr, length % (1 << 8), length, last_addr
|
// stack: length, 1 << 8, 1 << 8, length, last_addr
|
||||||
|
mod
|
||||||
|
// stack: length % (1 << 8), 1 << 8, length, last_addr
|
||||||
|
dup3
|
||||||
|
// stack: last_addr, length % (1 << 8), 1 << 8, length, last_addr
|
||||||
%mstore_kernel_general
|
%mstore_kernel_general
|
||||||
|
|
||||||
// stack: 1 << 8, length, last_addr
|
// stack: 1 << 8, length, last_addr
|
||||||
@ -40,7 +40,6 @@ fn test_sha2_store() -> Result<()> {
|
|||||||
let memory_after_storing = after_storing.memory;
|
let memory_after_storing = after_storing.memory;
|
||||||
dbg!(memory_after_storing);
|
dbg!(memory_after_storing);
|
||||||
|
|
||||||
|
|
||||||
// let load_initial_stack = vec![U256::from_str("0xdeadbeef").unwrap()];
|
// let load_initial_stack = vec![U256::from_str("0xdeadbeef").unwrap()];
|
||||||
// let stack_after_loading = run(&kernel.code, test_sha2_read, load_initial_stack)?.stack;
|
// let stack_after_loading = run(&kernel.code, test_sha2_read, load_initial_stack)?.stack;
|
||||||
// dbg!(stack_after_loading);
|
// dbg!(stack_after_loading);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user