Frida Docs Unified
    Preparing search index...

    Interface StalkerArm64Iterator

    Generates machine code for arm64.

    interface StalkerArm64Iterator {
        base: NativePointer;
        canBranchDirectlyBetween(
            from: NativePointerValue,
            to: NativePointerValue,
        ): boolean;
        code: NativePointer;
        dispose(): void;
        flush(): void;
        keep(): void;
        memoryAccess: MemoryAccess;
        next(): Arm64Instruction;
        offset: number;
        pc: NativePointer;
        putAddRegRegImm(
            dstReg: Arm64Register,
            leftReg: Arm64Register,
            rightValue: number | Int64 | UInt64,
        ): void;
        putAddRegRegReg(
            dstReg: Arm64Register,
            leftReg: Arm64Register,
            rightReg: Arm64Register,
        ): void;
        putAdrpRegAddress(reg: Arm64Register, address: NativePointerValue): void;
        putAndRegRegImm(
            dstReg: Arm64Register,
            leftReg: Arm64Register,
            rightValue: number | UInt64,
        ): void;
        putBCondLabel(cc: Arm64ConditionCode, labelId: string): void;
        putBImm(address: NativePointerValue): void;
        putBLabel(labelId: string): void;
        putBlImm(address: NativePointerValue): void;
        putBlLabel(labelId: string): void;
        putBlrReg(reg: Arm64Register): void;
        putBlrRegNoAuth(reg: Arm64Register): void;
        putBranchAddress(address: NativePointerValue): void;
        putBrkImm(imm: number): void;
        putBrReg(reg: Arm64Register): void;
        putBrRegNoAuth(reg: Arm64Register): void;
        putBytes(data: string | ArrayBuffer | number[]): void;
        putCallAddressWithArguments(
            func: NativePointerValue,
            args: Arm64CallArgument[],
        ): void;
        putCallout(callout: StalkerCallout, data?: NativePointerValue): void;
        putCallRegWithArguments(
            reg: Arm64Register,
            args: Arm64CallArgument[],
        ): void;
        putCbnzRegImm(reg: Arm64Register, target: NativePointerValue): void;
        putCbnzRegLabel(reg: Arm64Register, labelId: string): void;
        putCbzRegImm(reg: Arm64Register, target: NativePointerValue): void;
        putCbzRegLabel(reg: Arm64Register, labelId: string): void;
        putChainingReturn(): void;
        putCmpRegReg(regA: Arm64Register, regB: Arm64Register): void;
        putEorRegRegReg(
            dstReg: Arm64Register,
            leftReg: Arm64Register,
            rightReg: Arm64Register,
        ): void;
        putInstruction(insn: number): void;
        putLabel(id: string): void;
        putLdpRegRegRegOffset(
            regA: Arm64Register,
            regB: Arm64Register,
            regSrc: Arm64Register,
            srcOffset: number | Int64 | UInt64,
            mode: Arm64IndexMode,
        ): void;
        putLdrRegAddress(reg: Arm64Register, address: NativePointerValue): void;
        putLdrRegRef(reg: Arm64Register): number;
        putLdrRegReg(dstReg: Arm64Register, srcReg: Arm64Register): void;
        putLdrRegRegOffset(
            dstReg: Arm64Register,
            srcReg: Arm64Register,
            srcOffset: number | Int64 | UInt64,
        ): void;
        putLdrRegRegOffsetMode(
            dstReg: Arm64Register,
            srcReg: Arm64Register,
            srcOffset: number | Int64 | UInt64,
            mode: Arm64IndexMode,
        ): void;
        putLdrRegU32(reg: Arm64Register, val: number): void;
        putLdrRegU32Ptr(reg: Arm64Register, srcAddress: NativePointerValue): void;
        putLdrRegU64(reg: Arm64Register, val: number | UInt64): void;
        putLdrRegU64Ptr(reg: Arm64Register, srcAddress: NativePointerValue): void;
        putLdrRegValue(ref: number, value: NativePointerValue): void;
        putLdrswRegRegOffset(
            dstReg: Arm64Register,
            srcReg: Arm64Register,
            srcOffset: number | Int64 | UInt64,
        ): void;
        putLslRegImm(
            dstReg: Arm64Register,
            srcReg: Arm64Register,
            shift: number,
        ): void;
        putLsrRegImm(
            dstReg: Arm64Register,
            srcReg: Arm64Register,
            shift: number,
        ): void;
        putMovNzcvReg(reg: Arm64Register): void;
        putMovRegNzcv(reg: Arm64Register): void;
        putMovRegReg(dstReg: Arm64Register, srcReg: Arm64Register): void;
        putMrs(dstReg: Arm64Register, systemReg: number): void;
        putNop(): void;
        putPopAllQRegisters(): void;
        putPopAllXRegisters(): void;
        putPopRegReg(regA: Arm64Register, regB: Arm64Register): void;
        putPushAllQRegisters(): void;
        putPushAllXRegisters(): void;
        putPushRegReg(regA: Arm64Register, regB: Arm64Register): void;
        putRet(): void;
        putRetReg(reg: Arm64Register): void;
        putStpRegRegRegOffset(
            regA: Arm64Register,
            regB: Arm64Register,
            regDst: Arm64Register,
            dstOffset: number | Int64 | UInt64,
            mode: Arm64IndexMode,
        ): void;
        putStrRegReg(srcReg: Arm64Register, dstReg: Arm64Register): void;
        putStrRegRegOffset(
            srcReg: Arm64Register,
            dstReg: Arm64Register,
            dstOffset: number | Int64 | UInt64,
        ): void;
        putStrRegRegOffsetMode(
            srcReg: Arm64Register,
            dstReg: Arm64Register,
            dstOffset: number | Int64 | UInt64,
            mode: Arm64IndexMode,
        ): void;
        putSubRegRegImm(
            dstReg: Arm64Register,
            leftReg: Arm64Register,
            rightValue: number | Int64 | UInt64,
        ): void;
        putSubRegRegReg(
            dstReg: Arm64Register,
            leftReg: Arm64Register,
            rightReg: Arm64Register,
        ): void;
        putTbnzRegImmImm(
            reg: Arm64Register,
            bit: number,
            target: NativePointerValue,
        ): void;
        putTbnzRegImmLabel(reg: Arm64Register, bit: number, labelId: string): void;
        putTbzRegImmImm(
            reg: Arm64Register,
            bit: number,
            target: NativePointerValue,
        ): void;
        putTbzRegImmLabel(reg: Arm64Register, bit: number, labelId: string): void;
        putTstRegImm(reg: Arm64Register, immValue: number | UInt64): void;
        putUbfm(
            dstReg: Arm64Register,
            srcReg: Arm64Register,
            imms: number,
            immr: number,
        ): void;
        putUxtwRegReg(dstReg: Arm64Register, srcReg: Arm64Register): void;
        putXpaciReg(reg: Arm64Register): void;
        reset(codeAddress: NativePointerValue, options?: Arm64WriterOptions): void;
        sign(value: NativePointerValue): NativePointer;
        skip(nBytes: number): void;
    }

    Hierarchy (View Summary)

    Index

    Properties

    Memory location of the first byte of output.

    Memory location of the next byte of output.

    memoryAccess: MemoryAccess
    offset: number

    Current offset in bytes.

    Program counter at the next byte of output.

    Methods

    • 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.

      Returns void

    • Returns void

    • Puts a B instruction referencing labelId, defined by a past or future putLabel().

      Parameters

      • labelId: string

      Returns void

    • Puts a BL instruction referencing labelId, defined by a past or future putLabel().

      Parameters

      • labelId: string

      Returns void

    • Puts a BRK instruction.

      Parameters

      • imm: number

      Returns void

    • Returns void

    • Puts a raw instruction.

      Parameters

      • insn: number

      Returns void

    • Puts a label at the current position, where id is an identifier that may be referenced in past and future put*Label() calls.

      Parameters

      • id: string

      Returns void

    • Puts an LDR instruction with a dangling data reference, returning an opaque ref value that should be passed to putLdrRegValue() at the desired location.

      Parameters

      Returns number

    • Skips nBytes.

      Parameters

      • nBytes: number

      Returns void