# Interface: com.pnfsoftware.jeb.core.units.code.asm.simulator.ICodeResolver

A resolver attempts to determine the actual value of symbols and items used by instruction artifacts. They can be: branch targets, register values, operand values, flags and other processor state data, etc.

## Method: determineNextAddress
- parameter: `context`, type: `com.pnfsoftware.jeb.core.units.code.asm.IMachineContext`
- parameter: `instruction`, type: `InsnType`
- return type: `com.pnfsoftware.jeb.core.units.code.ICodePointer`

Description: Determine the next value of the program counter \(PC\). Note that the instruction is provided optionally \(the context has enough data to parse the instruction at the current PC\); however, in practice, the instruction at PC has very likely been decoded already, and is provided by the caller. In such a case, the implementor is free to check the consistency between the provided instruction and the context \(eg, performing a basic byte match\). An [IllegalArgumentException](IllegalArgumentException) can be raised if a mismatch is detected.
parameter: context: mandatory context
parameter: instruction: optional instruction
return: the next address as well as any possible relevant information about the processor         state when that next address is executed \(eg, processor mode change\)
throws: if the value cannot be determined

## Method: determineOperandValue
- parameter: `context`, type: `com.pnfsoftware.jeb.core.units.code.asm.IMachineContext`
- parameter: `instruction`, type: `InsnType`
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.simulator.IResolvedOperandValue`

Description: Determine the actual values of an instruction operand. Note that the instruction is provided optionally \(the context has enough data to parse the instruction at the current PC\); however, in practice, the instruction at PC has very likely been decoded already, and is provided by the caller. In such a case, the implementor is free to check the consistency between the provided instruction and the context \(eg, performing a basic byte match\). An [IllegalArgumentException](IllegalArgumentException) can be raised if a mismatch is detected.
parameter: context: mandatory context
parameter: instruction: optional instruction
parameter: index: the operand index
return: the operand value
throws: if a value cannot be determined

