code: public void math(byte opcode) {
          int stackAdjust;
  
          switch(opcode) {
          case Opcode.INEG:
          case Opcode.LNEG:
          case Opcode.FNEG:
          case Opcode.DNEG:
              stackAdjust = 0;
              break;
          case Opcode.IADD:
          case Opcode.ISUB:
          case Opcode.IMUL:
          case Opcode.IDIV:
          case Opcode.IREM:
          case Opcode.IAND:
          case Opcode.IOR:
          case Opcode.IXOR:
          case Opcode.ISHL:
          case Opcode.ISHR:
          case Opcode.IUSHR:
          case Opcode.FADD:
          case Opcode.FSUB:
          case Opcode.FMUL:
          case Opcode.FDIV:
          case Opcode.FREM:
          case Opcode.FCMPG:
          case Opcode.FCMPL:
          case Opcode.LSHL:
          case Opcode.LSHR:
          case Opcode.LUSHR:
              stackAdjust = -1;
              break;
          case Opcode.LADD:
          case Opcode.LSUB:
          case Opcode.LMUL:
          case Opcode.LDIV:
          case Opcode.LREM:
          case Opcode.LAND:
          case Opcode.LOR:
          case Opcode.LXOR:
          case Opcode.DADD:
          case Opcode.DSUB:
          case Opcode.DMUL:
          case Opcode.DDIV:
          case Opcode.DREM:
              stackAdjust = -2;
              break;
          case Opcode.LCMP:
          case Opcode.DCMPG:
          case Opcode.DCMPL:
              stackAdjust = -3;
              break;
          default:
              throw new IllegalArgumentException
                  ("Not a math opcode: " + Opcode.getMnemonic(opcode));
          }
  
          addCode(stackAdjust, opcode);
      }
docs: math instructions