# Interface: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar

Representation of an IR variable. Also a polymorphic placeholder for a variety of terminal expressions. 

 Variables can represent underlying physical registers, virtual registers, local variables, global variables, etc. The class of an IEVar can be retrieved from its [id](#getId()). Global\-scope \([IEGlobalContext](IEGlobalContext)\) ids are positive or zero; local\-scope \([IERoutineContext](IERoutineContext)\) ids are negative.

## Static Field: FLAG_LIKELY_COPIED_PARAM
Type: `int`

Constant value: `64`
Description: Variables with this flag are stack variables likely to be copies of input parameters, that may have been provided in physical registers. 

 SUch variables 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.

## Static Field: FLAG_LIKELY_SAVED_VAR
Type: `int`

Constant value: `32`
Description: Variables with this flag are stack variables likely to be defensive copies of registers that need to be preserved. 

 Such variables 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.

## Static Field: FLAG_NO_COPY
Type: `int`

Constant value: `16`
Description: 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.\)

## Static Field: IDL_BEGIN
Type: `int`

Constant value: `1`

## Static Field: IDL_COPY
Type: `int`

Constant value: `65536`
Description: Start of full range for copy variables. The full range consists of: duplicates \(mirrors \+ secondary duplicates\), mergers, and slices.

## Static Field: IDL_COPY_DUP2
Type: `int`

Constant value: `196608`
Description: SOR for additional \(secondary\) duplicates of IEVar\-registers.

## Static Field: IDL_COPY_DUP2_END
Type: `int`

Constant value: `1245184`
Description: EOR for additional \(secondary\) duplicates of IEVar\-registers.

## Static Field: IDL_COPY_DUPFULL
Type: `int`

Constant value: `65536`
Description: SOR for duplicates \(mirrors and secondary duplicates\).

## Static Field: IDL_COPY_DUPFULL_END
Type: `int`

Constant value: `1245184`
Description: EOR for duplicates \(mirrors and secondary duplicates\).

## Static Field: IDL_COPY_END
Type: `int`

Constant value: `1769472`
Description: End of full range for copy variables. The full range consists of: duplicates \(mirrors \+ secondary duplicates\), mergers, and slices.

## Static Field: IDL_COPY_MERGER
Type: `int`

Constant value: `1245184`
Description: SOR for copies that consist of mergers of 2 or more IEVar\-registers.

## Static Field: IDL_COPY_MERGER_END
Type: `int`

Constant value: `1507328`
Description: EOR for copies that consist of mergers of 2 or more IEVar\-registers.

## Static Field: IDL_COPY_SLICE
Type: `int`

Constant value: `1507328`
Description: SOR for partial \(truncated, slices\) copies of IEVar\-registers.

## Static Field: IDL_COPY_SLICE_END
Type: `int`

Constant value: `1769472`
Description: EOR for partial \(truncated, slices\) copies of IEVar\-registers.

## Static Field: IDL_END
Type: `int`

Constant value: `2147483647`

## Static Field: IDL_MIRROR
Type: `int`

Constant value: `65536`
Description: SOR for primary duplicates \(primary dup. = "mirror"\) of IEVar\-registers. Note that the range must have same size as the full register range.

## Static Field: IDL_MIRROR_END
Type: `int`

Constant value: `196608`
Description: EOR for primary duplicates \(primary dup. = "mirror"\) of IEVar\-registers. Note that the range must have same size as the full register range.

## Static Field: IDL_PSEUDO_VAR
Type: `int`

Constant value: `1`

## Static Field: IDL_PSEUDO_VAR_END
Type: `int`

Constant value: `2`

## Static Field: IDL_SPECIAL
Type: `int`

Constant value: `2`

## Static Field: IDL_SPECIAL_END
Type: `int`

Constant value: `65536`

## Static Field: IDL_STACKVAR
Type: `int`

Constant value: `33554432`

## Static Field: IDL_STACKVAR_BASE
Type: `int`

Constant value: `1073741824`

## Static Field: IDL_STACKVAR_END
Type: `int`

Constant value: `2147483647`

## Static Field: IDL_SYMBOL
Type: `int`

Constant value: `8388608`
Description: Start of range for stack\-variable references.

## Static Field: IDL_SYMBOL_END
Type: `int`

Constant value: `8454144`
Description: End of range for stack\-variable references.

## Static Field: IDL_VIRTUAL
Type: `int`

Constant value: `16777216`

## Static Field: IDL_VIRTUAL_END
Type: `int`

Constant value: `33554432`

## Static Field: ID_BEGIN
Type: `int`

Constant value: `0`

## Static Field: ID_END
Type: `int`

Constant value: `2147483647`

## Static Field: ID_MEMVAR
Type: `int`

Constant value: `16777216`

## Static Field: ID_MEMVAR_END
Type: `int`

Constant value: `2147483647`

## Static Field: ID_PHYSICAL_REGISTER
Type: `int`

Constant value: `0`

## Static Field: ID_PHYSICAL_REGISTER_END
Type: `int`

Constant value: `65536`

## Static Field: ID_PSEUDO_VAR
Type: `int`

Constant value: `-1`

## Static Field: ID_REGISTER
Type: `int`

Constant value: `0`

## Static Field: ID_REGISTER_END
Type: `int`

Constant value: `131072`

## Static Field: ID_SYMBOL
Type: `int`

Constant value: `131072`

## Static Field: ID_SYMBOL_END
Type: `int`

Constant value: `196608`

## Static Field: ID_VIRTUAL_REGISTER
Type: `int`

Constant value: `65536`

## Static Field: ID_VIRTUAL_REGISTER_END
Type: `int`

Constant value: `131072`

## Static Field: REGISTER_RANGE_SIZE
Type: `int`

Constant value: `131072`

## Method: copyProperties
- parameter: `dst`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: 
parameter: dst: 

## Method: generateC
- parameter: `ectx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `cctx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICMethod`
- parameter: `position`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICElement`

Description: Specialized C Variable generator, allowing the specification of the variable position within its containing expression.
parameter: ectx: 
parameter: cctx: 
parameter: position: variable "position": 0=unknown, 1=left\-side of EAssign, 2=function parameter
return: 

## Method: generateC
- parameter: `ectx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `cctx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICMethod`
- parameter: `position`, type: `int`
- parameter: `deref`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICElement`

Description: Specialized C Variable generator, allowing the specification of the variable position within its containing expression.
parameter: ectx: 
parameter: cctx: 
parameter: position: variable "position": 0=unknown, 1=left\-side of EAssign, 2=function parameter
parameter: deref: generate a dereferenced version of the variable
return: 

## Method: getAddress
- return type: `java.lang.Long`


## Method: getId
- return type: `int`


## Method: getName
- return type: `java.lang.String`


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


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


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


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


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


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


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


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


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


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


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

Description: 
return: 

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


