static ImmediateOrRegister getOperand2(int instruction) {
   boolean iBit = isIBitSet(instruction);
   ImmediateOrRegister operand2 = null;
   if (iBit) {
     operand2 = new Immediate(new Short((short) extractSignedIntFromNBits(instruction, 13)));
   } else {
     operand2 = SPARCRegisters.getRegister(getSourceRegister2(instruction));
   }
   return operand2;
 }
 Instruction decodeReadWrite(
     int instruction, SPARCInstructionFactory factory, int rs1Num, int rdNum) {
   Instruction instr = null;
   int specialReg = specialRegNum;
   if (rs1Num == 0) specialReg = SPARCSpecialRegisters.Y;
   if (rs1Num == 15 && rdNum == 0) {
     instr = factory.newStbarInstruction();
   } else {
     instr = factory.newReadInstruction(specialReg, rs1Num, SPARCRegisters.getRegister(rdNum));
   }
   return instr;
 }