hasmer
Namespaces | Classes | Enumerations
Hasmer Namespace Reference

Classes

class  ConsoleProgressBar
 Taken from https://gist.github.com/DanielSWolf/0ab6a96899cc5377bf54 More...
 
class  HbcAbstractInstructionDefinition
 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. More...
 
class  HbcBytecodeFormat
 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. More...
 
class  HbcCjsModuleTableEntry
 
class  HbcDataBufferPrefix
 Represents the header of an array in the data buffer. More...
 
class  HbcDataBufferItems
 Represents an entry in the data buffer (data type and subsequent items). More...
 
class  HbcDataBuffer
 Represents a Hermes data buffer, such as the array buffer. More...
 
class  HbcEncodedItem
 Represents an item whose parsing format is defined in JSON, whose value corresponds to a series of data in a Hermes bytecode file. More...
 
class  HbcFile
 Represents a parsed Hermes bytecode file. More...
 
class  HbcFuncHeader
 Represents a function header definition in a Hermes bytecode file. More...
 
class  HbcGenericTableEntry
 
class  HbcHeader
 Represents the header of a Hermes bytecode file. More...
 
class  HbcInstruction
 Represents an instruction in Hermes bytecode. More...
 
class  HbcInstructionDefinition
 Represents the definition of an instruction in a JSON bytecode definitions file. More...
 
class  HbcInstructionOperand
 Represents an operand of Hermes bytecode instruction. More...
 
class  HbcInstructionOperandTypeImpl
 
class  HbcOverflowStringTableEntry
 Represents a string that was too large to be in the normal string table. More...
 
class  HbcReader
 Represents a BinaryReader that can also read individual bits. More...
 
class  HbcSmallFuncHeader
 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. More...
 
class  HbcSmallStringTableEntry
 Represents a string in the string raw buffer. Used for creating the string table. More...
 
class  HbcWriter
 Represents a BinaryWriter which can write individual bits. More...
 
class  JenkinsHash
 
class  ObjectDumper
 
class  PrimitiveValue
 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. More...
 
class  ResourceManager
 Utility for working with embedded resources. More...
 
class  SourceCodeBuilder
 Represents source code. Used for maintaining indentation and other source code syntax. More...
 
class  StringEscape
 Utility for working with string escape codes. More...
 
struct  StringKindEntry
 
class  StringTableEntry
 

Enumerations

enum class  HbcDataBufferTagType {
  Null = 0 , True = 1 << 4 , False = 2 << 4 , Number = 3 << 4 ,
  LongString = 4 << 4 , ShortString = 5 << 4 , ByteString = 6 << 4 , Integer = 7 << 4
}
 Represents the type of a series of data in the DataBuffer. More...
 
enum class  HbcFuncHeaderFlags : byte {
  ProhibitCall = 0x00 , ProhibitConstruct = 0x01 , ProhibitNone = 0x02 , StrictMode = 0x04 ,
  HasExceptionHandler = 0x08 , HasDebugInfo = 0x10 , Overflowed = 0x20
}
 The flags a function can have. Note that the Prohibit* flags cannot be used in conjunction with Enum.HasFlag because ProhibitCall is 0. More...
 
enum class  HbcBytecodeOptions : byte { StaticBuiltins = 0x1 , CjsModulesStaticallyResolved = 0x2 , HasAsync = 0x4 }
 The global options of the bytecode file, which are used by the Hermes runtime. More...
 
enum class  HbcInstructionOperandType {
  Reg8 , Reg32 , UInt8 , UInt16 ,
  UInt32 , Addr8 , Addr32 , Imm32 ,
  Double , UInt8S , UInt16S , UInt32S
}
 Represents the type of an operand. More...
 
enum class  StringKind { Literal = 0 << StringKindEntry.CountBits , Identifier = 1 << StringKindEntry.CountBits }
 Used for determining whether a string is an identifier or a string literal. More...
 

Enumeration Type Documentation

◆ HbcBytecodeOptions

enum Hasmer.HbcBytecodeOptions : byte
strong

The global options of the bytecode file, which are used by the Hermes runtime.

◆ HbcDataBufferTagType

Represents the type of a series of data in the DataBuffer.

◆ HbcFuncHeaderFlags

enum Hasmer.HbcFuncHeaderFlags : byte
strong

The flags a function can have. Note that the Prohibit* flags cannot be used in conjunction with Enum.HasFlag because ProhibitCall is 0.

◆ HbcInstructionOperandType

Represents the type of an operand.

Enumerator
Reg8 

The operand is a one-byte register reference.

Reg32 

The operand is a four-byte register reference.

UInt8 

The operand is an unsigned byte.

UInt16 

The operand is an unsigned two-byte integer.

UInt32 

The operand is an unsigned four-byte integer.

Addr8 

The operand is a one-byte code address reference.

Addr32 

The operand is a four-byte code address reference.

Imm32 

The operand is a four-byte unsigned integer.

Double 

The operand is an eight-byte IEEE754 floating-point value.

UInt8S 

The operand is a one-byte reference to the string table.

UInt16S 

The operand is a two-byte reference to the string table.

UInt32S 

The operand is a four-byte reference to the string table.

◆ StringKind

enum Hasmer.StringKind
strong

Used for determining whether a string is an identifier or a string literal.

Enumerator
Literal 

The string is a string literal, e.g. a string in quotes: var s = "Hello, World!". "Hello, World!" would be encoded as a string literal, i.e. this flag.

Identifier 

The string is an identifier, e.g. the name of a function.