/// <summary> /// Register an action to perform when a precise access occurs (one with exact address and size). /// If the action returns true, read/write tracking are skipped. /// </summary> /// <param name="action">Action to call on read or write</param> public void RegisterPreciseAction(PreciseRegionSignal action) { foreach (var regionHandle in _cpuRegionHandles) { regionHandle.RegisterPreciseAction(action); } }
public void RegisterPreciseAction(PreciseRegionSignal action) { foreach (var handle in _handles) { if (handle != null) { handle?.RegisterPreciseAction((address, size, write) => action(handle.Address, handle.Size, write)); } } }
public void RegisterPreciseAction(ulong address, ulong size, PreciseRegionSignal action) { int startHandle = (int)((address - Address) / Granularity); int lastHandle = (int)((address + (size - 1) - Address) / Granularity); for (int i = startHandle; i <= lastHandle; i++) { _handles[i].RegisterPreciseAction(action); } }
/// <summary> /// Register an action to perform when a precise access occurs (one with exact address and size). /// If the action returns true, read/write tracking are skipped. /// </summary> /// <param name="action">Action to call on read or write</param> public void RegisterPreciseAction(PreciseRegionSignal action) { _preciseAction = action; }
public void RegisterPreciseAction(PreciseRegionSignal action) => _impl.RegisterPreciseAction(action);
public void RegisterPreciseAction(ulong address, ulong size, PreciseRegionSignal action) => _impl.RegisterPreciseAction(address, size, action);