Exemple #1
0
        // (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);
        }
Exemple #2
0
        // (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);
        }