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); }
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); }
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); }
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]; }
public abstract bool SetupFromSetupData(ExecuteSetupData setupData);