hasmer
Public Member Functions | Properties | List of all members
Hasmer.Decompiler.RegisterTracker Class Reference

Represents the registers of a function, and keeps track of the operations being performed on them. More...

Public Member Functions

 RegisterTracker (FunctionState state, uint registers)
 Creates a new RegisterTracker given an amount of registers to store and keep track of. More...
 
void MarkUsage (uint register)
 Marks a usage of a register. Each time a register is used as a value in an operand, this method should be invoked with the operand as the parameter.
See RegisterUsages. More...
 
void MarkUsages (params uint[] registers)
 Marks a usage of multiple registers. See MarkUsage(uint). More...
 

Properties

SyntaxNode[] Storage [get, set]
 Represents the contents of each register as a JavaScript syntax object. More...
 
int[] RegisterUsages [get, set]
 Represents the amount of times the value of each register has been referenced while the register retains that value.
Each time a register is referenced in an operand, the instruction visitor calls MarkUsage(uint). When the value of the register is changed, the usage is reset to 0. More...
 
int Length [get]
 The amount of registers contained in the Storage array. More...
 
SyntaxNode this[uint register] [get, set]
 Gets the syntax located at the given register. If a call expression is located at a register which is being overriden with a new value, the call expression is immediately added to the source tree, and then the register is replaced with the argument. More...
 
SyntaxNode this[int index] [get, set]
 

Detailed Description

Represents the registers of a function, and keeps track of the operations being performed on them.

Constructor & Destructor Documentation

◆ RegisterTracker()

Hasmer.Decompiler.RegisterTracker.RegisterTracker ( FunctionState  state,
uint  registers 
)
inline

Creates a new RegisterTracker given an amount of registers to store and keep track of.

Member Function Documentation

◆ MarkUsage()

void Hasmer.Decompiler.RegisterTracker.MarkUsage ( uint  register)
inline

Marks a usage of a register. Each time a register is used as a value in an operand, this method should be invoked with the operand as the parameter.
See RegisterUsages.

◆ MarkUsages()

void Hasmer.Decompiler.RegisterTracker.MarkUsages ( params uint[]  registers)
inline

Marks a usage of multiple registers. See MarkUsage(uint).

Property Documentation

◆ Length

int Hasmer.Decompiler.RegisterTracker.Length
get

The amount of registers contained in the Storage array.

◆ RegisterUsages

int [] Hasmer.Decompiler.RegisterTracker.RegisterUsages
getset

Represents the amount of times the value of each register has been referenced while the register retains that value.
Each time a register is referenced in an operand, the instruction visitor calls MarkUsage(uint). When the value of the register is changed, the usage is reset to 0.

◆ Storage

SyntaxNode [] Hasmer.Decompiler.RegisterTracker.Storage
getset

Represents the contents of each register as a JavaScript syntax object.

◆ this[uint register]

SyntaxNode Hasmer.Decompiler.RegisterTracker.this[uint register]
getset

Gets the syntax located at the given register. If a call expression is located at a register which is being overriden with a new value, the call expression is immediately added to the source tree, and then the register is replaced with the argument.


The documentation for this class was generated from the following file: