public abstract class AArch64Assembler extends Assembler
| Modifier and Type | Class and Description |
|---|---|
static class |
AArch64Assembler.BarrierKind
Barrier definitions for AArch64.
|
static class |
AArch64Assembler.ConditionFlag
Condition Flags for branches.
|
static class |
AArch64Assembler.DataCacheOperationType |
static class |
AArch64Assembler.ExtendType |
static class |
AArch64Assembler.Instruction
Encoding for all base and floating-point instructions.
|
protected static class |
AArch64Assembler.InstructionType
Enumeration of all different instruction kinds: General32/64 are the general instructions
(integer, branch, etc.), for 32-, respectively 64-bit operands.
|
static class |
AArch64Assembler.LogicalBitmaskImmediateEncoding |
static class |
AArch64Assembler.PatchableCodeAnnotation |
static class |
AArch64Assembler.PatcherUtil
Contains methods for patching instructions within AArch64.
|
static class |
AArch64Assembler.PrefetchMode |
static class |
AArch64Assembler.ShiftType |
static class |
AArch64Assembler.SingleInstructionAnnotation |
static class |
AArch64Assembler.SystemHint |
static class |
AArch64Assembler.SystemRegister |
Assembler.CodeAnnotation, Assembler.InstructionCounter, Assembler.LabelHint| Modifier and Type | Field and Description |
|---|---|
protected static int |
LoadFlag |
codePatchingAnnotationConsumer| Constructor and Description |
|---|
AArch64Assembler(TargetDescription target) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
add(int size,
Register dst,
Register src,
int aimm)
C6.2.4 Add (Immediate).
|
void |
add(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ExtendType extendType,
int shiftAmt)
C6.2.3 Add (extended register).
|
protected void |
add(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int imm)
C6.2.5 Add (shifted register).
|
protected void |
adds(int size,
Register dst,
Register src,
int aimm)
C6.2.8 Add (Immediate) & set flags.
|
protected void |
adds(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ExtendType extendType,
int shiftAmt)
C6.2.7 Add (extended register) & set flags.
|
void |
adds(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int imm)
C6.2.9 Add (shift registers) set flags.
|
void |
adr(Register dst,
int imm21)
C6.2.10 PC-relative address.
|
void |
adr(Register dst,
int imm21,
int pos)
C6.2.10 PC-relative address.
|
void |
adrp(Register dst)
C6.2.11 PC-relative address to 4KB page.
|
void |
and(int size,
Register dst,
Register src,
long bimm)
C6.2.12 Bitwise AND (immediate).
|
void |
and(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
C6.2.13 Bitwise AND (shifted register).
|
void |
ands(int size,
Register dst,
Register src,
long bimm)
6.2.14 Bitwise AND (immediate) & set flags.
|
protected void |
ands(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
C6.2.15 Bitwise AND (shifted register) & set flags.
|
void |
annotatePatchingImmediate(int pos,
AArch64Assembler.Instruction instruction,
int operandSizeBits,
int offsetBits,
int shift) |
void |
asr(int size,
Register dst,
Register src1,
Register src2)
C6.2.16 Arithmetic Shift Right (register).
|
protected void |
b() |
protected void |
b(AArch64Assembler.ConditionFlag condition,
int imm21)
C6.2.25 Branch conditionally.
|
protected void |
b(AArch64Assembler.ConditionFlag condition,
int imm21,
int pos)
C6.2.25 Branch conditionally.
|
protected void |
b(int imm28)
C6.2.26 Unconditional Branch (immediate).
|
protected void |
b(int imm28,
int pos)
C6.2.26 Unconditional Branch (immediate).
|
void |
bfm(int size,
Register dst,
Register src,
int r,
int s)
C6.2.29 Bitfield move.
|
void |
bic(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
C6.2.31 Bitwise Bit Clear (shifted register).
|
protected void |
bics(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
C6.2.32 Bitwise Bit Clear (shifted register) & set flags.
|
void |
bl()
C6.2.33 Branch and link return address to register X30.
|
void |
blr(Register reg)
C6.2.34 Branches to address in register and writes return address into register X30.
|
protected void |
br(Register reg)
C6.2.36 Branches to address in register.
|
protected void |
brk(int uimm16)
C6.2.38 Breakpoint instruction.
|
void |
cas(int size,
Register rs,
Register rt,
Register rn,
boolean acquire,
boolean release)
Compare And Swap word or doubleword in memory.
|
protected void |
cbnz(int size,
Register reg,
int imm21)
C6.2.44 Compare register and branch if non-zero.
|
protected void |
cbnz(int size,
Register reg,
int imm21,
int pos)
C6.2.44 Compare register and branch if non-zero.
|
protected void |
cbz(int size,
Register reg,
int imm21)
C6.2.45 Compare and branch if zero.
|
protected void |
cbz(int size,
Register reg,
int imm21,
int pos)
C6.2.45 Compare register and branch if zero.
|
void |
ccmp(int size,
Register x,
Register y,
int aimm,
AArch64Assembler.ConditionFlag condition)
C6.2.48 Conditional Compare (register).
|
protected void |
clrex()
C6.2.54 Clear Exclusive.
|
protected void |
cls(int size,
Register dst,
Register src)
C6.2.55 Count Leading Sign bits.
|
void |
clz(int size,
Register dst,
Register src)
C6.2.55 Count Leading Zeros.
|
void |
csel(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ConditionFlag condition)
C6.2.69 Conditional select.
|
protected void |
csinc(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ConditionFlag condition)
C6.2.72 Conditional increase.
|
void |
csneg(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ConditionFlag condition)
C6.2.74 Conditional select negate.
|
void |
dc(AArch64Assembler.DataCacheOperationType type,
Register src)
C6.2.75 Data Cache operation.
|
void |
dmb(AArch64Assembler.BarrierKind barrierKind)
C6.2.80 Data Memory Barrier.
|
void |
dsb(AArch64Assembler.BarrierKind barrierKind)
C6.2.82 Data Synchronization Barrier.
|
void |
eon(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
C6.2.84 Bitwise Exclusive OR NOT (shifted register).
|
void |
eor(int size,
Register dst,
Register src,
long bimm)
C6.2.85 Bitwise Exclusive OR (immediate).
|
void |
eor(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
C6.2.86 Bitwise Exclusive OR (shifted register).
|
protected void |
extr(int size,
Register dst,
Register src1,
Register src2,
int lsb)
C6.2.90 Extract register.
|
void |
fabs(int size,
Register dst,
Register src)
C7.2.46 Floating-point Absolute value (scalar).
|
void |
fadd(int size,
Register dst,
Register src1,
Register src2)
C7.2.50 Floating-point Add (scalar).
|
void |
fccmp(int size,
Register src1,
Register src2,
int uimm4,
AArch64Assembler.ConditionFlag condition)
C7.2.54 Floating-point Conditional quiet Compare (scalar).
|
void |
fcmp(int size,
Register src1,
Register src2)
C7.2.66 Floating-point quiet Compare (scalar, register).
|
void |
fcmpe(int size,
Register src1,
Register src2)
C7.2.67 Floating-point signaling Compare (scalar).
|
void |
fcmpeZero(int size,
Register src)
C7.2.67 Floating-point signaling Compare Equal (scalar, zero variant).
|
void |
fcmpZero(int size,
Register src)
C7.2.66 Floating-point quiet Compare Equal (scalar, zero variant).
|
void |
fcsel(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ConditionFlag condition)
C7.2.68 Floating-point Conditional Select (scalar).
|
void |
fcvt(int dstSize,
int srcSize,
Register dst,
Register src)
C7.2.69 Convert float to double and vice-versa.
|
void |
fcvtzs(int dstSize,
int srcSize,
Register dst,
Register src)
C7.2.92 Floating-point Convert to Signed integer, rounding toward Zero.
|
void |
fdiv(int size,
Register dst,
Register src1,
Register src2)
C7.2.98 Floating-point Divide (scalar)
dst = src1 / src2.
|
void |
fldp(int size,
Register rt,
Register rt2,
AArch64Address address)
Load Pair of Registers calculates an address from a base register value and an immediate
offset, and stores two single, double, or quad words to the calculated address, from two
registers.
|
void |
fldr(int size,
Register rt,
AArch64Address address)
Floating point load.
|
void |
fmadd(int size,
Register dst,
Register src1,
Register src2,
Register src3)
C7.2.100 Floating-point fused Multiply-Add (scalar).
|
void |
fmax(int size,
Register dst,
Register src1,
Register src2)
C7.2.102 Floating-point Maximum (scalar).
|
void |
fmin(int size,
Register dst,
Register src1,
Register src2)
C7.2.112 Floating-point Minimum (scalar).
|
protected void |
fmov(int size,
Register dst,
double imm)
C7.2.132 Floating-point move immediate (scalar)
Move immediate into floating-point register.
|
protected void |
fmovCpu2Fpu(int size,
Register dst,
Register src)
C7.2.131 Floating-point Move from general-purpose register.
|
protected void |
fmovFpu2Cpu(int size,
Register dst,
Register src)
C7.2.131 Floating-point Move to general-purpose register.
|
protected void |
fmovFpu2Fpu(int size,
Register dst,
Register src)
C7.2.130 Floating point move.
|
protected void |
fmsub(int size,
Register dst,
Register src1,
Register src2,
Register src3)
C7.2.133 Floating-point Fused Multiply-Subtract (scalar).
|
void |
fmul(int size,
Register dst,
Register src1,
Register src2)
C7.2.136 Floating-point Multiply (scalar).
|
void |
fneg(int size,
Register dst,
Register src)
C7.2.140 Floating-point Negate (scalar).
|
void |
frintm(int size,
Register dst,
Register src)
C7.2.160 Floating-point Round to Integral, toward Minus infinity (scalar).
|
void |
frintn(int size,
Register dst,
Register src)
C7.2.162 Floating-point Round to Integral, to nearest with ties to even (scalar).
|
void |
frintp(int size,
Register dst,
Register src)
C7.2.164 Floatin-point Round to Integral, toward Plug infinity (scalar).
|
void |
frintz(int size,
Register dst,
Register src)
C7.2.168 Floating-point Round to Integral, toward Zero (scalar).
|
void |
fsqrt(int size,
Register dst,
Register src)
C7.2.172 Floating-point Square Root (scalar).
|
void |
fstp(int size,
Register rt,
Register rt2,
AArch64Address address)
Store Pair of Registers calculates an address from a base register value and an immediate
offset, and stores two single, double, or quad words to the calculated address, from two
registers.
|
void |
fstr(int size,
Register rt,
AArch64Address address)
Floating point store.
|
void |
fsub(int size,
Register dst,
Register src1,
Register src2)
C7.2.174 Floating-point Subtract (scalar).
|
EnumSet<CPUFeature> |
getFeatures() |
EnumSet<Flag> |
getFlags() |
static int |
getLog2TransferSize(int bitMemoryTransferSize)
Returns the log2 size of the number of bytes expected to be transferred.
|
protected void |
hint(AArch64Assembler.SystemHint hint)
C6.2.92 Hint instruction.
|
protected void |
hlt(int uimm16)
C6.2.93 Halt instruction.
|
protected void |
insertLdpStp(int position,
int size,
AArch64Assembler.Instruction instr,
boolean isFP,
Register rt,
Register rt2,
AArch64Address address)
Insert ldp/stp at the specified position.
|
static boolean |
isAddSubtractImmediate(long imm,
boolean useAbs)
Checks whether immediate can be encoded as an add/subtract immediate.
|
void |
isb()
C6.2.97 Instruction Synchronization Barrier.
|
protected static boolean |
isDoubleImmediate(double imm) |
boolean |
isFlagSet(Flag flag) |
protected static boolean |
isFloatImmediate(float imm) |
void |
ldadd(int size,
Register rs,
Register rt,
Register rn,
boolean acquire,
boolean release)
Atomic add.
|
void |
ldar(int size,
Register rt,
Register rn)
Load acquire.
|
protected void |
ldaxr(int size,
Register rt,
Register rn)
Load acquire exclusive.
|
void |
ldp(int size,
Register rt,
Register rt2,
AArch64Address address)
C6.2.130 Load Pair of Registers calculates an address from a base register value and an
immediate offset, and stores two 32-bit words or two 64-bit doublewords to the calculated
address, from two registers.
|
void |
ldr(int srcSize,
Register rt,
AArch64Address address)
Loads a srcSize value from address into rt zero-extending it.
|
protected void |
ldrHelper(int srcSize,
Register rt,
AArch64Address address,
boolean allowZeroReg) |
protected void |
ldrs(int targetSize,
int srcSize,
Register rt,
AArch64Address address)
Loads a srcSize value from address into rt sign-extending it.
|
protected void |
ldxr(int size,
Register rt,
Register rn)
Load address exclusive.
|
void |
lsl(int size,
Register dst,
Register src1,
Register src2)
C6.2.178 Logical Shift Left (register).
|
void |
lsr(int size,
Register dst,
Register src1,
Register src2)
C6.2.181 Logical Shift Right (register).
|
void |
madd(int size,
Register dst,
Register src1,
Register src2,
Register src3)
C6.2.184 Multiply-Add.
|
protected void |
movk(int size,
Register dst,
int uimm16,
int pos)
C6.2.191 Move wide with keep.
|
protected void |
movn(int size,
Register dst,
int uimm16,
int shiftAmt)
C6.2.192 Move wide with NOT.
|
protected void |
movz(int size,
Register dst,
int uimm16,
int shiftAmt)
C6.2.193 Move wide with zero.
|
void |
mrs(Register dst,
AArch64Assembler.SystemRegister systemRegister)
C6.2.194 Move System Register
|
void |
msr(AArch64Assembler.SystemRegister systemRegister,
Register src)
C6.2.196 Move general-purpose register to System Register
|
void |
msub(int size,
Register dst,
Register src1,
Register src2,
Register src3)
C6.2.197 Multiply-Subtract.
|
void |
orn(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
C6.2.205 Bitwise OR NOT (shifted register).
|
void |
orr(int size,
Register dst,
Register src,
long bimm)
C6.2.206 Bitwise OR (immediate).
|
void |
orr(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
Bitwise OR (shifted register).
|
void |
prfm(AArch64Address address,
AArch64Assembler.PrefetchMode mode)
Implements a prefetch at a 64-bit aligned address.
|
void |
rbit(int size,
Register dst,
Register src)
C6.2.219 Reverse bits.
|
void |
ret(Register reg)
C6.2.220 Return to address in register.
|
void |
rev(int size,
Register dst,
Register src)
C6.2.222 Reverse bytes.
|
protected void |
rorv(int size,
Register dst,
Register src1,
Register src2)
C6.2.229 Rotate right variable.
|
void |
sbfm(int size,
Register dst,
Register src,
int r,
int s)
C6.2.234 Signed bitfield move.
|
void |
scvtf(int dstSize,
int srcSize,
Register dst,
Register src)
C7.2.236 Signed integer Convert to Floating-point (scalar).
|
void |
sdiv(int size,
Register dst,
Register src1,
Register src2)
C6.2.236 Signed divide.
|
void |
smaddl(Register dst,
Register src1,
Register src2,
Register src3)
C6.2.240 Signed multiply-add long.
|
void |
smsubl(Register dst,
Register src1,
Register src2,
Register src3)
C6.2.243 Signed multiply-sub long.
|
protected void |
smulh(Register dst,
Register src1,
Register src2)
C6.2.244 Signed Multiply High.
|
void |
stlr(int size,
Register rt,
Register rn)
Store-release.
|
protected void |
stlxr(int size,
Register rs,
Register rt,
Register rn)
Store-release exclusive.
|
void |
stp(int size,
Register rt,
Register rt2,
AArch64Address address)
C6.2.277 Store Pair of Registers calculates an address from a base register value and an
immediate offset, and stores two 32-bit words or two 64-bit doublewords to the calculated
address, from two registers.
|
void |
str(int destSize,
Register rt,
AArch64Address address)
Stores register rt into memory pointed by address.
|
protected void |
stxr(int size,
Register rs,
Register rt,
Register rn)
Store address exclusive.
|
protected void |
sub(int size,
Register dst,
Register src,
int aimm)
C6.2.313 Subtract (Immediate).
|
void |
sub(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ExtendType extendType,
int shiftAmt)
C6.2.312 Subtract (extended register).
|
protected void |
sub(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int imm)
C6.2.314 Subtract (shifted register).
|
protected void |
subs(int size,
Register dst,
Register src,
int aimm)
C6.2.319 Subtract (immediate) & set flags.
|
void |
subs(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ExtendType extendType,
int shiftAmt)
C6.2.318 Subtract (extended register) & set flags.
|
void |
subs(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int imm)
C6.2.320 Subtract (shifted register) & set flags.
|
boolean |
supports(CPUFeature feature) |
void |
swp(int size,
Register rs,
Register rt,
Register rn,
boolean acquire,
boolean release)
Atomic swap.
|
protected void |
tbnz(Register reg,
int uimm6,
int imm16)
C6.2.330 Test a single bit and branch if the bit is nonzero.
|
protected void |
tbnz(Register reg,
int uimm6,
int imm16,
int pos)
C6.2.330 Test a single bit and branch if the bit is nonzero.
|
protected void |
tbz(Register reg,
int uimm6,
int imm16)
C6.2.331 Test a single bit and branch if the bit is zero.
|
protected void |
tbz(Register reg,
int uimm6,
int imm16,
int pos)
C6.2.331 Test a single bit and branch if the bit is zero.
|
void |
ubfm(int size,
Register dst,
Register src,
int r,
int s)
C6.2.337 Unsigned bitfield move.
|
void |
udiv(int size,
Register dst,
Register src1,
Register src2)
C6.2.340 Unsigned divide.
|
protected void |
umaddl(Register dst,
Register src1,
Register src2,
Register src3)
C6.2.341 Unsigned multiply add-long.
|
protected void |
umulh(Register dst,
Register src1,
Register src2)
C6.2.344 Unsigned multiply high.
|
align, bind, close, copy, createLabelName, emitByte, emitByte, emitInt, emitInt, emitLong, emitLong, emitShort, emitShort, emitString, emitString, emitString0, ensureUniquePC, getByte, getInstructionCounter, getInt, getMachineCodeCallDisplacementOffset, getPlaceholder, getReturnAddressSize, getShort, inlineObjects, isTargetMP, jmp, makeAddress, nameOf, patchJumpTarget, position, requestLabelHint, reset, setCodePatchingAnnotationConsumerprotected static final int LoadFlag
public final EnumSet<CPUFeature> getFeatures()
public final EnumSet<Flag> getFlags()
public boolean supports(CPUFeature feature)
public boolean isFlagSet(Flag flag)
protected void b(AArch64Assembler.ConditionFlag condition, int imm21)
condition - may not be null.imm21 - Signed 21-bit offset, has to be word aligned.protected void b(AArch64Assembler.ConditionFlag condition, int imm21, int pos)
condition - may not be null.imm21 - Signed 21-bit offset, has to be word aligned.pos - Position at which instruction is inserted into buffer. -1 means insert at end.protected void cbnz(int size,
Register reg,
int imm21)
reg - general purpose register. May not be null, zero-register or stackpointer.size - Instruction size in bits. Should be either 32 or 64.imm21 - Signed 21-bit offset, has to be word aligned.protected void cbnz(int size,
Register reg,
int imm21,
int pos)
reg - general purpose register. May not be null, zero-register or stackpointer.size - Instruction size in bits. Should be either 32 or 64.imm21 - Signed 21-bit offset, has to be word aligned.pos - Position at which instruction is inserted into buffer. -1 means insert at end.protected void cbz(int size,
Register reg,
int imm21)
reg - general purpose register. May not be null, zero-register or stackpointer.size - Instruction size in bits. Should be either 32 or 64.imm21 - Signed 21-bit offset, has to be word aligned.protected void cbz(int size,
Register reg,
int imm21,
int pos)
reg - general purpose register. May not be null, zero-register or stackpointer.size - Instruction size in bits. Should be either 32 or 64.imm21 - Signed 21-bit offset, has to be word aligned.pos - Position at which instruction is inserted into buffer. -1 means insert at end.protected void tbnz(Register reg,
int uimm6,
int imm16)
reg - general purpose register. May not be null, zero-register or stackpointer.uimm6 - Unsigned 6-bit bit index.imm16 - signed 16 bit offsetprotected void tbz(Register reg,
int uimm6,
int imm16)
reg - general purpose register. May not be null, zero-register or stackpointer.uimm6 - Unsigned 6-bit bit index.imm16 - signed 16 bit offsetprotected void tbnz(Register reg,
int uimm6,
int imm16,
int pos)
reg - general purpose register. May not be null, zero-register or stackpointer.uimm6 - Unsigned 6-bit bit index.imm16 - signed 16 bit offsetpos - Position at which instruction is inserted into buffer. -1 means insert at end.protected void tbz(Register reg,
int uimm6,
int imm16,
int pos)
reg - general purpose register. May not be null, zero-register or stackpointer.uimm6 - Unsigned 6-bit bit index.imm16 - signed 16 bit offsetpos - Position at which instruction is inserted into buffer. -1 means insert at end.protected void b()
protected void b(int imm28)
imm28 - Signed 28-bit offset, has to be word aligned.protected void b(int imm28,
int pos)
imm28 - Signed 28-bit offset, has to be word aligned.pos - Position where instruction is inserted into code buffer.public void bl()
public void blr(Register reg)
reg - general purpose register. May not be null, zero-register or stackpointer.protected void br(Register reg)
reg - general purpose register. May not be null, zero-register or stackpointer.public void ret(Register reg)
reg - general purpose register. May not be null, zero-register or stackpointer.public static int getLog2TransferSize(int bitMemoryTransferSize)
public void ldr(int srcSize,
Register rt,
AArch64Address address)
srcSize - size of memory read in bits. Must be 8, 16, 32 or 64.rt - general purpose register. May not be null or stackpointer.address - all addressing modes allowed. May not be null.protected final void ldrHelper(int srcSize,
Register rt,
AArch64Address address,
boolean allowZeroReg)
protected void ldrs(int targetSize,
int srcSize,
Register rt,
AArch64Address address)
targetSize - size of target register in bits. Must be 32 or 64.srcSize - size of memory read in bits. Must be 8, 16 or 32, but may not be equivalent to
targetSize.rt - general purpose register. May not be null or stackpointer.address - all addressing modes allowed. May not be null.public void prfm(AArch64Address address, AArch64Assembler.PrefetchMode mode)
public void str(int destSize,
Register rt,
AArch64Address address)
destSize - number of bits written to memory. Must be 8, 16, 32 or 64.rt - general purpose register. May not be null or stackpointer.address - all addressing modes allowed. May not be null.protected void insertLdpStp(int position,
int size,
AArch64Assembler.Instruction instr,
boolean isFP,
Register rt,
Register rt2,
AArch64Address address)
public void ldp(int size,
Register rt,
Register rt2,
AArch64Address address)
public void stp(int size,
Register rt,
Register rt2,
AArch64Address address)
protected void ldxr(int size,
Register rt,
Register rn)
size - size of memory read in bits. Must be 8, 16, 32 or 64.rt - general purpose register. May not be null or stackpointer.rn - general purpose register.protected void stxr(int size,
Register rs,
Register rt,
Register rn)
size - size of bits written to memory. Must be 8, 16, 32 or 64.rs - general purpose register. Set to exclusive access status. 0 means success,
everything else failure. May not be null, or stackpointer.rt - general purpose register. May not be null or stackpointer.rn - general purpose register.public void ldar(int size,
Register rt,
Register rn)
size - size of memory read in bits. Must be 8, 16, 32 or 64.rt - general purpose register. May not be null or stackpointer.rn - general purpose register.public void stlr(int size,
Register rt,
Register rn)
size - size of bits written to memory. Must be 8, 16, 32 or 64.rt - general purpose register. May not be null or stackpointer.rn - general purpose register.protected void ldaxr(int size,
Register rt,
Register rn)
size - size of memory read in bits. Must be 8, 16, 32 or 64.rt - general purpose register. May not be null or stackpointer.rn - general purpose register.protected void stlxr(int size,
Register rs,
Register rt,
Register rn)
size - size of bits written to memory. Must be 8, 16, 32 or 64.rs - general purpose register. Set to exclusive access status. 0 means success,
everything else failure. May not be null, or stackpointer.rt - general purpose register. May not be null or stackpointer.rn - general purpose register.public void cas(int size,
Register rs,
Register rt,
Register rn,
boolean acquire,
boolean release)
size - size of bits read from memory. Must be 8, 16, 32 or 64.rs - general purpose register to be compared and loaded. May not be null.rt - general purpose register to be conditionally stored. May not be null.rn - general purpose register containing the address from which to read.acquire - boolean value signifying if the load should use acquire semantics.release - boolean value signifying if the store should use release semantics.public void ldadd(int size,
Register rs,
Register rt,
Register rn,
boolean acquire,
boolean release)
size - size of operand to read from memory. Must be 8, 16, 32, or 64.rs - general purpose register to be added to contents. May not be null.rt - general purpose register to be loaded. May not be null.rn - general purpose register or stack pointer holding an address from which to load.acquire - boolean value signifying if the load should use acquire semantics.release - boolean value signifying if the store should use release semantics.public void swp(int size,
Register rs,
Register rt,
Register rn,
boolean acquire,
boolean release)
size - size of operand to read from memory. Must be 8, 16, 32, or 64.rs - general purpose register to be stored. May not be null.rt - general purpose register to be loaded. May not be null.rn - general purpose register or stack pointer holding an address from which to load.acquire - boolean value signifying if the load should use acquire semantics.release - boolean value signifying if the store should use release semantics.public void adrp(Register dst)
dst - general purpose register. May not be null, zero-register or stackpointer.public void adr(Register dst,
int imm21)
dst - general purpose register. May not be null, zero-register or stackpointer.imm21 - Signed 21-bit offset.public void adr(Register dst,
int imm21,
int pos)
dst - general purpose register. May not be null, zero-register or stackpointer.imm21 - Signed 21-bit offset.pos - the position in the code that the instruction is emitted.protected void add(int size,
Register dst,
Register src,
int aimm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or zero-register.src - general purpose register. May not be null or zero-register.aimm - arithmetic immediate. Either unsigned 12-bit value or unsigned 24-bit value with
the lower 12-bit cleared.protected void adds(int size,
Register dst,
Register src,
int aimm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src - general purpose register. May not be null or zero-register.aimm - arithmetic immediate. Either unsigned 12-bit value or unsigned 24-bit value with
the lower 12-bit cleared.protected void sub(int size,
Register dst,
Register src,
int aimm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or zero-register.src - general purpose register. May not be null or zero-register.aimm - arithmetic immediate. Either unsigned 12-bit value or unsigned 24-bit value with
the lower 12-bit cleared.protected void subs(int size,
Register dst,
Register src,
int aimm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src - general purpose register. May not be null or zero-register.aimm - arithmetic immediate. Either unsigned 12-bit value or unsigned 24-bit value with
the lower 12-bit cleared.public void ccmp(int size,
Register x,
Register y,
int aimm,
AArch64Assembler.ConditionFlag condition)
public static boolean isAddSubtractImmediate(long imm,
boolean useAbs)
imm - Immediate has to be either an unsigned 12bit value or un unsigned 24bit value with
the lower 12 bits 0.useAbs - whether to check the absolute imm value, or check imm as provided.public void and(int size,
Register dst,
Register src,
long bimm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or zero-register.src - general purpose register. May not be null or stack-pointer.bimm - logical immediate. See AArch64Assembler.LogicalBitmaskImmediateEncoding for exact
definition.public void ands(int size,
Register dst,
Register src,
long bimm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stack-pointer.src - general purpose register. May not be null or stack-pointer.bimm - logical immediate. See AArch64Assembler.LogicalBitmaskImmediateEncoding for exact
definition.public void eor(int size,
Register dst,
Register src,
long bimm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or zero-register.src - general purpose register. May not be null or stack-pointer.bimm - logical immediate. See AArch64Assembler.LogicalBitmaskImmediateEncoding for exact
definition.public void orr(int size,
Register dst,
Register src,
long bimm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or zero-register.src - general purpose register. May not be null or stack-pointer.bimm - logical immediate. See AArch64Assembler.LogicalBitmaskImmediateEncoding for exact
definition.protected void movz(int size,
Register dst,
int uimm16,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, stackpointer or zero-register.uimm16 - 16-bit unsigned immediateshiftAmt - amount by which uimm16 is left shifted. Can be any multiple of 16 smaller
than size.protected void movn(int size,
Register dst,
int uimm16,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, stackpointer or zero-register.uimm16 - 16-bit unsigned immediateshiftAmt - amount by which uimm16 is left shifted. Can be any multiple of 16 smaller
than size.protected void movk(int size,
Register dst,
int uimm16,
int pos)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, stackpointer or zero-register.uimm16 - 16-bit unsigned immediatepos - position into which uimm16 is inserted. Can be any multiple of 16 smaller than
size.public void bfm(int size,
Register dst,
Register src,
int r,
int s)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, stackpointer or zero-register.src - general purpose register. May not be null, stackpointer or zero-register.r - must be in the range 0 to size - 1s - must be in the range 0 to size - 1public void ubfm(int size,
Register dst,
Register src,
int r,
int s)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, stackpointer or zero-register.src - general purpose register. May not be null, stackpointer or zero-register.r - must be in the range 0 to size - 1s - must be in the range 0 to size - 1public void sbfm(int size,
Register dst,
Register src,
int r,
int s)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, stackpointer or zero-register.src - general purpose register. May not be null, stackpointer or zero-register.r - must be in the range 0 to size - 1s - must be in the range 0 to size - 1protected void extr(int size,
Register dst,
Register src1,
Register src2,
int lsb)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.lsb - must be in range 0 to size - 1.protected void add(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int imm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - any type but ROR.imm - must be in range 0 to size - 1.public void adds(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int imm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - any type but ROR.imm - must be in range 0 to size - 1.protected void sub(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int imm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - any type but ROR.imm - must be in range 0 to size - 1.public void subs(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int imm)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - any type but ROR.imm - must be in range 0 to size - 1.public void add(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ExtendType extendType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or zero-register.src1 - general purpose register. May not be null or zero-register.src2 - general purpose register. May not be null or stackpointer.extendType - defines how src2 is extended to the same size as src1.shiftAmt - must be in range 0 to 4.protected void adds(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ExtendType extendType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or zero-register.src2 - general purpose register. May not be null or stackpointer.extendType - defines how src2 is extended to the same size as src1.shiftAmt - must be in range 0 to 4.public void sub(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ExtendType extendType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or zero-register.src1 - general purpose register. May not be null or zero-register.src2 - general purpose register. May not be null or stackpointer.extendType - defines how src2 is extended to the same size as src1.shiftAmt - must be in range 0 to 4.public void subs(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ExtendType extendType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or zero-register.src2 - general purpose register. May not be null or stackpointer.extendType - defines how src2 is extended to the same size as src1.shiftAmt - must be in range 0 to 4.public void and(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - all types allowed, may not be null.shiftAmt - must be in range 0 to size - 1.protected void ands(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - all types allowed, may not be null.shiftAmt - must be in range 0 to size - 1.public void bic(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - all types allowed, may not be null.shiftAmt - must be in range 0 to size - 1.protected void bics(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - all types allowed, may not be null.shiftAmt - must be in range 0 to size - 1.public void eon(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - all types allowed, may not be null.shiftAmt - must be in range 0 to size - 1.public void eor(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - all types allowed, may not be null.shiftAmt - must be in range 0 to size - 1.public void orr(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - all types allowed, may not be null.shiftAmt - must be in range 0 to size - 1.public void orn(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ShiftType shiftType,
int shiftAmt)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.shiftType - all types allowed, may not be null.shiftAmt - must be in range 0 to size - 1.public void asr(int size,
Register dst,
Register src1,
Register src2)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.public void lsl(int size,
Register dst,
Register src1,
Register src2)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.public void lsr(int size,
Register dst,
Register src1,
Register src2)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.protected void rorv(int size,
Register dst,
Register src1,
Register src2)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or stackpointer.src1 - general purpose register. May not be null or stackpointer.src2 - general purpose register. May not be null or stackpointer.protected void cls(int size,
Register dst,
Register src)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, zero-register or the stackpointer.src - source register. May not be null, zero-register or the stackpointer.public void clz(int size,
Register dst,
Register src)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, zero-register or the stackpointer.src - source register. May not be null, zero-register or the stackpointer.public void rbit(int size,
Register dst,
Register src)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null, zero-register or the stackpointer.src - source register. May not be null, zero-register or the stackpointer.public void rev(int size,
Register dst,
Register src)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or the stackpointer.src - source register. May not be null or the stackpointer.public void csel(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ConditionFlag condition)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.condition - any condition flag. May not be null.public void csneg(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ConditionFlag condition)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.condition - any condition flag. May not be null.protected void csinc(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ConditionFlag condition)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.condition - any condition flag. May not be null.public void madd(int size,
Register dst,
Register src1,
Register src2,
Register src3)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.src3 - general purpose register. May not be null or the stackpointer.public void msub(int size,
Register dst,
Register src1,
Register src2,
Register src3)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.src3 - general purpose register. May not be null or the stackpointer.protected void smulh(Register dst,
Register src1,
Register src2)
dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.protected void umulh(Register dst,
Register src1,
Register src2)
dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.protected void umaddl(Register dst,
Register src1,
Register src2,
Register src3)
dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.src3 - general purpose register. May not be null or the stackpointer.public void smaddl(Register dst,
Register src1,
Register src2,
Register src3)
dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.src3 - general purpose register. May not be null or the stackpointer.public void smsubl(Register dst,
Register src1,
Register src2,
Register src3)
dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.src3 - general purpose register. May not be null or the stackpointer.public void sdiv(int size,
Register dst,
Register src1,
Register src2)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.public void udiv(int size,
Register dst,
Register src1,
Register src2)
size - register size. Has to be 32 or 64.dst - general purpose register. May not be null or the stackpointer.src1 - general purpose register. May not be null or the stackpointer.src2 - general purpose register. May not be null or the stackpointer.public void fldr(int size,
Register rt,
AArch64Address address)
size - number of bits read from memory into rt. Must be 8, 16, 32, 64 or 128.rt - floating point register. May not be null.address - all addressing modes allowed. May not be null.public void fstr(int size,
Register rt,
AArch64Address address)
size - number of bits read from memory into rt. Must be 32 or 64.rt - floating point register. May not be null.address - all addressing modes allowed. May not be null.public void fldp(int size,
Register rt,
Register rt2,
AArch64Address address)
public void fstp(int size,
Register rt,
Register rt2,
AArch64Address address)
protected void fmovFpu2Fpu(int size,
Register dst,
Register src)
size - register size. Has to be 32 or 64.dst - floating point register. May not be null.src - floating point register. May not be null.protected void fmovFpu2Cpu(int size,
Register dst,
Register src)
size - number of bits read from memory into rt. Must be 32 or 64.dst - general purpose register. May not be null, stack-pointer or zero-registersrc - floating point register. May not be null.protected void fmovCpu2Fpu(int size,
Register dst,
Register src)
size - register size. Has to be 32 or 64.dst - floating point register. May not be null.src - general purpose register. May not be null or stack-pointer.protected void fmov(int size,
Register dst,
double imm)
size - register size. Has to be 32 or 64.dst - floating point register. May not be null.imm - immediate that is loaded into dst. If size is 32 only float immediates can be
loaded, i.e. (float) imm == imm must be true. In all cases
isFloatImmediate, respectively #isDoubleImmediate must be true
depending on size.protected static boolean isDoubleImmediate(double imm)
protected static boolean isFloatImmediate(float imm)
public void fcvt(int dstSize,
int srcSize,
Register dst,
Register src)
dstSize - size of target register in bits.srcSize - size of source register in bits.dst - floating point register. May not be null.src - floating point register. May not be null.public void fcvtzs(int dstSize,
int srcSize,
Register dst,
Register src)
dstSize - size of integer register. 32 or 64.srcSize - size of floating point register. 32 or 64.dst - general purpose register. May not be null, the zero-register or the stackpointer.src - floating point register. May not be null.public void scvtf(int dstSize,
int srcSize,
Register dst,
Register src)
dstSize - size of floating point register. 32 or 64.srcSize - size of integer register. 32 or 64.dst - floating point register. May not be null.src - general purpose register. May not be null or the stackpointer.public void frintz(int size,
Register dst,
Register src)
size - register size.dst - floating point register. May not be null.src - floating point register. May not be null.public void frintn(int size,
Register dst,
Register src)
size - register size.dst - floating point register. May not be null.src - floating point register. May not be null.public void frintm(int size,
Register dst,
Register src)
size - register size.dst - floating point register. May not be null.src - floating point register. May not be null.public void frintp(int size,
Register dst,
Register src)
size - register size.dst - floating point register. May not be null.src - floating point register. May not be null.public void fabs(int size,
Register dst,
Register src)
size - register size.dst - floating point register. May not be null.src - floating point register. May not be null.public void fneg(int size,
Register dst,
Register src)
size - register size.dst - floating point register. May not be null.src - floating point register. May not be null.public void fsqrt(int size,
Register dst,
Register src)
size - register size.dst - floating point register. May not be null.src - floating point register. May not be null.public void fadd(int size,
Register dst,
Register src1,
Register src2)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.public void fsub(int size,
Register dst,
Register src1,
Register src2)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.public void fmul(int size,
Register dst,
Register src1,
Register src2)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.public void fdiv(int size,
Register dst,
Register src1,
Register src2)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.public void fmax(int size,
Register dst,
Register src1,
Register src2)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.public void fmin(int size,
Register dst,
Register src1,
Register src2)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.public void fmadd(int size,
Register dst,
Register src1,
Register src2,
Register src3)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.src3 - floating point register. May not be null.protected void fmsub(int size,
Register dst,
Register src1,
Register src2,
Register src3)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.src3 - floating point register. May not be null.public void fcmp(int size,
Register src1,
Register src2)
size - register size.src1 - floating point register. May not be null.src2 - floating point register. May not be null.public void fcmpe(int size,
Register src1,
Register src2)
size - register size.src1 - floating point register. May not be null.src2 - floating point register. May not be null.public void fccmp(int size,
Register src1,
Register src2,
int uimm4,
AArch64Assembler.ConditionFlag condition)
size - register size.src1 - floating point register. May not be null.src2 - floating point register. May not be null.uimm4 - condition flags that are used if condition is false.condition - every condition allowed. May not be null.public void fcmpZero(int size,
Register src)
size - register size.src - floating point register. May not be null.public void fcmpeZero(int size,
Register src)
size - register size.src - floating point register. May not be null.public void fcsel(int size,
Register dst,
Register src1,
Register src2,
AArch64Assembler.ConditionFlag condition)
size - register size.dst - floating point register. May not be null.src1 - floating point register. May not be null.src2 - floating point register. May not be null.condition - every condition allowed. May not be null.protected void hlt(int uimm16)
uimm16 - Arbitrary 16-bit unsigned payload.protected void brk(int uimm16)
uimm16 - Arbitrary 16-bit unsigned payload.protected void hint(AArch64Assembler.SystemHint hint)
hint - Can be any of the defined hints. May not be null.protected void clrex()
public void dmb(AArch64Assembler.BarrierKind barrierKind)
barrierKind - barrier that is issued. May not be null.public void dsb(AArch64Assembler.BarrierKind barrierKind)
barrierKind - barrier that is issued. May not be null.public void isb()
public void mrs(Register dst,
AArch64Assembler.SystemRegister systemRegister)
Reads an AArch64 System register into a general-purpose register.
public void msr(AArch64Assembler.SystemRegister systemRegister, Register src)
Writes an AArch64 System register from general-purpose register.
public void dc(AArch64Assembler.DataCacheOperationType type, Register src)
public void annotatePatchingImmediate(int pos,
AArch64Assembler.Instruction instruction,
int operandSizeBits,
int offsetBits,
int shift)