예제 #1
0
 public MipsSnapshot(String name)
 {
     m_GPR = new GPRRegisters();
     m_CP0 = new CP0Registers();
     m_CP1 = new FpuRegisters();
     m_Name = name + " Snapshot";
 }
예제 #2
0
 public ExecutionState()
 {
     FCR31 = new Fcr32Register();
     CP0Regs = new CP0Registers();
     Fpr = new FpuRegisters();
     m_Regs = new GPRRegisters();
 }
예제 #3
0
        public FPUEntity(DataFormat format, ExecutionState state)
        {
            m_BufferPtr = Marshal.AllocHGlobal(8);

            m_Tag = format;
            m_Wide = state.CP0Regs.StatusReg.AdditionalFPR;
            m_FPR = state.Fpr;

            switch (m_Tag)
            {
                case DataFormat.Double:
                    {
                        m_DynamicGet = (e) => { return e.m_Double; };
                        m_DynamicSet = (e, v) => { e.m_Double = v; };
                        break;
                    }
                case DataFormat.Doubleword:
                    {
                        m_DynamicGet = (e) => { return e.m_Long; };
                        m_DynamicSet = (e, v) => { e.m_Long = v; };
                        break;
                    }
                case DataFormat.Single:
                    {
                        m_DynamicGet = (e) => { return e.m_Single; };
                        m_DynamicSet = (e, v) => { e.m_Single = v; };
                        break;
                    }
                case DataFormat.Word:
                    {
                        m_DynamicGet = (e) => { return e.m_Word; };
                        m_DynamicSet = (e, v) => { e.m_Word = v; };
                        break;
                    }
                default:
                case DataFormat.Reserved: throw new InvalidOperationException("Cannot return a value with reserved data format");
            }
        }