# Enum: com.pnfsoftware.jeb.core.units.code.android.ir.DOpcodeType

This enumeration defines the opcode types of the intermediate representation \(IR\) [instructions](IDInstruction) 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](IDExpression)
 \- opnd2: source \(right\) member, [IDExpression](IDExpression)

## Constant: IR_INVOKE
Description: General method invocation
 \- opnd1: null
 \- opnd2: an [IDInvokeInfo](IDInvokeInfo) expression \([call](IDCallInfo), [new](IDNewInfo), [new\-array](IDNewArrayInfo), [alloc\-object](IDAllocObjectInfo)\)

## Constant: IR_JCOND
Description: Conditional jump
 \- opnd1: the [IDTarget](IDTarget), branched to if the conditional expression is true
 \- opnd2: the predicate, an [IDExpression](IDExpression) typed as `boolean`

## Constant: IR_JUMP
Description: Unconditional jump
 \- opnd1: the [IDTarget](IDTarget)
 \- 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](IDExpression)

## 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](IDExpression)

## Constant: IR_NOP
Description: No\-operation instruction
 \- opnd1: null
 \- opnd2: null

## Constant: IR_RETURN
Description: Method return
 \- opnd1: null
 \- opnd2: optional [IDExpression](IDExpression) 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](IDVar)
 \- opnd2: null

## Constant: IR_SWITCH
Description: Switch \(n\-way conditional jump\)
 \- opnd1: the [IDSwitchData](IDSwitchData)
 \- opnd2: the switched\-on [IDExpression](IDExpression)

## Constant: IR_THROW
Description: Raise an error or exception
 \- opnd1: null
 \- opnd2: non\-null throwable, an [IDExpression](IDExpression) \(should be typed as `java.lang.Throwable` or any of its sub\-types\)

## 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

## 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[]`


