hex.pop¶

Like:  sp -= M
hex[:n] = stack[sp+1:][:M]
Pops multiple stack cell into the the given hex[:n]. Decrements sp by M.
M is (n+1)/2, which is because the function pops all the parameters as bytes.

Note: The pops assume that they were pushed as bytes to the stack (2 hexs in one stack-cell).
So this macro pops bytes.

Note: The push/pop usage must be coordinated, and every push X must be untangled by a pop X (or a sp_sub (X+1)/2)
For example: “push 3; push 3” can’t be read with a “pop 6”. That’s because each “push 3” takes 2 stack cells,
while the "pop 6" only pops out 3 stack cells (so there is another cell that needs to be popped.
hex[:n] is only an output parameter.

Signature¶

def pop n, hex { ... }

Defined in hex/pointers/stack.fj — lines 124–127 (view on GitHub).

Complexity¶

  • Time: n(w(0.38@+ 3) + 9@+18)

  • Space: n(w(0.56@+16) + 7@+70)

See the complexity glossary for what @, w, dw, dbit, n mean.