hasmer
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 123]
 CHasmer.CLI.Program.AssembleOptions
 CAttribute
 CBinaryReader
 CBinaryWriter
 CHasmer.Decompiler.Visitor.BooleanOperationsVisits instructions that perform boolean operations
 CHasmer.Decompiler.Analysis.ControlFlowBlockRepresents 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
 CHasmer.Decompiler.Analysis.ControlFlowGraphRepresents the control flow of a function as a graph
 CHasmer.Decompiler.Visitor.CreationOperationsVisits operations that create new objects/arrays/etc
 CHasmer.Assembler.Visitor.DataAssemblerAssembles the declared data tokens (i.e. ".data") for creating the array value and object key/value buffers
 CHasmer.Assembler.DataDisassemblerUsed for diassembling the data section of a Hermes bytecode file
 CHasmer.CLI.Program.DecodeOptions
 CHasmer.Decompiler.DecompilerContextRepresents the context of a function as it is being decompiled
 CHasmer.Decompiler.DecompilerOptionsRepresents the options to be used when decompiling
 CHasmer.Assembler.DisassemblerOptionsRepresents the options to be used when disassembling
 CHasmer.Decompiler.Visitor.EnvironmentOperationsVisitors for instructions that deal with function environments
 CException
 CHasmer.Decompiler.Visitor.FieldOperationsVisits instructions that gets/sets fields in an object
 CHasmer.Assembler.Visitor.FunctionAssemblerAssembles Hasm functions
 CHasmer.Decompiler.FunctionDecompilerRepresents a decompiler for an entire function
 CHasmer.Assembler.FunctionDisassemblerDisassembles a function from Hermes bytecode into Hasm assembly
 CHasmer.Decompiler.Visitor.FunctionOperationsVisits instructions that depend on / change the flow of the function; i.e. loading parameters, returning values, etc
 CHasmer.Decompiler.FunctionStateRepresents the state of a function as it is decompiled
 CHasmer.Assembler.Visitor.HasmAssemblerDataBufferRepresents a data buffer as it is declared in a Hasm file
 CHasmer.Assembler.Parser.HasmDataDeclarationRepresents a ".data" declaration
 CHasmer.Assembler.Parser.HasmHeaderRepresents a ".hasm" header declaration
 CHasmer.Assembler.Parser.HasmProgram
 CHasmer.Assembler.Parser.HasmReaderStateRepresents the state of a Hasm reader, especially a HasmTokenStream
 CHasmer.Assembler.Parser.HasmStringStreamRepresents a stream that parses a Hasm assembly file
 CHasmer.Assembler.Parser.HasmStringStreamState
 CHasmer.Assembler.Parser.HasmTokenRepresents a token in a Hasm assembly file
 CHasmer.Assembler.Parser.HasmTokenizer
 CHasmer.HbcAbstractInstructionDefinitionRepresents 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
 CHasmer.Assembler.HbcAssemblerRepresents a Hasm assembler, which assembles into Hermes bytecode
 CHasmer.HbcBytecodeFormatRepresents 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
 CHasmer.HbcDataBufferRepresents a Hermes data buffer, such as the array buffer
 CHasmer.HbcDataBufferItemsRepresents an entry in the data buffer (data type and subsequent items)
 CHasmer.HbcDataBufferPrefixRepresents the header of an array in the data buffer
 CHasmer.Decompiler.HbcDecompilerRepresents a decompiler of a Hermes bytecode file, used for approximating the original JavaScript source
 CHasmer.Assembler.HbcDisassemblerRepresents a Hermes bytecode disassembler
 CHasmer.HbcEncodedItemRepresents an item whose parsing format is defined in JSON, whose value corresponds to a series of data in a Hermes bytecode file
 CHasmer.HbcFileRepresents a parsed Hermes bytecode file
 CHasmer.Assembler.Visitor.HbcFunctionBuilderRepresents a function being built by the assembler
 CHasmer.HbcInstructionRepresents an instruction in Hermes bytecode
 CHasmer.HbcInstructionDefinitionRepresents the definition of an instruction in a JSON bytecode definitions file
 CHasmer.HbcInstructionOperandRepresents an operand of Hermes bytecode instruction
 CIDisposable
 CHasmer.Assembler.Parser.IHasmTokenParserRepresents a class which can parse Hasm tokens from a Hasm file
 CHasmer.Decompiler.Analysis.InstructionAnalyzer
 CHasmer.Decompiler.Visitor.InvokeOperationsVisits instructions that invoke functions, methods, and constructors
 CIProgress
 CHasmer.JenkinsHash
 CHasmer.Decompiler.Visitor.JumpOperationsVisits instructions that perform jump based on given citeria
 CHasmer.Decompiler.Visitor.LoadConstantOperationsVisitors for instructions that load constant values
 CHasmer.LSP.LSPServerImplements the LSP methods
 CHasmer.Decompiler.Visitor.MathOperationsVisits instructions that perform mathematical operations (e.g. addition, subtraction, etc.)
 CHasmer.ObjectDumper
 CHasmer.PrimitiveValueA 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
 CHasmer.CLI.Program
 CHasmer.LSP.Program
 CHasmer.Decompiler.RegisterTrackerRepresents the registers of a function, and keeps track of the operations being performed on them
 CHasmer.ResourceManagerUtility for working with embedded resources
 CHasmer.SourceCodeBuilderRepresents source code. Used for maintaining indentation and other source code syntax
 CHasmer.Decompiler.Analysis.StaticAnalyzerThe base class for performing static analysis on a decmopiled AST. This allows for optimizing the AST to make it as readable as possible
 CHasmer.Decompiler.Analysis.StaticAnalyzerState
 CStream
 CHasmer.StringEscapeUtility for working with string escape codes
 CHasmer.StringKindEntry
 CHasmer.StringTableEntry
 CHasmer.Decompiler.AST.SyntaxNodeRepresents a token in the JavaScript syntax tree
 CHasmer.Assembler.Parser.TokenDefinition
 CHasmer.Assembler.Parser.TokenizerResult
 CHasmer.Assembler.Parser.TokenizerState
 CHasmer.Assembler.Parser.TokenMatch
 CHasmer.Decompiler.Visitor.UnaryOperationsVisits instructions whose decompiled AST is a UnaryExpression, such as TypeOf