public void RegisterInitialize() { CoreRegisterGroup <uint> x = new CoreRegisterGroup <uint>(16); x[0] = 0xFF000000; Assert.AreEqual(x[0], 0xFF000000); }
public void RegisterLink() { CoreRegisterGroup <uint> x = new CoreRegisterGroup <uint>(16); CoreRegister <uint> x0 = x.LinkRegister(0); x0.Value = 0xF1FF0000; Assert.AreEqual(x0.Value, x[0]); }
public void RV32ICoreInitializeTest() { RV32ICore core = new RV32ICore(); CoreRegister <uint> ra = typeof(RV32ICore).GetField("abi_ra", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(core) as CoreRegister <uint>; CoreRegisterGroup <uint> rGroup = typeof(RV32ICore).GetField("coreRegisterGroup", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(core) as CoreRegisterGroup <uint>; ra.Value = 0x00100020; Assert.AreEqual(ra.Value, rGroup[1]); }
/// <summary> /// Create a RV32I 32-bit integer RISC-V Core /// </summary> public RV32ICore() { coreRegisterGroup = new CoreRegisterGroup <uint>(coreRegisterCount); // Link the specific function registers constant_0 = coreRegisterGroup.LinkRegister(0); abi_ra = coreRegisterGroup.LinkRegister(1); abi_sp = coreRegisterGroup.LinkRegister(2); abi_gp = coreRegisterGroup.LinkRegister(3); abi_tp = coreRegisterGroup.LinkRegister(4); // The x0 register always 0 constant_0.Value = 0; // All register set to zero foreach (CoreRegister <uint> register in coreRegisterGroup) { register.Value = 0; } // Clear program counter (PC) reg_pc = new CoreRegister <uint>(0); }