private void NewMemoryWindow(object sender, EventArgs e) { var t = new MemoryView("MemoryView"); t.Show(dockPanel1, WeifenLuo.WinFormsUI.Docking.DockState.Float); myDocks.Add(t); }
private void toolStripBtnMemoryFromCPU_Click(object sender, EventArgs e) { if (toolStripBtnMemoryFromCPU.Checked) { Core.Settings.MemorySource = MemorySourceType.CPU; } else { Core.Settings.MemorySource = MemorySourceType.RAM; } if (MemoryAsCPU) { toolStripBtnMemoryFromCPU.Image = C64Studio.Properties.Resources.icon_memory_cpu.ToBitmap(); toolStripBtnMemoryFromCPU.ToolTipText = "Show RAM as CPU sees it"; m_ActiveMemory = m_MemoryCPU; } else { toolStripBtnMemoryFromCPU.Image = C64Studio.Properties.Resources.icon_memory_ram.ToBitmap(); toolStripBtnMemoryFromCPU.ToolTipText = "Show RAM"; m_ActiveMemory = m_MemoryRAM; } SetHexData(m_ActiveMemory.RAM); ViewScrolled(this, new DebugMemoryEvent(m_Offset * hexView.BytesPerLine, hexView.BytesPerLine * hexView.VerticalByteCount)); }
public Mix() { SetFloatingPointModuleEnabled(ModuleSettings.FloatingPointEnabled); mMemory = new MemoryView(mFullMemory); mDevices.DeviceReportingEvent += DeviceReporting; mLog = Queue.Synchronized(new Queue()); ProgramCounter = 0; TickCounter = 0L; mStatus = RunStatus.Idle; mMode = RunMode.Normal; SetMemoryBounds(); mCurrentInstructionAddress = int.MinValue; mCurrentInstructionMnemonic = null; mCurrentInstructionTicksLeft = int.MinValue; mInterruptExecuted = false; BreakpointManager = null; mStartStep = new AutoResetEvent(false); mRunDetached = false; var thread = new Thread(StepRunEntryPoint) { IsBackground = true, Name = "Run thread" }; thread.Start(); }
public DebugMemory(StudioCore Core) { InitializeComponent(); this.Core = Core; m_ActiveMemory = m_MemoryCPU; SetHexData(m_ActiveMemory.RAM); hexView.SelectedByteProvider = new DynamicByteSelectionProvider(65536); hexView.ViewScrolled += new EventHandler(hexView_ViewScrolled); hexView.ContextMenuStrip.Items.Add("-"); m_MenuItemHexStringView = new ToolStripMenuItem("Set to String View"); m_MenuItemHexStringView.Click += btnBinaryStringView_Click; m_MenuItemHexStringView.Checked = true; hexView.ContextMenuStrip.Items.Add(m_MenuItemHexStringView); m_MenuItemHexCharView = new ToolStripMenuItem("Set to Character View"); m_MenuItemHexCharView.Click += btnBinaryCharView_Click; hexView.ContextMenuStrip.Items.Add(m_MenuItemHexCharView); m_MenuItemHexSpriteView = new ToolStripMenuItem("Set to Sprite View"); m_MenuItemHexSpriteView.Click += btnBinarySpriteView_Click; hexView.ContextMenuStrip.Items.Add(m_MenuItemHexSpriteView); SetMemoryDisplayType(); }
internal void UpdateMemory(RequestData Request, ByteBuffer Data, bool AsRAM) { int Offset = Request.Parameter1; MemoryView memoryView = Core.Debugging.ActiveMemory; if (AsRAM) { memoryView = Core.Debugging.MemoryRAM; } for (int i = 0; i < Data.Length; ++i) { byte ramByte = Data.ByteAt(i); if (Request.Reason != RequestReason.MEMORY_FETCH) { if (ramByte != memoryView.RAM.ByteAt(Offset + i)) { memoryView.RAMChanged[Offset + i] = true; } else { memoryView.RAMChanged[Offset + i] = false; } } memoryView.RAM.SetU8At(Offset + i, ramByte); } ValidateMemory(memoryView, Offset, (int)Data.Length); foreach (var debugView in MemoryViews) { debugView.UpdateMemory(Request, Data); } }
private void ValidateMemory(MemoryView View, int Offset, int Length) { foreach (int offset in View.ValidMemory.Keys) { int storedlength = View.ValidMemory[offset]; if ((Offset >= offset) && (Offset < offset + storedlength)) { // we are at least partially in here if (Offset + Length < offset + storedlength) { // already fully validated return; } Length -= Offset - offset; Offset = offset + storedlength; if (Length == 0) { return; } } } if (Length > 0) { View.ValidMemory.Add(Offset, Length); } }
public void Update(object update) { if (update is uint memoryAddress) { MemoryInput.Text = MemoryView.AddressInputToString(memoryAddress); Go_Click(null, null); } }
public HWLua() { Kernel = NativeMethods.LuaLNewState(); Stack = new MemoryView(this); Global = new TableView(this, GlobalRootObject); Kernel.LuaLOpenLibs(); StackInstance = Stack; }
private void MainForm_Load(object sender, EventArgs e) { Text = "MOSA GDB Debugger v" + CompilerVersion.VersionString; dockPanel.SuspendLayout(true); dockPanel.DockTopPortion = 75; controlView.Show(dockPanel, DockState.DockTop); statusView.Show(controlView.PanelPane, DockAlignment.Right, 0.50); breakPointView.Show(dockPanel, DockState.DockBottom); watchView.Show(breakPointView.PanelPane, DockAlignment.Right, 0.50); displayView.Show(dockPanel, DockState.Document); outputView.Show(dockPanel, DockState.Document); //scriptView.Show(dockPanel, DockState.Document); registersView.Show(dockPanel, DockState.DockRight); stackFrameView.Show(registersView.Pane, DockAlignment.Bottom, 0.5); sourceView.Show(dockPanel, DockState.Document); sourceDataView.Show(dockPanel, DockState.Document); //stackFrameView.Show(dockPanel, DockState.DockRight); var memoryView = new MemoryView(this); memoryView.Show(dockPanel, DockState.Document); symbolView.Show(dockPanel, DockState.Document); instructionView.Show(symbolView.PanelPane, DockAlignment.Right, 0.35); methodView.Show(instructionView.PanelPane, instructionView); callStackView.Show(instructionView.PanelPane, DockAlignment.Bottom, 0.25); registersView.Show(); dockPanel.ResumeLayout(true, true); CalculateVMHash(); LauncherOptions.SerialConnectionOption = SerialConnectionOption.TCPServer; LauncherOptions.SerialConnectionPort = 1250; if (LauncherOptions.ImageFile != null) { VMProcess = StartQEMU(); } LoadDebugFile(); if (LauncherOptions.AutoStart) { System.Threading.Thread.Sleep(3000); Connect(); } LoadBreakPoints(); LoadWatches(); }
/// <summary>移动到下一块</summary> /// <param name="view"></param> /// <returns></returns> public Boolean MoveNext(MemoryView view) { if (Next == 0) { return(false); } Position = Next; Read(view); return(true); }
public void ShowMainMemory() { if (_asmLoaded) { MemoryView view = new MemoryView(this) { Visibility = Visibility.Visible }; } else { MessageBox.Show("Files not loaded"); } }
/// <summary>写入内存块</summary> /// <param name="view"></param> public void Write(MemoryView view) { var p = Position; if (p < 0) { throw new ArgumentNullException(nameof(Position)); } #if DEBUG //XTrace.WriteLine("Write " + this); #endif // 8字节对齐 var len = Align(Size); var len2 = len; if (Free) { len2 |= 0b0000_00001; } if (PrevFree) { len2 |= 0b0000_00010; } view.Write(p, len2); // 空闲块有下一块指针,尾部也有长度标记 if (Free) { view.Write(p + 8, Next); if (Next > 0) { view.Write(p + len - 8, len2); } // 修改下一个相邻块的PrevFree p += len; if (p + 8 < view.Capacity) { len = view.ReadInt64(p); // 标记下一相邻块的PrevFree为1 if ((len & 0b0000_00010) == 0) { len |= 0b0000_00010; view.Write(p, len); } } } }
public MemoryViewModel(IEnumerable <VM> ActiveVMList) : base("Memory", ActiveVMList) { //Instance = MemoryInstance; //Size = (UInt64)MemoryInstance["Reservation"]; //UInt64 limit; Size = GetMem(ActiveVMList); //MaxSize = limit; ApplyCommand = new DelegateCommand <object>(SetMemory, CanSetMemory); OKCommand = new DelegateCommand <object> (PerformOK, CanSetMemory); CancelCommand = new DelegateCommand <object>(PerformCancel, CanCancel); ApplyCommand.RaiseCanExecuteChanged(); View = new MemoryView(); (View as IView).SetViewModel(this); }
/// <summary>读取下一块</summary> /// <param name="view"></param> /// <returns></returns> public MemoryBlock ReadNext(MemoryView view) { if (Next == 0) { return(null); } var mb = new MemoryBlock { Position = Next }; mb.Read(view); return(mb); }
public static void SetWCharArrayRaw(_Array arr, object value) { MemoryView view = value as MemoryView; if ((object)view != null) { string strVal = view.tobytes().MakeString(); if (strVal.Length > arr.__len__()) { throw PythonOps.ValueError("string too long"); } value = strVal; } arr.NativeType.SetValue(arr._memHolder, 0, value); }
private void MainForm_Load(object sender, EventArgs e) { dockPanel.SuspendLayout(true); dockPanel.DockTopPortion = 75; controlView.Show(dockPanel, DockState.DockTop); statusView.Show(controlView.PanelPane, DockAlignment.Right, 0.50); breakPointView.Show(dockPanel, DockState.DockBottom); watchView.Show(breakPointView.PanelPane, DockAlignment.Right, 0.50); displayView.Show(dockPanel, DockState.Document); outputView.Show(dockPanel, DockState.Document); //scriptView.Show(dockPanel, DockState.Document); registersView.Show(dockPanel, DockState.DockRight); //flagView.Show(dockPanel, DockState.DockRight); //stackView.Show(dockPanel, DockState.DockRight); stackFrameView.Show(dockPanel, DockState.DockRight); var memoryView = new MemoryView(this); memoryView.Show(dockPanel, DockState.Document); symbolView.Show(dockPanel, DockState.Document); instructionView.Show(symbolView.PanelPane, DockAlignment.Right, 0.35); methodView.Show(instructionView.PanelPane, instructionView); callStackView.Show(instructionView.PanelPane, DockAlignment.Bottom, 0.25); registersView.Show(); dockPanel.ResumeLayout(true, true); if (Options.AutoConnect) { Connect(); } if (Options.DebugInfoFile != null) { LoadDebugData.LoadDebugInfo(Options.DebugInfoFile, DebugSource); } }
public void SetUp() { var manager = new GameObject(); var emulator = manager.AddComponent <Emulator>(); emulator.Awake(); var address = new GameObject(); _addressTextComponent = address.AddComponent <Text>(); var memoryTextGameObject = new GameObject(); var text = memoryTextGameObject.AddComponent <Text>(); var memoryView = memoryTextGameObject.AddComponent <MemoryView>(); _memoryView = memoryView; _memoryView.manager = manager; _memoryView.address = address; _memoryView.Start(); }
public MainWindow() { InitializeComponent(); MemoryModel.SetAddressBusLength = 20; MemoryModel.GetInstance().AddObserver(this); memoryView = new MemoryView(); Go_Click(null, null); generalPurposeRegisters = new GeneralPurposeRegisters(); indexRegisters = new IndexRegisters(); pointerRegisters = new PointerRegisters(); segmentRegisters = new SegmentRegisters(); commandInterpreter = InitDefaultRegistryCommander(); generalPurposeRegistersView = new GeneralPurposeRegistersView(new HexParser()); indexRegistersView = new IndexRegistersView(new HexParser()); pointerRegistersView = new PointerRegistersView(new HexParser()); segmentRegistersView = new SegmentRegistersView(new HexParser()); if (generalPurposeRegisters is Observable observableGeneralPurposeReg) { observableGeneralPurposeReg.AddObserver(generalPurposeRegistersView); } if (indexRegisters is Observable observableIndexReg) { observableIndexReg.AddObserver(indexRegistersView); } if (pointerRegisters is Observable observablePointersReg) { observablePointersReg.AddObserver(pointerRegistersView); } if (segmentRegisters is Observable observableSegmentsReg) { observableSegmentsReg.AddObserver(segmentRegistersView); } SetBlockDataContext(); }
/// <summary>读取内存块,自动识别是否空闲</summary> /// <param name="view"></param> public Boolean Read(MemoryView view) { var p = Position; if (p < 0) { throw new ArgumentNullException(nameof(Position)); } if (p + 8 >= view.Capacity) { return(false); } // 不管是否空闲块,都是长度开头 var len = view.ReadInt64(p); var flag = len & 0b0000_0111; len -= flag; Size = len; Free = (flag & 0b0000_00001) > 0; PrevFree = (flag & 0b0000_00010) > 0; // 如果是空闲块,还要读取前后空闲指针,最后8字节则可以不用读取 if (Free) { Next = view.ReadInt64(p + 8); } else { Next = 0; } #if DEBUG XTrace.WriteLine("Read " + this); #endif return(true); }
internal void UpdateMemory(RequestData Request, ByteBuffer Data, bool AsRAM) { int Offset = Request.Parameter1; MemoryView memoryView = Core.Debugging.ActiveMemory; if (AsRAM) { memoryView = Core.Debugging.MemoryRAM; } for (int i = 0; i < Data.Length; ++i) { byte ramByte = Data.ByteAt(i); if (Request.Reason != RequestReason.MEMORY_FETCH) { if (ramByte != memoryView.RAM.ByteAt(Offset + i)) { // only mark as changed when we knew the orig value if ((memoryView.Flags[Offset + i] & MemoryView.RAMFlag.VALUE_KNOWN) == 0) { memoryView.Flags[Offset + i] |= MemoryView.RAMFlag.VALUE_CHANGED; } } else if ((memoryView.Flags[Offset + i] & MemoryView.RAMFlag.VALUE_KNOWN) == 0) { memoryView.Flags[Offset + i] &= ~MemoryView.RAMFlag.VALUE_CHANGED; } } memoryView.Flags[Offset + i] |= MemoryView.RAMFlag.VALUE_KNOWN; memoryView.RAM.SetU8At(Offset + i, ramByte); } foreach (var debugView in MemoryViews) { debugView.UpdateMemory(Request, Data); } }
public static void SetWCharArrayRaw(_Array arr, object value) { PythonBuffer buf = value as PythonBuffer; if (buf != null && (buf._object is string || buf._object is Bytes)) { value = buf.ToString(); } MemoryView view = value as MemoryView; if ((object)view != null) { string strVal = view.tobytes().ToString(); if (strVal.Length > arr.__len__()) { throw PythonOps.ValueError("string too long"); } value = strVal; } arr.NativeType.SetValue(arr._memHolder, 0, value); }
/// <summary>实例化数据库</summary> /// <param name="file">文件</param> /// <param name="readOnly">只读</param> /// <param name="init">自动初始化</param> public ListDb(String file, Boolean readOnly, Boolean init = true) { File = new MemoryFile(file, readOnly); ReadOnly = readOnly; if (readOnly) { View = File.CreateView(HEADER_SIZE, MAX_SIZE); } else { Heap = new Heap(File, HEADER_SIZE, MAX_SIZE, false); View = Heap.View; } // 加大步进增长率,减少映射次数,提升性能 //View.StepRate = 100; // 加载 if (init) { Init(); } }
private void btnViewMemory_Click(object sender, EventArgs e) { var memoryView = new MemoryView(this); memoryView.Show(dockPanel, DockState.Document); }
public Debugging(StudioCore Core) { this.Core = Core; ActiveMemory = MemoryCPU; }
void RefreshView() { MemoryView.EnsureVisible(0); MemoryView.Refresh(); }
public static Bytes hexlify(MemoryView data) { return(hexlify(data.tobytes())); }
public static Bytes a2b_uu(CodeContext /*!*/ context, [NotNull] MemoryView data) => a2b_uu_impl(context, data.tobytes());