Exemple #1
0
        private void CalcMpc()
        {
            var ctrlNxtAddrNoMsb = _uc.Mir.Substring(1, 8);
            var mbrRegIn         = _fs.get_MBR().Substring(24, 8);
            var jmpcAddr         = _uc.Mir[9] == '1'
                ? Utility.ToBin(Convert.ToInt32(ctrlNxtAddrNoMsb, 2) | Convert.ToInt32(mbrRegIn, 2), 8)
                : ctrlNxtAddrNoMsb;

            var aluFlag = _fs.get_ALUflag();

            var nFlag = aluFlag[0];
            var zFlag = aluFlag[1];
            var jamN  = Convert.ToInt32(_uc.Mir[10].ToString(), 2);
            var jamZ  = Convert.ToInt32(_uc.Mir[11].ToString(), 2);

            var highBit = (nFlag & jamN) | (zFlag & jamZ);

            highBit |= Convert.ToInt32(_uc.Mpc[0].ToString(), 2);

            _uc.Mpc = highBit + jmpcAddr;
        }