public interface

ICallingConvention

com.pnfsoftware.jeb.core.units.code.asm.type.ICallingConvention

Class Overview

Calling convention objects are immutable.

Notes:
- several (potentially as many as necessary) input slots
- a single output slot
- input slots can be registers, register pairs, or stack slots
- the output slot can be a register or a register pair
- the "routine return address" slot is a single slot, either register or stack
- register ids are well-defined in corresponding IRegisterBankLayout implementations

Summary

Public Methods
abstract List<String> getAlternateNames()
Get a list of alternate names for this calling convention.
abstract List<CompilerType> getCompilerTypes()
Get the list of compiler types this calling convention may work with.
abstract RoutineIOSlot getInputMultiSlotByIndex(int index)
Get the location of a dual- (register or stack) or multi- (stack only) slot routine parameter at the provided slot index.
abstract RoutineIOSlot getInputSlotByIndex(int index)
Get the location of a single-slot routine parameter at the provided slot index.
abstract String getName()
Get the common name of this calling convention.
abstract RoutineIOSlot getOutputDualSlot()
Retrieve the location of a dual-slot return value.
abstract RoutineIOSlot getOutputSlot()
Retrieve the location of a single-slot return value.
abstract List<ProcessorType> getProcessorTypes()
Get the list of processor types this calling convention may work with.
abstract RoutineIOSlot getReturnAddressSlot()
abstract List<Integer> getSpoiledRegisters()
Get the list of registers that may be modified a callee, but that are not considered part of the output results.
abstract List<SubsystemType> getSubsystemTypes()
Get the list of subsystem types this calling convention may work with.
abstract boolean isStackCleanedByCaller()
Determine whether routine parameters pushed on stack before a routine call are cleaned by the caller or by the callee.
abstract boolean isUnknown()

Public Methods

public abstract List<String> getAlternateNames ()

Get a list of alternate names for this calling convention.

public abstract List<CompilerType> getCompilerTypes ()

Get the list of compiler types this calling convention may work with.

public abstract RoutineIOSlot getInputMultiSlotByIndex (int index)

Get the location of a dual- (register or stack) or multi- (stack only) slot routine parameter at the provided slot index.

Parameters
index slot index (not a parameter index)

public abstract RoutineIOSlot getInputSlotByIndex (int index)

Get the location of a single-slot routine parameter at the provided slot index.

Parameters
index slot index (not a parameter index)

public abstract String getName ()

Get the common name of this calling convention.

public abstract RoutineIOSlot getOutputDualSlot ()

Retrieve the location of a dual-slot return value.

public abstract RoutineIOSlot getOutputSlot ()

Retrieve the location of a single-slot return value.

public abstract List<ProcessorType> getProcessorTypes ()

Get the list of processor types this calling convention may work with.

public abstract RoutineIOSlot getReturnAddressSlot ()

public abstract List<Integer> getSpoiledRegisters ()

Get the list of registers that may be modified a callee, but that are not considered part of the output results.

public abstract List<SubsystemType> getSubsystemTypes ()

Get the list of subsystem types this calling convention may work with.

public abstract boolean isStackCleanedByCaller ()

Determine whether routine parameters pushed on stack before a routine call are cleaned by the caller or by the callee.

public abstract boolean isUnknown ()