private void loadImmediate(Instruction instr, Token[] tokens) throws ParserException {
		int i = 0;
		try {
			Integer value;
			//r1
			++i;
			value = Registers.instance().getInteger(tokens[i].getString());
			instr.setRt(value);
			//,
			++i;
			if (!tokens[i].getString().equals(","))
				throw new ParserException(MISSING_SEPARATOR, tokens[i]);
			//Label+4
			++i;
			boolean negative = false;
			if (tokens[i].getString().equals("+")) {
				negative = false;
				++i;
			} else if (tokens[i].getString().equals("-")) {
				negative = true;
				++i;
			}
			value = Integer.decode(tokens[i].getString());
			if (negative)
				value = -value;
			instr.setOffset(value);
			if (i < tokens.length - 1) {
				throw new ParserException(UNEXPECTED_TRASH, tokens[++i]);
			}
		} catch (ArrayIndexOutOfBoundsException ex) {
			throw new ParserException(INCOMPLETE_INSTRUCTION, tokens[0]);
		} catch (InstructionException ex) {
			throw new ParserException(INSTRUCTION_EXCEPTION + ex.getMessage(), tokens[i]);
		} catch (NullPointerException ex) {
			throw new ParserException(NOT_A_REGISTER, tokens[i]);
		} catch (NumberFormatException ex) {
			throw new ParserException(NOT_A_NUMBER, tokens[i]);
		}
	}