// (n1 n2 a-addr -- ) private int TwoStoreAction() { _interpreter.StackExpect(3); var addr = _interpreter.Pop(); _interpreter.CheckCellAlignedAddress(addr); _interpreter.CheckAddressesRange(addr, Heap.DoubleCellSize); _interpreter.State.Heap.Write(addr + Heap.CellSize, _interpreter.Pop()); // n2 _interpreter.State.Heap.Write(addr, _interpreter.Pop()); // n1 return(1); }
// (addr -- byte) private int BFetchAction() { _interpreter.StackExpect(1); var addr = _interpreter.Pop(); _interpreter.CheckByteAlignedAddress(addr); _interpreter.CheckAddressesRange(addr, 1); _interpreter.Push(_interpreter.State.Heap.ReadByte(addr)); return(1); }