/// <summary> /// Get the proper sub-register of <paramref name="reg" /> that starts at offset /// <paramref name="offset" /> and is of size <paramref name="width"/>. /// </summary> /// <param name="reg">The parent register.</param> /// <param name="offset">The bit offset of the sub-register.</param> /// <param name="width">The bit width of the sub-register.</param> /// <returns> /// The sub-register. /// </returns> /// <remarks> /// Most architectures not have sub-registers, and will use this default implementation. This /// method is overridden for architectures like x86 and Z80, where sub-registers <code>(ah, al, /// etc)</code> /// do exist. /// </remarks> public override RegisterStorage GetSubregister(RegisterStorage reg, int offset, int width) => PICRegisters.GetSubregister(reg, offset, width);
/// <summary> /// Gets a register given its index number. /// </summary> /// <param name="i">Zero-based index of the register.</param> /// <returns> /// The register instance or null. /// </returns> public override RegisterStorage GetRegister(StorageDomain domain, BitRange range) => PICRegisters.GetSubregister( PICRegisters.PeekRegisterByIdx(domain - StorageDomain.Register), range.Lsb, range.Extent) !;