This commit is contained in:
Nicholas Ward 2022-07-25 15:09:36 -07:00
parent f0dd1fd3f4
commit c29190328c

View File

@ -1,34 +1,33 @@
global sha2_store:
JUMPDEST
// stack: num_u256s, x[0], x[1], x[2], ... , x[num_u256s-1], retdest
// stack: num_bytes, x[0], x[1], ..., x[num_bytes - 1], retdest
dup1
// stack: num_u256s, num_u256s, x[0], x[1], x[2], ... , x[num_u256s-1], retdest
// TODO: use kernel memory, and start address not at 0
// stack: num_bytes, num_bytes, x[0], x[1], ..., x[num_bytes - 1], retdest
push 0
// stack: addr=0, num_u256s, num_u256s, x[0], x[1], x[2], ... , x[num_u256s-1], retdest
// stack: addr=0, num_bytes, num_bytes, x[0], x[1], ..., x[num_bytes - 1], retdest
%mstore_kernel_general
// stack: num_u256s, x[0], x[1], x[2], ... , x[num_u256s-1], retdest
// stack: num_bytes, num_bytes, x[0], x[1], ..., x[num_bytes - 1], retdest
push 1
// stack: addr=1, counter=num_u256s, x[0], x[1], x[2], ... , x[num_u256s-1], retdest
// stack: addr=1, counter=num_bytes, x[0], x[1], x[2], ... , x[num_bytes-1], retdest
sha2_store_loop:
JUMPDEST
// stack: addr, counter, x[num_u256s-counter], ... , x[num_u256s-1], retdest
// stack: addr, counter, x[num_bytes-counter], ... , x[num_bytes-1], retdest
dup1
// stack: addr, addr, counter, x[num_u256s-counter], ... , x[num_u256s-1], retdest
// stack: addr, addr, counter, x[num_bytes-counter], ... , x[num_bytes-1], retdest
swap3
// stack: x[num_u256s-counter], addr, counter, addr, ... , x[num_u256s-1], retdest
// stack: x[num_bytes-counter], addr, counter, addr, ... , x[num_bytes-1], retdest
swap1
// stack: addr, x[num_u256s-counter], counter, addr, ... , x[num_u256s-1], retdest
// stack: addr, x[num_bytes-counter], counter, addr, ... , x[num_bytes-1], retdest
%mstore_kernel_general
// stack: counter, addr, ... , x[num_u256s-1], retdest
// stack: counter, addr, ... , x[num_bytes-1], retdest
%decrement
// stack: counter-1, addr, ... , x[num_u256s-1], retdest
// stack: counter-1, addr, ... , x[num_bytes-1], retdest
iszero
%jumpi(sha2_store_end)
swap1
// stack: addr, counter-1, ... , x[num_u256s-1], retdest
// stack: addr, counter-1, ... , x[num_bytes-1], retdest
%increment
// stack: addr+1, counter-1, ... , x[num_u256s-1], retdest
// stack: addr+1, counter-1, ... , x[num_bytes-1], retdest
%jump(sha2_store_loop)
sha2_store_end:
// stack: counter=0, addr, retdest