Package jnr.a64asm
Class Assembler_A64
- java.lang.Object
-
- jnr.a64asm.SerializerCore
-
- jnr.a64asm.SerializerIntrinsics_a64
-
- jnr.a64asm.Serializer
-
- jnr.a64asm.Assembler_A64
-
public final class Assembler_A64 extends Serializer
Low level code generation.
-
-
Field Summary
Fields Modifier and Type Field Description private CodeBuffer
_buffer
private Logger
_logger
private int
_properties
private java.util.List<RelocData>
_relocData
static CPU_A64
Aarch_64
private CPU_A64
cpu
private CpuInfo
cpuInfo
-
Fields inherited from class jnr.a64asm.SerializerCore
_none
-
-
Constructor Summary
Constructors Constructor Description Assembler_A64(CPU_A64 cpu)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
_emita64(INST_CODE code, Operand o1, Operand o2, Operand o3, Operand o4, Operand o5)
(package private) void
_emitByte(int x)
Emit Byte to internal buffer.(package private) void
_emitDWord(int x)
Emit DWord (4 bytes) to internal buffer.(package private) void
_emitImmediate(Immediate imm, int size)
(package private) void
_emitInt32(int x)
Emit Int32 (4 bytes) to internal buffer.(package private) void
_emitJmpOrCallReloc(InstructionGroup instruction, long target)
(package private) void
_emitOpCode(int opCode)
(package private) void
_emitQWord(long x)
Emit QWord (8 bytes) to internal buffer.(package private) void
_emitSysInt(long x)
Emit system signed integer (4 or 8 bytes) to internal buffer.(package private) void
_emitWord(int x)
Emit Word (2 bytes) to internal buffer.int
codeSize()
Gets the required size of memory required to store all the generated codebyte
getByteAt(int pos)
int
getDWordAt(int pos)
int
getInt32At(int pos)
long
getQWordAt(int pos)
short
getWordAt(int pos)
private static int
intValue(boolean b)
(package private) boolean
is64()
int
offset()
void
relocCode(java.nio.ByteBuffer buffer, long address)
void
setByteAt(int pos, byte x)
void
setDWordAt(int pos, int x)
void
setInt32At(int pos, long x)
void
setQWordAt(int pos, long x)
void
setVarAt(int pos, long i, boolean isUnsigned, int size)
void
setWordAt(int pos, short x)
-
Methods inherited from class jnr.a64asm.SerializerIntrinsics_a64
adc, adcs, add, add, add, adds, adds, adds, adr, adrp, and, and, ands, ands, asr, asr, asrv, b, bcc, bcs, beq, bfi, bfm, bfxil, bge, bgt, bhi, bhs, bic, bics, bl, ble, blo, blr, bls, blt, bmi, bne, bpl, br, brk, bvc, bvs, cbnz, cbz, ccmn, ccmn, ccmp, ccmp, cinc, cinv, clrex, cls, clz, cmn, cmn, cmn, cmp, cmp, cmp, cneg, csel, cset, csetm, csinc, csinv, csneg, dc, dcps1, dcps2, dcps3, dmb, drps, dsb, eon, eor, eor, eret, extr, hint, hlt, hvc, ic, isb, ldar, ldarb, ldarh, ldaxp, ldaxr, ldaxrb, ldaxrh, ldnp, ldp, ldp, ldp, ldpsw, ldpsw, ldpsw, ldr, ldr, ldr, ldr, ldr, ldrb, ldrb, ldrb, ldrb, ldrh, ldrh, ldrh, ldrh, ldrsb, ldrsb, ldrsb, ldrsb, ldrsh, ldrsh, ldrsh, ldrsh, ldrsw, ldrsw, ldrsw, ldrsw, ldrsw, ldtr, ldtrb, ldtrh, ldtrsb, ldtrsh, ldtrsw, ldur, ldurb, ldurh, ldursb, ldursh, ldursw, ldxp, ldxr, ldxrb, ldxrh, lsl, lsl, lslv, lsr, lsr, lsrv, madd, mneg, mov, mov, mov, movk, movn, movz, mrs, msr, msr, msub, mul, mvn, neg, negs, ngc, ngcs, nop, orn, orr, orr, prfm, prfm, prfm, prfum, rbit, ret, rev, rev16, rev32, ror, ror, rorv, sbc, sbcs, sbfiz, sbfm, sbfx, sdiv, sev, sevl, smaddl, smc, smnegl, smsubl, smulh, smull, stlr, stlrb, stlrh, stlxp, stlxr, stlxrb, stlxrh, stnp, stp, stp, stp, str, str, str, str, strb, strb, strb, strb, strh, strh, strh, strh, sttr, sttrb, sttrh, stur, sturb, sturh, stxp, stxr, stxrb, stxrh, sub, sub, sub, subs, subs, subs, svc, sxtb, sxth, sxtw, tbnz, tbz, tst, tst, ubfiz, ubfm, ubfx, udiv, umaddl, umnegl, umsubl, umulh, umull, uxtb, uxth, uxtw, wfe, wfi, yield
-
-
-
-
Field Detail
-
_buffer
private final CodeBuffer _buffer
-
_relocData
private final java.util.List<RelocData> _relocData
-
cpuInfo
private final CpuInfo cpuInfo
-
_properties
private int _properties
-
_logger
private final Logger _logger
-
cpu
private final CPU_A64 cpu
-
Aarch_64
public static final CPU_A64 Aarch_64
-
-
Constructor Detail
-
Assembler_A64
public Assembler_A64(CPU_A64 cpu)
-
-
Method Detail
-
is64
boolean is64()
- Specified by:
is64
in classSerializerCore
-
intValue
private static final int intValue(boolean b)
-
offset
public final int offset()
-
codeSize
public final int codeSize()
Gets the required size of memory required to store all the generated code
-
getByteAt
public final byte getByteAt(int pos)
-
getWordAt
public final short getWordAt(int pos)
-
getDWordAt
public final int getDWordAt(int pos)
-
getQWordAt
public final long getQWordAt(int pos)
-
setByteAt
public final void setByteAt(int pos, byte x)
-
setWordAt
public final void setWordAt(int pos, short x)
-
setDWordAt
public final void setDWordAt(int pos, int x)
-
setQWordAt
public final void setQWordAt(int pos, long x)
-
getInt32At
public final int getInt32At(int pos)
-
setInt32At
public final void setInt32At(int pos, long x)
-
setVarAt
public final void setVarAt(int pos, long i, boolean isUnsigned, int size)
-
_emitByte
final void _emitByte(int x)
Emit Byte to internal buffer.
-
_emitWord
final void _emitWord(int x)
Emit Word (2 bytes) to internal buffer.
-
_emitDWord
final void _emitDWord(int x)
Emit DWord (4 bytes) to internal buffer.
-
_emitQWord
final void _emitQWord(long x)
Emit QWord (8 bytes) to internal buffer.
-
_emitInt32
final void _emitInt32(int x)
Emit Int32 (4 bytes) to internal buffer.
-
_emitSysInt
final void _emitSysInt(long x)
Emit system signed integer (4 or 8 bytes) to internal buffer.
-
_emitOpCode
final void _emitOpCode(int opCode)
-
_emitImmediate
void _emitImmediate(Immediate imm, int size)
-
_emita64
void _emita64(INST_CODE code, Operand o1, Operand o2, Operand o3, Operand o4, Operand o5)
- Specified by:
_emita64
in classSerializerCore
-
_emitJmpOrCallReloc
void _emitJmpOrCallReloc(InstructionGroup instruction, long target)
-
relocCode
public void relocCode(java.nio.ByteBuffer buffer, long address)
-
-