예제 #1
0
 public void MemoryExpand(DataWord outDataOffs, DataWord outDataSize)
 {
     if (!outDataSize.IsZero())
     {
         _memory.Extend(outDataOffs.GetInt(), outDataSize.GetInt());
     }
 }
예제 #2
0
        public int VerifyJumpDest(DataWord nextPC)
        {
            if (nextPC.GetBytesOccupied() > 4)
            {
                throw new InvalidOperationException("Bad jump destination");
            }

            int ret = nextPC.GetInt();

            if (!GetProgramPrecompile().HasJumpDest(ret))
            {
                throw new InvalidOperationException("Bad jump destination");
            }

            return(ret);
        }
예제 #3
0
 public void SaveMemory(DataWord addrB, DataWord value)
 {
     _memory.Write(addrB.GetInt(), value.GetData(), value.GetData().Length, false);
 }
예제 #4
0
 public DataWord LoadMemory(DataWord addr)
 {
     return(_memory.ReadWord(addr.GetInt()));
 }