Creates a new code writer for generating ARM machine code
written directly to memory at codeAddress.
Memory address to write generated code to.
Optionaloptions: ThumbWriterOptionsOptions for customizing code generation.
Memory location of the first byte of output.
Memory location of the next byte of output.
Current offset in bytes.
Program counter at the next byte of output.
Determines whether a direct branch is possible between the two given memory locations.
Commits the first pending reference to the given label, returning
true on success. Returns false if the given label hasn't been
defined yet, or there are no more pending references to it.
Eagerly cleans up memory.
Resolves label references and writes pending data to memory. You should always call this once you've finished generating code. It is usually also desirable to do this between pieces of unrelated code, e.g. when generating multiple functions in one go.
Puts an ADD instruction.
Puts an ADD instruction.
Puts an AND instruction.
Puts a B COND instruction referencing labelId, defined by a past
or future putLabel().
Puts a BEQ instruction referencing labelId, defined by a past
or future putLabel().
Puts a BKPT instruction.
Puts a B instruction referencing labelId, defined by a past
or future putLabel().
Puts a B WIDE instruction.
Puts a BL instruction referencing labelId, defined by a past
or future putLabel().
Puts a BNE instruction referencing labelId, defined by a past
or future putLabel().
Puts code needed for branching/jumping to the given address.
Puts an OS/architecture-specific breakpoint instruction.
Puts code needed for calling a C function with the specified args.
Puts code needed for calling a C function with the specified args.
Puts a CBNZ instruction referencing labelId, defined by a past
or future putLabel().
Puts a CBZ instruction referencing labelId, defined by a past
or future putLabel().
Puts a raw instruction.
Puts a raw Thumb-2 instruction.
Puts a label at the current position, where id is an identifier
that may be referenced in past and future put*Label() calls.
Puts an LDR instruction.
Puts a LSL instruction.
Puts a LSLS instruction.
Puts a LSRS instruction.
Puts a NOP instruction.
Puts an OR instruction.
Puts a STR instruction.
Puts a SUB instruction.
Puts a SUB instruction.
Puts a VLDR instruction.
Recycles instance.
Optionaloptions: ThumbWriterOptionsSkips nBytes.
Generates machine code for arm.