Solution (source code)

= Solution

Use two <zero-address instructions> for indirect access to <computer memory>. Define `load` to replace the top <memory address> by the value at that address, and define `store` to pop a value followed by the address just beneath it:
$$
\mathrm{load}:S,p\mapsto S,M[p],\qquad\mathrm{store}:S,p,v\mapsto S\quad\text{with }M[p]\gets v.
$$
Both have no encoded address operand; the <stack> supplies it. If the known fixed <memory addresses> of the variables are $p_x,p_y$, implement the assignment with
``
const p_x
const p_y
load
store
``
The successive <stack> suffixes are $p_x$, then $p_x,p_y$, then $p_x,M[p_y]$, then empty. Hence
$$
\boxed{M[p_x]\gets M[p_y].}
$$
The surrounding <stack> is restored. Other `store` conventions are possible, but the operand order must be stated and used consistently.