com.pnfsoftware.jeb.core.units.code.asm.type.ICallingConvention |
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
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() |
Get a list of alternate names for this calling convention.
Get the list of compiler types this calling convention may work with.
Get the location of a dual- (register or stack) or multi- (stack only) slot routine parameter at the provided slot index.
index | slot index (not a parameter index) |
---|
Get the location of a single-slot routine parameter at the provided slot index.
index | slot index (not a parameter index) |
---|
Get the common name of this calling convention.
Retrieve the location of a dual-slot return value.
Get the list of processor types this calling convention may work with.
Get the list of registers that may be modified a callee, but that are not considered part of the output results.
Get the list of subsystem types this calling convention may work with.
Determine whether routine parameters pushed on stack before a routine call are cleaned by the caller or by the callee.