com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar |
Representation of an IR variable. Variables can represent underlying physical registers, virtual
registers, local variables, global variables, etc. The class of an EVar can be retrieved from its
id
. Global-scope (IEGlobalContext
) ids are positive or zero; local-scope
(IERoutineContext
) ids are negative.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | FLAG_LIKELY_SAVED_VAR | Variables with this flag are stack variables likely to be defensive copies of registers that need to be preserved. | |||||||||
int | FLAG_NO_COPY | This variable should not be copied: duplicates, pairs, splits generally created during SSA- or SSA-like passes are forbidden. | |||||||||
int | IDL_BEGIN | ||||||||||
int | IDL_COPY | Start of full range for copy variables. | |||||||||
int | IDL_COPY_DUP2 | SOR for additional (secondary) duplicates of EVar-registers. | |||||||||
int | IDL_COPY_DUP2_END | EOR for additional (secondary) duplicates of EVar-registers. | |||||||||
int | IDL_COPY_DUPFULL | SOR for duplicates (mirrors and secondary duplicates). | |||||||||
int | IDL_COPY_DUPFULL_END | EOR for duplicates (mirrors and secondary duplicates). | |||||||||
int | IDL_COPY_END | End of full range for copy variables. | |||||||||
int | IDL_COPY_MERGER | SOR for copies that consist of mergers of 2 or more EVar-registers. | |||||||||
int | IDL_COPY_MERGER_END | EOR for copies that consist of mergers of 2 or more EVar-registers. | |||||||||
int | IDL_COPY_SLICE | SOR for partial (truncated, slices) copies of EVar-registers. | |||||||||
int | IDL_COPY_SLICE_END | EOR for partial (truncated, slices) copies of EVar-registers. | |||||||||
int | IDL_END | ||||||||||
int | IDL_MIRROR | SOR for primary duplicates (primary dup. | |||||||||
int | IDL_MIRROR_END | EOR for primary duplicates (primary dup. | |||||||||
int | IDL_PSEUDO_VAR | ||||||||||
int | IDL_PSEUDO_VAR_END | ||||||||||
int | IDL_SPECIAL | ||||||||||
int | IDL_SPECIAL_END | ||||||||||
int | IDL_STACKVAR | ||||||||||
int | IDL_STACKVAR_BASE | ||||||||||
int | IDL_STACKVAR_END | ||||||||||
int | IDL_SYMBOL | ||||||||||
int | IDL_SYMBOL_END | ||||||||||
int | IDL_VIRTUAL | ||||||||||
int | IDL_VIRTUAL_END | ||||||||||
int | ID_BEGIN | ||||||||||
int | ID_END | ||||||||||
int | ID_MEMVAR | ||||||||||
int | ID_MEMVAR_END | ||||||||||
int | ID_PHYSICAL_REGISTER | ||||||||||
int | ID_PHYSICAL_REGISTER_END | ||||||||||
int | ID_PSEUDO_VAR | ||||||||||
int | ID_REGISTER | ||||||||||
int | ID_REGISTER_END | ||||||||||
int | ID_SYMBOL | ||||||||||
int | ID_SYMBOL_END | ||||||||||
int | ID_VIRTUAL_REGISTER | ||||||||||
int | ID_VIRTUAL_REGISTER_END | ||||||||||
int | REGISTER_RANGE_SIZE |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract void | copyProperties(IEVar dst) | ||||||||||
abstract ICElement |
generateC(IERoutineContext ectx, ICMethod cctx, int position, boolean deref)
Specialized C Variable generator, allowing the specification of the variable position within
its containing expression.
| ||||||||||
abstract ICElement |
generateC(IERoutineContext ectx, ICMethod cctx, int position)
Specialized C Variable generator, allowing the specification of the variable position within
its containing expression.
| ||||||||||
abstract Long | getAddress() | ||||||||||
abstract int | getId() | ||||||||||
abstract String | getName() | ||||||||||
abstract boolean | isCopy() | ||||||||||
abstract boolean | isGlobalReference() | ||||||||||
abstract boolean | isGlobalVariable() | ||||||||||
abstract boolean | isPhysicalRegister() | ||||||||||
abstract boolean | isPseudoVar() | ||||||||||
abstract boolean | isRegister() | ||||||||||
abstract boolean | isRoutineScope() | ||||||||||
abstract boolean | isStackReference() | ||||||||||
abstract boolean | isStackVariable() | ||||||||||
abstract boolean | isTypeable() | ||||||||||
abstract boolean | isVirtualRegister() |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() |
Variables with this flag are stack variables likely to be defensive copies of registers that need to be preserved. Normally, such vars should not be treated as local vars when it comes to may-use/may-def calculations for statements that access memory, such as EMem or ECall. That yields cleaner conservative data chains.
This variable should not be copied: duplicates, pairs, splits generally created during SSA- or SSA-like passes are forbidden. The original var should be used (and therefore, types are unlikely to be applied to it.)
Start of full range for copy variables. The full range consists of: duplicates (mirrors + secondary duplicates), mergers, and slices.
SOR for additional (secondary) duplicates of EVar-registers.
EOR for additional (secondary) duplicates of EVar-registers.
SOR for duplicates (mirrors and secondary duplicates).
EOR for duplicates (mirrors and secondary duplicates).
End of full range for copy variables. The full range consists of: duplicates (mirrors + secondary duplicates), mergers, and slices.
SOR for copies that consist of mergers of 2 or more EVar-registers.
EOR for copies that consist of mergers of 2 or more EVar-registers.
SOR for partial (truncated, slices) copies of EVar-registers.
EOR for partial (truncated, slices) copies of EVar-registers.
SOR for primary duplicates (primary dup. = "mirror") of EVar-registers. Note that the range must have same size as the full register range.
EOR for primary duplicates (primary dup. = "mirror") of EVar-registers. Note that the range must have same size as the full register range.
Specialized C Variable generator, allowing the specification of the variable position within its containing expression.
position | variable "position": 0=unknown, 1=left-side of EAssign, 2=function parameter |
---|---|
deref | generate a dereferenced version of the variable |
Specialized C Variable generator, allowing the specification of the variable position within its containing expression.
position | variable "position": 0=unknown, 1=left-side of EAssign, 2=function parameter |
---|