# Enum: com.pnfsoftware.jeb.core.units.code.android.ir.DOpcodeType
- Super class: `java.lang.Enum<com.pnfsoftware.jeb.core.units.code.android.ir.DOpcodeType>`

This enumeration defines the opcode types of the intermediate representation \(IR\)  [instructions](com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction.md) used by `dexdec`. An IR instruction has two optional  operands, noted [opnd1](IDInstruction#getOperand1()) and [opnd2](IDInstruction#getOperand2()).  

  Note that the [#IR_STORE_EXCEPTION](#IR_STORE_EXCEPTION) opcode can only be the first instruction of an  exception handler block. The [#IR_JUMP](#IR_JUMP), [#IR_JCOND](#IR_JCOND), [#IR_SWITCH](#IR_SWITCH),  [#IR_RETURN](#IR_RETURN), [#IR_THROW](#IR_THROW) can only be the last instruction of a basic block.

## Constant: IR_ASSIGN
Description: Assignment.
  \- opnd1: destination \(left\) member, [IDExpression](com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression.md)
  \- opnd2: source \(right\) member, [IDExpression](com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression.md)

## Constant: IR_INVOKE
Description: General method invocation
  \- opnd1: null
  \- opnd2: an [IDInvokeInfo](com.pnfsoftware.jeb.core.units.code.android.ir.IDInvokeInfo.md) expression \([call](com.pnfsoftware.jeb.core.units.code.android.ir.IDCallInfo.md), [new](com.pnfsoftware.jeb.core.units.code.android.ir.IDNewInfo.md),  [new\-array](com.pnfsoftware.jeb.core.units.code.android.ir.IDNewArrayInfo.md), [alloc\-object](com.pnfsoftware.jeb.core.units.code.android.ir.IDAllocObjectInfo.md)\)

## Constant: IR_JCOND
Description: Conditional jump
  \- opnd1: the [IDTarget](com.pnfsoftware.jeb.core.units.code.android.ir.IDTarget.md), branched to if the conditional expression is true
  \- opnd2: the predicate, an [IDExpression](com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression.md) typed as `boolean`

## Constant: IR_JUMP
Description: Unconditional jump
  \- opnd1: the [IDTarget](com.pnfsoftware.jeb.core.units.code.android.ir.IDTarget.md)
  \- opnd2: null

## Constant: IR_MONITOR_ENTER
Description: Notify the beginning of a synchronized block of code.
  Ideally, should not be translated to opcodes: instead the structurer should combine these  opcodes with try\-catch block to build synchronized code blocks.
  However, if this is not possible, invalid statements \(similar to 'goto'\) should be  issued.
  \- opnd1: null
  \- opnd2: the lock object [IDExpression](com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression.md)

## Constant: IR_MONITOR_EXIT
Description: Notify the end of a synchronized block of code.
  Ideally, should not be translated to opcodes: instead the structurer should combine these  opcodes with try\-catch block to build synchronized code blocks.
  However, if this is not possible, invalid statements \(similar to 'goto'\) should be  issued.
  \- opnd1: null
  \- opnd2: the lock object [IDExpression](com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression.md)

## Constant: IR_NOP
Description: No\-operation instruction
  \- opnd1: null
  \- opnd2: null

## Constant: IR_RETURN
Description: Method return
  \- opnd1: null
  \- opnd2: optional [IDExpression](com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression.md) return value \(may be null\)

## Constant: IR_STORE_EXCEPTION
Description: Store a caught typed exception to a variable
  Very restrictive opcode, to be used only at the beginning of exception handlers blocks.  \(equivalent to Dalvik's `move-exception`.\)
  \- opnd1: [IDVar](com.pnfsoftware.jeb.core.units.code.android.ir.IDVar.md)
  \- opnd2: null

## Constant: IR_SWITCH
Description: Switch \(n\-way conditional jump\)
  \- opnd1: the [IDSwitchData](com.pnfsoftware.jeb.core.units.code.android.ir.IDSwitchData.md)
  \- opnd2: the switched\-on [IDExpression](com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression.md)

## Constant: IR_THROW
Description: Raise an error or exception
  \- opnd1: null
  \- opnd2: non\-null throwable, an [IDExpression](com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression.md) \(should be typed as  `java.lang.Throwable` or any of its sub\-types\)

## Final Method: indexOf
- parameter: `candidates`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.DOpcodeType[]`
- return type: `int`

Description: Determine whether this opcode matches one of the provided candidate opcodes.
parameter: candidates: candidate opcodes
return: an index, \-1 if not found

## Final Method: isAnyOf
- parameter: `candidates`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.DOpcodeType[]`
- return type: `boolean`

Description: Determine whether this opcode matches one of the provided candidate opcodes.
parameter: candidates: candidate opcodes
return: true if this opcode is one of the candidates

## Static Method: valueOf
- parameter: `name`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.DOpcodeType`


## Static Method: values
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.DOpcodeType[]`


