mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-11 02:03:07 +00:00
39 lines
869 B
NASM
39 lines
869 B
NASM
// Sets `count` values to `value` at
|
|
// DST = (dst_ctx, dst_segment, dst_addr).
|
|
// This tuple definition is used for brevity in the stack comments below.
|
|
global memset:
|
|
// stack: DST, value, count, retdest
|
|
DUP5
|
|
// stack: count, DST, value, count, retdest
|
|
ISZERO
|
|
// stack: count == 0, DST, value, count, retdest
|
|
%jumpi(memset_finish)
|
|
// stack: DST, value, count, retdest
|
|
|
|
DUP4
|
|
// stack: value, DST, value, count, retdest
|
|
DUP4
|
|
DUP4
|
|
DUP4
|
|
// stack: DST, value, DST, value, count, retdest
|
|
MSTORE_GENERAL
|
|
// stack: DST, value, count, retdest
|
|
|
|
// Increment dst_addr.
|
|
SWAP2
|
|
%increment
|
|
SWAP2
|
|
// Decrement count.
|
|
SWAP4
|
|
%decrement
|
|
SWAP4
|
|
|
|
// Continue the loop.
|
|
%jump(memset)
|
|
|
|
memset_finish:
|
|
// stack: DST, value, count, retdest
|
|
%pop5
|
|
// stack: retdest
|
|
JUMP
|