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()); }
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()); } }
private void Sll(Instruction_R instruction) { var value = _registers.Read(instruction.RT).AsTwoComplementInt() << instruction.Shamt; _registers.Write(instruction.RD, value.AsBytes()); }
private int Jr(Instruction_R instruction) { return(_registers.Read(instruction.RS).AsInt()); }
private bool IsSyscall(Instruction_R instruction) => instruction.Funct == 0xC;