▼NHasmer | |
▼NAssembler | |
►NParser | |
CHasmCommentParser | Parses a comment (starting with a '//') from the stream |
CHasmDataDeclaration | Represents a ".data" declaration |
CHasmFunctionModifierToken | Represents a declaration that modifiers a function header |
CHasmFunctionToken | Represents a function definition token |
CHasmHeader | Represents a ".hasm" header declaration |
CHasmInstructionToken | Represents a Hasm instruction and its operands |
CHasmIntegerToken | Represents an integer, either a 4-byte signed integer or a 4-byte unsigned integer specifically |
CHasmLabelToken | Represents a label definition or reference |
CHasmLiteralToken | Represents a literal value, such as a numeric or string value |
CHasmNumberToken | Represents an 8-byte IEEE754 floating-point value |
CHasmOperandToken | Represents a Hasm instruction's operand |
CHasmParserException | Represents an error in syntax during the parsing of a Hasm file |
CHasmProgram | |
CHasmReaderState | Represents the state of a Hasm reader, especially a HasmTokenStream |
CHasmSimpleToken | Represents a "simple" value, generally a constant identifier (e.g. "true" or "false") |
CHasmStringToken | Represents a string literal |
CHasmIdentifierToken | Represents an identifier |
CHasmStringParser | Parses an escaped string surrounded by double quotes |
CHasmStringStreamState | |
CHasmStringStream | Represents a stream that parses a Hasm assembly file |
CHasmToken | Represents a token in a Hasm assembly file |
CTokenDefinition | |
CTokenizerState | |
CTokenMatch | |
CTokenizerResult | |
CHasmTokenizer | |
CIHasmTokenParser | Represents a class which can parse Hasm tokens from a Hasm file |
►NVisitor | |
CHasmAssemblerDataBuffer | Represents a data buffer as it is declared in a Hasm file |
CDataAssembler | Assembles the declared data tokens (i.e. ".data") for creating the array value and object key/value buffers |
CFunctionAssembler | Assembles Hasm functions |
CHbcFunctionBuilder | Represents a function being built by the assembler |
CDataDisassembler | Used for diassembling the data section of a Hermes bytecode file |
CDisassemblerOptions | Represents the options to be used when disassembling |
CFunctionDisassembler | Disassembles a function from Hermes bytecode into Hasm assembly |
CHbcAssembler | Represents a Hasm assembler, which assembles into Hermes bytecode |
CHbcDisassembler | Represents a Hermes bytecode disassembler |
▼NCLI | |
►CProgram | |
CAssembleOptions | |
CDecodeOptions | |
CDecompileOptions | |
CDisassembleOptions | |
▼NDecompiler | |
►NAnalysis | |
CControlFlowBlock | Represents a block of code in a ControlFlowGraph. The block of code begins at either a position that is jumped to, or the start of the function. The block of code ends at the first jump instruction found after the code beyond the start position, or the end of the function |
CControlFlowGraph | Represents the control flow of a function as a graph |
CInstructionAnalyzer | |
CStaticAnalyzer | The base class for performing static analysis on a decmopiled AST. This allows for optimizing the AST to make it as readable as possible |
CStaticAnalyzerState | |
►NAST | |
CArrayExpression | |
CAssignmentExpression | |
CBinaryExpression | |
CBlockStatement | |
CCallExpression | |
CClassDeclaration | |
CEmptyExpression | Represents an empty token in the syntax tree. This is commonly used a placeholder during decompilation |
CFunctionDeclaration | |
CIdentifier | Represents a JavaScript identifier, such as a field name, class name, etc |
CIfStatement | |
CLiteral | |
CMemberExpression | |
CMethodDefinition | |
CObjectExpressionProperty | |
CObjectExpression | |
CProgramDefinition | Represents the entire decompile program as a sequence of tokens. This is the root token of the output |
CRegExpLiteral | |
CReturnStatement | |
CSyntaxNode | Represents a token in the JavaScript syntax tree |
CUnaryExpression | |
►NVisitor | |
CBooleanOperations | Visits instructions that perform boolean operations |
CCreationOperations | Visits operations that create new objects/arrays/etc |
CEnvironmentIdentifier | Represents an internal identifier referring to an environment context |
CEnvironmentOperations | Visitors for instructions that deal with function environments |
CFieldOperations | Visits instructions that gets/sets fields in an object |
CFunctionOperations | Visits instructions that depend on / change the flow of the function; i.e. loading parameters, returning values, etc |
CInvokeOperations | Visits instructions that invoke functions, methods, and constructors |
CJumpOperations | Visits instructions that perform jump based on given citeria |
CLoadConstantOperations | Visitors for instructions that load constant values |
CMathOperations | Visits instructions that perform mathematical operations (e.g. addition, subtraction, etc.) |
CUnaryOperations | Visits instructions whose decompiled AST is a UnaryExpression, such as TypeOf |
CVisitorCollectionAttribute | Marks a class as containing methods that act as instruction vistors, i.e. marked with the VisitorAttribute attribute |
CVisitorAttribute | Marks a method as an instruction handler. The name of the method is the name of the instruction is handles. The instruction should have the signature of a FunctionDecompiler.InstructionHandler |
CDecompilerContext | Represents the context of a function as it is being decompiled |
CDecompilerOptions | Represents the options to be used when decompiling |
CFunctionDecompiler | Represents a decompiler for an entire function |
CFunctionState | Represents the state of a function as it is decompiled |
CHbcDecompiler | Represents a decompiler of a Hermes bytecode file, used for approximating the original JavaScript source |
CRegisterTracker | Represents the registers of a function, and keeps track of the operations being performed on them |
▼NLSP | |
CLSPServer | Implements the LSP methods |
CProgram | |
CTee | |
CConsoleProgressBar | Taken from https://gist.github.com/DanielSWolf/0ab6a96899cc5377bf54 |
CHbcAbstractInstructionDefinition | Represents the abstract form of variant instructions. Variant instructions are instructions which perform the same action, but can have differently sized operands. By abstracting these instructions to all have one name, the assembler can optimize the size of the operands. Thus, programmers do not have to figure out the proper sizes when they write Hasm code.
Passing the "--exact" flag to the hasmer disassmbler will ignore abstract definitions, and instead emit the exact instruction |
CHbcBytecodeFormat | Represents a definition of the bytecode operations for a given Hermes version.
This is generally used by deserializing a JSON object, specifically the "Bytecode*.json" file in the Resources directory that corresponds to the desired Hermes version.
The "Bytecode*.json" themselves are autogenerated using the "bytecode-format-generator" tool, which is located in a directory at the root of this git repository |
CHbcCjsModuleTableEntry | |
CHbcDataBufferPrefix | Represents the header of an array in the data buffer |
CHbcDataBufferItems | Represents an entry in the data buffer (data type and subsequent items) |
CHbcDataBuffer | Represents a Hermes data buffer, such as the array buffer |
CHbcEncodedItem | Represents an item whose parsing format is defined in JSON, whose value corresponds to a series of data in a Hermes bytecode file |
CHbcFile | Represents a parsed Hermes bytecode file |
CHbcFuncHeader | Represents a function header definition in a Hermes bytecode file |
CHbcGenericTableEntry | |
CHbcHeader | Represents the header of a Hermes bytecode file |
CHbcInstruction | Represents an instruction in Hermes bytecode |
CHbcInstructionDefinition | Represents the definition of an instruction in a JSON bytecode definitions file |
CHbcInstructionOperand | Represents an operand of Hermes bytecode instruction |
CHbcOverflowStringTableEntry | Represents a string that was too large to be in the normal string table |
CHbcReader | Represents a BinaryReader that can also read individual bits |
CHbcSmallFuncHeader | Represents a SmallFuncHeader, which is just a FuncHeader but also includes a pointer to the full function. This is the default function information implementation in bytecode files, but if the function's contents (i.e. bytecode, register count, etc) cannot be included within the bounds of a SmallFuncHeader, this object includes a pointer to the full header as well |
CHbcSmallStringTableEntry | Represents a string in the string raw buffer. Used for creating the string table |
CHbcWriter | Represents a BinaryWriter which can write individual bits |
CJenkinsHash | |
CObjectDumper | |
CPrimitiveValue | A wrapper type for any other given type, which keeps track of the original type that was passed. This is used to ensure that primitive types can maintain their original type when cast from object to their type. By just using object, all primitive values are coerced into a double, which is undesirable |
CResourceManager | Utility for working with embedded resources |
CSourceCodeBuilder | Represents source code. Used for maintaining indentation and other source code syntax |
CStringEscape | Utility for working with string escape codes |
CStringKindEntry | |
CStringTableEntry | |