private void RewriteLFSR() { var fsrnum = instrCurr.Operands[0] as PICOperandFSRNum ?? throw new InvalidOperationException($"Invalid FSR register number operand: {instrCurr.Operands[0]}"); var k = instrCurr.Operands[1] as PICOperandImmediate ?? throw new InvalidOperationException($"Invalid immediate operand: {instrCurr.Operands[1]}"); var fsrreg = binder.EnsureRegister(PICRegisters.GetRegister($"FSR{fsrnum.FSRNum}")); m.Assign(fsrreg, k.ImmediateValue); }
protected void RewriteADDFSR() { var fsrnum = instrCurr.Operands[0] as PICOperandFSRNum ?? throw new InvalidOperationException($"Invalid FSR number operand: {instrCurr.Operands[0]}"); var imm = instrCurr.Operands[1] as PICOperandImmediate ?? throw new InvalidOperationException($"Invalid immediate operand: {instrCurr.Operands[1]}"); var fsrreg = binder.EnsureRegister(PICRegisters.GetRegister($"FSR{fsrnum.FSRNum}")); m.Assign(fsrreg, m.IAdd(fsrreg, imm.ImmediateValue)); }
public void PIC16arch_GetEnhancedCoreRegisterTests() { PICProcessorModel.GetModel(PIC16EnhancedName).CreateRegisters(); Assert.AreSame(PICRegisters.WREG, PICRegisters.GetRegister("WREG")); Assert.AreSame(PICRegisters.STATUS, PICRegisters.GetRegister("STATUS")); Assert.AreSame(PICRegisters.PCL, PICRegisters.GetRegister("PCL")); Assert.AreSame(PICRegisters.BSR, PICRegisters.GetRegister("BSR")); Assert.AreSame(PIC16EnhancedRegisters.INDF0, PICRegisters.GetRegister("INDF0")); }
public void PIC16arch_GetBasicCoreRegisterTests() { PICProcessorModel.GetModel(PIC16BasicName).CreateRegisters(); Assert.AreSame(PICRegisters.WREG, PICRegisters.GetRegister("WREG")); Assert.AreSame(PICRegisters.STATUS, PICRegisters.GetRegister("STATUS")); Assert.AreSame(PICRegisters.PCL, PICRegisters.GetRegister("PCL")); Assert.AreSame(PIC16BasicRegisters.INDF, PICRegisters.GetRegister("INDF")); Assert.AreSame(PIC16BasicRegisters.RP0, PICRegisters.GetBitField("RP0")); Assert.AreSame(PIC16BasicRegisters.RP1, PICRegisters.GetBitField("RP1")); }
public void PIC16arch_FailGetRegisterFromNameTests() { PICProcessorModel.GetModel(PIC16BasicName).CreateRegisters(); Assert.Throws <ArgumentException>(() => PICRegisters.GetRegister("invalidregistername")); PICProcessorModel.GetModel(PIC16EnhancedName).CreateRegisters(); Assert.Throws <ArgumentException>(() => PICRegisters.GetRegister("invalidregistername")); PICProcessorModel.GetModel(PIC16FullFeaturedName).CreateRegisters(); Assert.Throws <ArgumentException>(() => PICRegisters.GetRegister("invalidregistername")); }
public void PIC16arch_FailGetRegisterFromNameTests() { PICProcessorModel.GetModel(PIC16BasicName).CreateRegisters(); Assert.IsNull(PICRegisters.GetRegister("invalidregistername")); PICProcessorModel.GetModel(PIC16EnhancedName).CreateRegisters(); Assert.IsNull(PICRegisters.GetRegister("invalidregistername")); PICProcessorModel.GetModel(PIC16FullFeaturedName).CreateRegisters(); Assert.IsNull(PICRegisters.GetRegister("invalidregistername")); }
public void PIC16arch_GetBasicRegisterFromNameTests() { PICProcessorModel.GetModel(PIC16BasicName).CreateRegisters(); Assert.AreEqual("STATUS", PICRegisters.GetRegister("STATUS").Name); Assert.AreEqual("FSR", PICRegisters.GetRegister("FSR").Name); Assert.AreEqual("INDF", PICRegisters.GetRegister("INDF").Name); Assert.AreEqual("INTCON", PICRegisters.GetRegister("INTCON").Name); Assert.AreEqual("WREG", PICRegisters.GetRegister("WREG").Name); Assert.AreEqual("PCL", PICRegisters.GetRegister("PCL").Name); Assert.AreEqual("PCLATH", PICRegisters.GetRegister("PCLATH").Name); Assert.AreEqual("RP", PICRegisters.GetBitField("RP").Name); }
public void PIC18arch_GetSubregisterTests() { var arch = GetArch(PIC18EggName); PICMemoryDescriptor.ExecMode = PICExecMode.Traditional; Assert.AreSame(PIC18Registers.FSR0L, arch.GetSubregister(PIC18Registers.FSR0, 0, 8)); Assert.AreSame(PIC18Registers.FSR0H, arch.GetSubregister(PIC18Registers.FSR0, 8, 8)); Assert.AreSame(PIC18Registers.FSR0, arch.GetSubregister(PIC18Registers.FSR0, 0, 16)); PICMemoryDescriptor.ExecMode = PICExecMode.Extended; Assert.AreSame(PIC18Registers.FSR1L, arch.GetSubregister(PIC18Registers.FSR1, 0, 8)); Assert.AreSame(PIC18Registers.FSR1H, arch.GetSubregister(PIC18Registers.FSR1, 8, 8)); Assert.AreSame(PIC18Registers.FSR2L, arch.GetSubregister(PICRegisters.GetRegister("FSR2"), 0, 8)); Assert.AreSame(PIC18Registers.FSR2H, arch.GetSubregister(PICRegisters.GetRegister("FSR2"), 8, 8)); Assert.AreSame(PIC18Registers.FSR2, arch.GetSubregister(PICRegisters.GetRegister("FSR2"), 0, 16)); }
public void PIC16arch_GetFullFeaturedRegisterFromNameTests() { PICProcessorModel.GetModel(PIC16FullFeaturedName).CreateRegisters(); Assert.AreEqual("STATUS", PICRegisters.GetRegister("STATUS").Name); Assert.AreEqual("FSR1L", PICRegisters.GetRegister("FSR1L").Name); Assert.AreEqual("FSR1H", PICRegisters.GetRegister("FSR1H").Name); Assert.AreEqual("FSR0L", PICRegisters.GetRegister("FSR0L").Name); Assert.AreEqual("FSR0H", PICRegisters.GetRegister("FSR0H").Name); Assert.AreEqual("FSR0", PICRegisters.GetRegister("FSR0").Name); Assert.AreEqual("FSR1", PICRegisters.GetRegister("FSR1").Name); Assert.AreEqual("INDF0", PICRegisters.GetRegister("INDF0").Name); Assert.AreEqual("INDF1", PICRegisters.GetRegister("INDF1").Name); Assert.AreEqual("BSR", PICRegisters.GetRegister("BSR").Name); Assert.AreEqual("WREG", PICRegisters.GetRegister("WREG").Name); Assert.AreEqual("PCL", PICRegisters.GetRegister("PCL").Name); Assert.AreEqual("PCLATH", PICRegisters.GetRegister("PCLATH").Name); }
public void PIC18arch_GetSubregisterTests() { var arch = GetArch(PIC18EggName); PICMemoryDescriptor.ExecMode = PICExecMode.Traditional; var lowByte = new BitRange(0, 8); var highByte = new BitRange(8, 16); var word = new BitRange(0, 16); Assert.AreSame(PIC18Registers.FSR0L, arch.GetRegister(PIC18Registers.FSR0.Domain, lowByte)); Assert.AreSame(PIC18Registers.FSR0H, arch.GetRegister(PIC18Registers.FSR0.Domain, highByte)); Assert.AreSame(PIC18Registers.FSR0, arch.GetRegister(PIC18Registers.FSR0.Domain, word)); PICMemoryDescriptor.ExecMode = PICExecMode.Extended; Assert.AreSame(PIC18Registers.FSR1L, arch.GetRegister(PIC18Registers.FSR1.Domain, lowByte)); Assert.AreSame(PIC18Registers.FSR1H, arch.GetRegister(PIC18Registers.FSR1.Domain, highByte)); Assert.AreSame(PIC18Registers.FSR2L, arch.GetRegister(PICRegisters.GetRegister("FSR2").Domain, lowByte)); Assert.AreSame(PIC18Registers.FSR2H, arch.GetRegister(PICRegisters.GetRegister("FSR2").Domain, highByte)); Assert.AreSame(PIC18Registers.FSR2, arch.GetRegister(PICRegisters.GetRegister("FSR2").Domain, word)); }