예제 #1
0
        public override bool SetupFromSetupData(ExecuteSetupData setupData)
        {
            this.SetupData = setupData;
            MessageManager.ShowLine($"Constructing memory of slot0...", enumMessageLevel.DetailProgressLog);
            this.Memory = new CommonModule.RAM();
            this.Memory.Initialize(setupData.MemoryContents[0]); //Slot.0
            InitializeExecutionTraceData(setupData, 0);

            MessageManager.ShowLine($"Setting ProgramCounter...", enumMessageLevel.DetailProgressLog);
            this.ProgramCounter = setupData.StartupAddress;

            base.IsHalted = false;
            return(true);
        }
예제 #2
0
        public override bool SetupFromSetupData(ExecuteSetupData setupData)
        {
            this.SetupData = setupData;
            MessageManager.ShowLine($"Constructing memory of slot0...", enumMessageLevel.DetailProgressLog);
            this.Memory = new CommonModule.RAM();
            this.Memory.Initialize(setupData.MemoryContents[0]); //Slot.0
            InitializeExecutionTraceData(setupData, 0);

            base.IsHalted = false;

            MessageManager.ShowLine($"Constructing circuit modules...", enumMessageLevel.DetailProgressLog);
            CircuitGroup = new Subneg4XCircuitGroup(this.Memory, setupData.StartupAddress);
            return(true);
        }
예제 #3
0
        public override bool SetupFromSetupData(ExecuteSetupData setupData)
        {
            this.SetupData = setupData;
            MessageManager.ShowLine($"Constructing memory of slot0...", enumMessageLevel.DetailProgressLog);
            this.Memory = new CommonModule.RAM();
            this.Memory.Initialize(setupData.MemoryContents[0]); //Slot.0
            InitializeExecutionTraceData(setupData, 0);

            base.IsHalted = false;

            MessageManager.ShowLine($"Constructing circuit modules...", enumMessageLevel.DetailProgressLog);
            CircuitGroup = new SubRISCCircuitGroup(this.Memory, setupData.StartupAddress, DelayBranchEnabled);
            CircuitGroup.CS.RegisterFile.Entries[1].Content = (uint)setupData.MemoryContents[0].WordCapacity * 1 - 1;
            StackPointerMin = CircuitGroup.CS.RegisterFile.Entries[1].Content;
            return(true);
        }
        public override bool SetupFromSetupData(ExecuteSetupData setupData)
        {
            this.SetupData = setupData;
            MessageManager.ShowLine($"Constructing memory of slot0...", enumMessageLevel.DetailProgressLog);
            this.Memory = new CommonModule.RAM();
            this.Memory.Initialize(setupData.MemoryContents[0]); //Slot.0
            InitializeExecutionTraceData(setupData, 0);

            MessageManager.ShowLine($"Setting ProgramCounter...", enumMessageLevel.DetailProgressLog);
            this.ProgramCounter         = setupData.StartupAddress;
            this.PrevProgramCounter     = 0xFFFFFFFF;
            this.PrevPrevProgramCounter = 0xFFFFFFFF;
            RegisterEntrys[1]           = (uint)setupData.MemoryContents[0].WordCapacity * 4 - 4;
            StackPointerMin             = RegisterEntrys[1];

            base.IsHalted = false;
            return(true);
        }
예제 #5
0
        protected void InitializeExecutionTraceData(ExecuteSetupData setupData, int slot)
        {
            int size = setupData.MemoryContents[slot].CodeSize - 1;

            while (size > 0)
            {
                if (setupData.MemoryContents[slot].GetDebugInfo(size, 1, 0).Usage == MemoryContent.WordElement.enumUsage.Instruction)
                {
                    break;
                }
                size--;
            }
            size += 1;
            while (size < setupData.MemoryContents[slot].CodeSize)
            {
                if (setupData.MemoryContents[slot].GetDebugInfo(size, 1, 0).Usage != MemoryContent.WordElement.enumUsage.FollowHead)
                {
                    break;
                }
                size++;
            }

            ExecutionTraceData = new ExecutionTraceElement[size * 2];
        }
예제 #6
0
 public abstract bool SetupFromSetupData(ExecuteSetupData setupData);