Exemple #1
0
        private void Addu(Instruction_R instruction)
        {
            int r1 = _registers.Read(instruction.RS).AsInt();
            int r2 = _registers.Read(instruction.RT).AsInt();

            _registers.Write(instruction.RD, (r1 + r2).AsBytes());
        }
Exemple #2
0
        private void Slt(Instruction_R instruction)
        {
            int r1 = _registers.Read(instruction.RS).AsInt();
            int r2 = _registers.Read(instruction.RT).AsInt();

            if (r1 < r2)
            {
                _registers.Write(instruction.RD, 1.AsBytes());
            }
            else
            {
                _registers.Write(instruction.RD, 0.AsBytes());
            }
        }
Exemple #3
0
        private void Sll(Instruction_R instruction)
        {
            var value = _registers.Read(instruction.RT).AsTwoComplementInt() << instruction.Shamt;

            _registers.Write(instruction.RD, value.AsBytes());
        }
Exemple #4
0
 private int Jr(Instruction_R instruction)
 {
     return(_registers.Read(instruction.RS).AsInt());
 }
Exemple #5
0
 private bool IsSyscall(Instruction_R instruction) => instruction.Funct == 0xC;