# Interface: com.pnfsoftware.jeb.core.units.code.asm.INativeDisassemblerPlugin

Native disassembler plugins. Decompiler plugins should implement [AbstractNativeDisassemblerPlugin](AbstractNativeDisassemblerPlugin).

## Method: canBeProcessedOutsideCodeObject
- return type: `boolean`

Description: Determine when this disassembler knows how to process 'naked' code, not located within a code object.
return: true if raw machine code can be processed without a code object

## Method: canProcessELF
- parameter: `machineId`, type: `int`
- parameter: `isELF64`, type: `boolean`
- return type: `boolean`

Description: Determine whether this disassembler can handle machine code identified by the provided ELF machine id.
parameter: machineId: ELF machine identifier
parameter: isELF64: true for 64\-bit ELF objects
return: true if the ELF machine type can be processed

## Method: canProcessPE
- parameter: `machineId`, type: `int`
- parameter: `isPE64`, type: `boolean`
- return type: `boolean`

Description: Determine whether this disassembler can handle machine code identified by the provided PE/COFF machine id.
parameter: machineId: PE/COFF machine identifier
parameter: isPE64: true for 64\-bit PE objects
return: true if the PE/COFF machine type can be processed

## Method: createContributions
- parameter: `codeUnit`, type: `com.pnfsoftware.jeb.core.units.INativeCodeUnit<InsnType>`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.IUnitContribution>`

Description: Create optional unit contributions for a native code unit.
parameter: codeUnit: native code unit being created
return: contribution collection, possibly empty

## Method: getAnalyzerExtension
- return type: `com.pnfsoftware.jeb.core.units.code.asm.analyzer.INativeCodeAnalyzerExtension<InsnType>`

Description: Create or retrieve the analyzer extension supplied by this plugin.
return: analyzer extension, or null if none is supplied

## Method: getCallingConvention
- parameter: `parent`, type: `com.pnfsoftware.jeb.core.IUnitCreator`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.ICallingConvention`

Description: Create or retrieve the default calling convention.
parameter: parent: parent unit creator
return: calling convention, or null if it should be inferred

## Method: getCodeFormatter
- return type: `com.pnfsoftware.jeb.core.units.code.asm.render.GenericCodeFormatter<InsnType>`

Description: Create or retrieve the code formatter.
return: native code formatter

## Method: getMemory
- parameter: `parent`, type: `com.pnfsoftware.jeb.core.IUnitCreator`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.memory.IVirtualMemory`

Description: Create or retrieve the virtual memory model.
parameter: parent: parent unit creator
return: virtual memory model

## Method: getProcessor
- parameter: `parent`, type: `com.pnfsoftware.jeb.core.IUnitCreator`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.processor.IProcessor<InsnType>`

Description: Create or retrieve the processor used by this disassembler.
parameter: parent: parent unit creator
return: processor instance

## Method: getProcessorTypes
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.codeobject.ProcessorType>`

Description: Provide a list of processor types supported by this plugin's processor. The list must be consistent with the candidate values that [the implemented processor may return](IProcessor#getType()). The returned list may be empty if the processor does not use a specific type, as may be the case with bytecode parsers.
return: a list, possibly empty

