Esempio n. 1
0
        public void RegisterInitialize()
        {
            CoreRegisterGroup <uint> x = new CoreRegisterGroup <uint>(16);

            x[0] = 0xFF000000;
            Assert.AreEqual(x[0], 0xFF000000);
        }
Esempio n. 2
0
        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]);
        }
Esempio n. 3
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);
            }