Package jnr.x86asm
Class Assembler
java.lang.Object
jnr.x86asm.SerializerCore
jnr.x86asm.SerializerIntrinsics
jnr.x86asm.Serializer
jnr.x86asm.Assembler
Low level code generation.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final CodeBufferprivate final Loggerprivate int(package private) intSize of possible trampolines.private final CPUprivate final CpuInfostatic final CPUprivate static final int[]private static final int[]private static final int[]private static final int[]private static final int[]private static final int[]private static final int[]private static final int[]private static final int[]private static final int[]private static final int[]static final CPUFields inherited from class jnr.x86asm.SerializerCore
_cmovcctable, _jcctable, _none, _setcctable -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) final void_emitByte(int x) Emit Byte to internal buffer.(package private) LinkData_emitDisplacement(Label label, long inlinedDisplacement, int size) (package private) final void_emitDWord(int x) Emit DWord (4 bytes) to internal buffer.(package private) void_emitFpu(int opCode) (package private) void_emitFpuMEM(int opCode, int opReg, Mem mem) (package private) void_emitFpuSTI(int opCode, int sti) (package private) void_emitImmediate(Immediate imm, int size) (package private) final void_emitInt32(int x) Emit Int32 (4 bytes) to internal buffer.(package private) void_emitJmpOrCallReloc(InstructionGroup instruction, long target) (package private) void(package private) void_emitMod(int m, int o, int r) Emit MODR/M byte.(package private) void(package private) void_emitModR(int opReg, int r) Emit Register / Register - calls _emitMod(3, opReg, r)(package private) voidEmit Register / Register - calls _emitMod(3, opReg, r.code())(package private) void_emitModRM(int opReg, Operand op, int immSize) (package private) final void_emitOpCode(int opCode) (package private) final void_emitQWord(long x) Emit QWord (8 bytes) to internal buffer.(package private) void_emitRexR(boolean w, int opReg, int regCode) (package private) void_emitRexR(int w, int opReg, int regCode) Emit REX prefix (64 bit mode only).(package private) void_emitRexRM(boolean w, int opReg, Operand rm) (package private) void_emitRexRM(int w, int opReg, Operand rm) Emit REX prefix (64 bit mode only).(package private) void(package private) void_emitSib(int s, int i, int b) Emit SIB byte.(package private) final void_emitSysInt(long x) Emit system signed integer (4 or 8 bytes) to internal buffer.(package private) final void_emitWord(int x) Emit Word (2 bytes) to internal buffer.(package private) void(package private) void_emitX86Inl(int opCode, boolean i16bit, boolean rexw, int reg) (package private) void_emitX86Inl(int opCode, boolean i16bit, int rexw, int reg) (package private) void_emitX86RM(int opCode, boolean i16bit, boolean rexw, int o, Operand op, int immSize) (package private) void_emitX86RM(int opCode, boolean i16bit, int rexw, int o, Operand op, int immSize) voidalign(long m) final intcodeSize()Gets the required size of memory required to store all the generated codefinal bytegetByteAt(int pos) final intgetDWordAt(int pos) final intgetInt32At(int pos) final longgetQWordAt(int pos) final shortgetWordAt(int pos) private static final intintValue(boolean b) (package private) booleanis64()final intoffset()voidrelocCode(ByteBuffer buffer, long address) final voidsetByteAt(int pos, byte x) final voidsetDWordAt(int pos, int x) final voidsetInt32At(int pos, long x) final voidsetQWordAt(int pos, long x) final voidsetVarAt(int pos, long i, boolean isUnsigned, int size) final voidsetWordAt(int pos, short x) (package private) intReturn size of all possible trampolines needed to successfuly generate relative jumps to absolute addresses.Methods inherited from class jnr.x86asm.SerializerIntrinsics
adc, adc, adc, adc, adc, add, add, add, add, add, addpd, addpd, addps, addps, addsd, addsd, addss, addss, addsubpd, addsubpd, addsubps, addsubps, amd_prefetch, amd_prefetchw, and_, and_, and_, and_, and_, andnpd, andnpd, andnps, andnps, andpd, andpd, andps, andps, blendpd, blendpd, blendps, blendps, blendvpd, blendvpd, blendvps, blendvps, bsf, bsf, bsr, bsr, bswap, bt, bt, bt, bt, btc, btc, btc, btc, btr, btr, btr, btr, bts, bts, bts, bts, call, call, call, call, call, cbw, cdqe, clc, cld, clflush, cmc, cmov, cmov, cmova, cmova, cmovae, cmovae, cmovb, cmovb, cmovbe, cmovbe, cmovc, cmovc, cmove, cmove, cmovg, cmovg, cmovge, cmovge, cmovl, cmovl, cmovle, cmovle, cmovna, cmovna, cmovnae, cmovnae, cmovnb, cmovnb, cmovnbe, cmovnbe, cmovnc, cmovnc, cmovne, cmovne, cmovng, cmovng, cmovnge, cmovnge, cmovnl, cmovnl, cmovnle, cmovnle, cmovno, cmovno, cmovnp, cmovnp, cmovns, cmovns, cmovnz, cmovnz, cmovo, cmovo, cmovp, cmovp, cmovpe, cmovpe, cmovpo, cmovpo, cmovs, cmovs, cmovz, cmovz, cmp, cmp, cmp, cmp, cmp, cmppd, cmppd, cmpps, cmpps, cmpsd, cmpsd, cmpss, cmpss, cmpxchg, cmpxchg, cmpxchg16b, cmpxchg8b, comisd, comisd, comiss, comiss, cpuid, crc32, crc32, cvtdq2pd, cvtdq2pd, cvtdq2ps, cvtdq2ps, cvtpd2dq, cvtpd2dq, cvtpd2pi, cvtpd2pi, cvtpd2ps, cvtpd2ps, cvtpi2pd, cvtpi2pd, cvtpi2ps, cvtpi2ps, cvtps2dq, cvtps2dq, cvtps2pd, cvtps2pd, cvtps2pi, cvtps2pi, cvtsd2si, cvtsd2si, cvtsd2ss, cvtsd2ss, cvtsi2sd, cvtsi2sd, cvtsi2ss, cvtsi2ss, cvtss2sd, cvtss2sd, cvtss2si, cvtss2si, cvttpd2dq, cvttpd2dq, cvttpd2pi, cvttpd2pi, cvttps2dq, cvttps2dq, cvttps2pi, cvttps2pi, cvttsd2si, cvttsd2si, cvttss2si, cvttss2si, cwde, daa, das, dec, dec, div, div, divpd, divpd, divps, divps, divsd, divsd, divss, divss, dppd, dppd, dpps, dpps, emms, enter, extractps, extractps, f2xm1, fabs, fadd, fadd, faddp, faddp, fbld, fbstp, fchs, fclex, fcmovb, fcmovbe, fcmove, fcmovnb, fcmovnbe, fcmovne, fcmovnu, fcmovu, fcom, fcom, fcom, fcomi, fcomip, fcomp, fcomp, fcomp, fcompp, fcos, fdecstp, fdiv, fdiv, fdivp, fdivp, fdivr, fdivr, fdivrp, fdivrp, femms, ffree, fiadd, ficom, ficomp, fidiv, fidivr, fild, fimul, fincstp, finit, fist, fistp, fisttp, fisub, fisubr, fld, fld, fld1, fldcw, fldenv, fldl2e, fldl2t, fldlg2, fldln2, fldpi, fldz, fmul, fmul, fmulp, fmulp, fnclex, fninit, fnop, fnsave, fnstcw, fnstenv, fnstsw, fnstsw, fpatan, fprem, fprem1, fptan, frndint, frstor, fsave, fscale, fsin, fsincos, fsqrt, fst, fst, fstcw, fstenv, fstp, fstp, fstsw, fstsw, fsub, fsub, fsubp, fsubp, fsubr, fsubr, fsubrp, fsubrp, ftst, fucom, fucom, fucomi, fucomip, fucomip, fucomp, fucomp, fucompp, fwait, fxam, fxch, fxch, fxrstor, fxsave, fxtract, fyl2x, fyl2xp1, haddpd, haddpd, haddps, haddps, hsubpd, hsubpd, hsubps, hsubps, idiv, idiv, imul, imul, imul, imul, imul, imul, imul, inc, inc, int3, j, j_short, ja, ja_short, jae, jae_short, jb, jb_short, jbe, jbe_short, jc, jc_short, je, je_short, jg, jg_short, jge, jge_short, jl, jl_short, jle, jle_short, jmp, jmp, jmp, jmp, jmp, jmp_short, jna, jna_short, jnae, jnae_short, jnb, jnb_short, jnbe, jnbe_short, jnc, jnc_short, jne, jne_short, jng, jng_short, jnge, jnge_short, jnl, jnl_short, jnle, jnle_short, jno, jno_short, jnp, jnp_short, jns, jns_short, jnz, jnz_short, jo, jo_short, jp, jp_short, jpe, jpe_short, jpo, jpo_short, js, js_short, jz, jz_short, lddqu, ldmxcsr, lea, leave, lfence, lock, maskmovdqu, maskmovq, maxpd, maxpd, maxps, maxps, maxsd, maxsd, maxss, maxss, mfence, minpd, minpd, minps, minps, minsd, minsd, minss, minss, monitor, mov, mov, mov, mov, mov, mov_ptr, mov_ptr, movapd, movapd, movapd, movaps, movaps, movaps, movbe, movbe, movd, movd, movd, movd, movd, movd, movd, movd, movddup, movddup, movdq2q, movdqa, movdqa, movdqa, movdqu, movdqu, movdqu, movhlps, movhpd, movhpd, movhps, movhps, movlhps, movlpd, movlpd, movlps, movlps, movmskpd, movmskps, movntdq, movntdqa, movnti, movntpd, movntps, movntq, movq, movq, movq, movq, movq, movq, movq, movq, movq, movq, movq2dq, movsd, movsd, movsd, movshdup, movshdup, movsldup, movsldup, movss, movss, movss, movsx, movsx, movsxd, movsxd, movupd, movupd, movups, movups, movups, movzx, movzx, mpsadbw, mpsadbw, mul, mul, mulpd, mulpd, mulps, mulps, mulsd, mulsd, mulss, mulss, mwait, neg, neg, nop, not_, not_, or_, or_, or_, or_, or_, orpd, orpd, orps, orps, pabsb, pabsb, pabsb, pabsb, pabsd, pabsd, pabsd, pabsd, pabsw, pabsw, pabsw, pabsw, packssdw, packssdw, packsswb, packsswb, packusdw, packusdw, packuswb, packuswb, packuswb, packuswb, paddb, paddb, paddb, paddb, paddd, paddd, paddd, paddd, paddq, paddq, paddq, paddq, paddsb, paddsb, paddsb, paddsb, paddsw, paddsw, paddsw, paddsw, paddusb, paddusb, paddusb, paddusb, paddusw, paddusw, paddusw, paddusw, paddw, paddw, paddw, paddw, palignr, palignr, palignr, palignr, pand, pand, pand, pand, pandn, pandn, pandn, pandn, pause, pavgb, pavgb, pavgb, pavgb, pavgw, pavgw, pavgw, pavgw, pblendvb, pblendvb, pblendw, pblendw, pcmpeqb, pcmpeqb, pcmpeqb, pcmpeqb, pcmpeqd, pcmpeqd, pcmpeqd, pcmpeqd, pcmpeqq, pcmpeqq, pcmpeqw, pcmpeqw, pcmpeqw, pcmpeqw, pcmpestri, pcmpestri, pcmpestrm, pcmpestrm, pcmpgtb, pcmpgtb, pcmpgtb, pcmpgtb, pcmpgtd, pcmpgtd, pcmpgtd, pcmpgtd, pcmpgtq, pcmpgtq, pcmpgtw, pcmpgtw, pcmpgtw, pcmpgtw, pcmpistri, pcmpistri, pcmpistrm, pcmpistrm, pextrb, pextrb, pextrd, pextrd, pextrq, pextrq, pextrw, pextrw, pextrw, pf2id, pf2id, pf2iw, pf2iw, pfacc, pfacc, pfadd, pfadd, pfcmpeq, pfcmpeq, pfcmpge, pfcmpge, pfcmpgt, pfcmpgt, pfmax, pfmax, pfmin, pfmin, pfmul, pfmul, pfnacc, pfnacc, pfpnacc, pfpnaxx, pfrcp, pfrcp, pfrcpit1, pfrcpit1, pfrcpit2, pfrcpit2, pfrsqit1, pfrsqit1, pfrsqrt, pfrsqrt, pfsub, pfsub, pfsubr, pfsubr, phaddd, phaddd, phaddd, phaddd, phaddsw, phaddsw, phaddsw, phaddsw, phaddw, phaddw, phaddw, phaddw, phminposuw, phminposuw, phsubd, phsubd, phsubd, phsubd, phsubsw, phsubsw, phsubsw, phsubsw, phsubw, phsubw, phsubw, phsubw, pi2fd, pi2fd, pi2fw, pi2fw, pinsrb, pinsrb, pinsrd, pinsrd, pinsrq, pinsrq, pinsrw, pinsrw, pinsrw, pinsrw, pmaddubsw, pmaddubsw, pmaddubsw, pmaddubsw, pmaddwd, pmaddwd, pmaddwd, pmaddwd, pmaxsb, pmaxsb, pmaxsd, pmaxsd, pmaxsw, pmaxsw, pmaxsw, pmaxsw, pmaxub, pmaxub, pmaxub, pmaxub, pmaxud, pmaxud, pmaxuw, pmaxuw, pminsb, pminsb, pminsd, pminsd, pminsw, pminsw, pminsw, pminsw, pminub, pminub, pminub, pminub, pminud, pminud, pminuw, pminuw, pmovmskb, pmovmskb, pmovsxbd, pmovsxbd, pmovsxbq, pmovsxbq, pmovsxbw, pmovsxbw, pmovsxdq, pmovsxdq, pmovsxwd, pmovsxwd, pmovsxwq, pmovsxwq, pmovzxbd, pmovzxbd, pmovzxbq, pmovzxbq, pmovzxbw, pmovzxbw, pmovzxdq, pmovzxdq, pmovzxwd, pmovzxwd, pmovzxwq, pmovzxwq, pmuldq, pmuldq, pmulhrsw, pmulhrsw, pmulhrsw, pmulhrsw, pmulhuw, pmulhuw, pmulhuw, pmulhuw, pmulhw, pmulhw, pmulhw, pmulhw, pmulld, pmulld, pmullw, pmullw, pmullw, pmullw, pmuludq, pmuludq, pmuludq, pmuludq, pop, pop, popad, popcnt, popcnt, popf, popfd, popfq, por, por, por, por, prefetch, psadbw, psadbw, psadbw, psadbw, pshufb, pshufb, pshufb, pshufb, pshufd, pshufd, pshufhw, pshufhw, pshuflw, pshuflw, pshufw, pshufw, psignb, psignb, psignb, psignb, psignd, psignd, psignd, psignd, psignw, psignw, psignw, psignw, pslld, pslld, pslld, pslld, pslld, pslld, pslldq, psllq, psllq, psllq, psllq, psllq, psllq, psllw, psllw, psllw, psllw, psllw, psllw, psrad, psrad, psrad, psrad, psrad, psrad, psraw, psraw, psraw, psraw, psraw, psraw, psrld, psrld, psrld, psrld, psrld, psrld, psrldq, psrlq, psrlq, psrlq, psrlq, psrlq, psrlq, psrlw, psrlw, psrlw, psrlw, psrlw, psrlw, psubb, psubb, psubb, psubb, psubd, psubd, psubd, psubd, psubq, psubq, psubq, psubq, psubsb, psubsb, psubsb, psubsb, psubsw, psubsw, psubsw, psubsw, psubusb, psubusb, psubusb, psubusb, psubusw, psubusw, psubusw, psubusw, psubw, psubw, psubw, psubw, pswapd, pswapd, ptest, ptest, punpckhbw, punpckhbw, punpckhbw, punpckhbw, punpckhdq, punpckhdq, punpckhdq, punpckhdq, punpckhqdq, punpckhqdq, punpckhwd, punpckhwd, punpckhwd, punpckhwd, punpcklbw, punpcklbw, punpcklbw, punpcklbw, punpckldq, punpckldq, punpckldq, punpckldq, punpcklqdq, punpcklqdq, punpcklwd, punpcklwd, punpcklwd, punpcklwd, push, push, push, pushad, pushf, pushfd, pushfq, pxor, pxor, pxor, pxor, rcl, rcl, rcl, rcl, rcpps, rcpps, rcpss, rcpss, rcr, rcr, rcr, rcr, rdtsc, rdtscp, ret, ret, rol, rol, rol, rol, ror, ror, ror, ror, roundpd, roundpd, roundps, roundps, roundsd, roundsd, roundss, roundss, rsqrtps, rsqrtps, rsqrtss, rsqrtss, sahf, sal, sal, sal, sal, sar, sar, sar, sar, sbb, sbb, sbb, sbb, sbb, set, set, seta, seta, setae, setae, setb, setb, setbe, setbe, setc, setc, sete, sete, setg, setg, setge, setge, setl, setl, setle, setle, setna, setna, setnae, setnae, setnb, setnb, setnbe, setnbe, setnc, setnc, setne, setne, setng, setng, setnge, setnge, setnl, setnl, setnle, setnle, setno, setno, setnp, setnp, setns, setns, setnz, setnz, seto, seto, setp, setp, setpe, setpe, setpo, setpo, sets, sets, setz, setz, sfence, shl, shl, shl, shl, shld, shld, shld, shld, shr, shr, shr, shr, shrd, shrd, shrd, shrd, shufps, shufps, sqrtpd, sqrtpd, sqrtps, sqrtps, sqrtsd, sqrtsd, sqrtss, sqrtss, stc, std, stmxcsr, sub, sub, sub, sub, sub, subpd, subpd, subps, subps, subsd, subsd, subss, subss, test, test, test, test, ucomisd, ucomisd, ucomiss, ucomiss, ud2, unpckhpd, unpckhpd, unpckhps, unpckhps, unpcklpd, unpcklpd, unpcklps, unpcklps, xadd, xadd, xchg, xchg, xchg, xor_, xor_, xor_, xor_, xor_, xorpd, xorpd, xorps, xorpsMethods inherited from class jnr.x86asm.SerializerCore
_emitJcc, _emitJcc, conditionToCMovCC, conditionToJCC, conditionToSetCC, emitX86, emitX86, emitX86, emitX86
-
Field Details
-
_buffer
-
_relocData
-
cpuInfo
-
_properties
private int _properties -
_trampolineSize
int _trampolineSizeSize of possible trampolines. -
_logger
-
cpu
-
I386
-
X86_64
-
nop1
private static final int[] nop1 -
nop2
private static final int[] nop2 -
nop3
private static final int[] nop3 -
nop4
private static final int[] nop4 -
nop5
private static final int[] nop5 -
nop6
private static final int[] nop6 -
nop7
private static final int[] nop7 -
nop8
private static final int[] nop8 -
nop9
private static final int[] nop9 -
nop10
private static final int[] nop10 -
nop11
private static final int[] nop11
-
-
Constructor Details
-
Assembler
-
-
Method Details
-
is64
boolean is64()- Specified by:
is64in 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 -
trampolineSize
int trampolineSize()Return size of all possible trampolines needed to successfuly generate relative jumps to absolute addresses. This value is only non-zero if jmp of call instructions were used with immediate operand (this means jump or call absolute address directly). Currently only _emitJmpOrCallReloc() method can increase trampoline size value. -
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) -
_emitSegmentPrefix
-
_emitImmediate
-
_emitRexR
void _emitRexR(int w, int opReg, int regCode) Emit REX prefix (64 bit mode only). -
_emitRexR
void _emitRexR(boolean w, int opReg, int regCode) -
_emitRexRM
Emit REX prefix (64 bit mode only). -
_emitRexRM
-
_emitModM
-
_emitX86Inl
void _emitX86Inl(int opCode, boolean i16bit, boolean rexw, int reg) -
_emitX86Inl
void _emitX86Inl(int opCode, boolean i16bit, int rexw, int reg) -
_emitModRM
-
_emitMod
void _emitMod(int m, int o, int r) Emit MODR/M byte. -
_emitSib
void _emitSib(int s, int i, int b) Emit SIB byte. -
_emitModR
void _emitModR(int opReg, int r) Emit Register / Register - calls _emitMod(3, opReg, r) -
_emitModR
Emit Register / Register - calls _emitMod(3, opReg, r.code()) -
_emitX86RM
-
_emitX86RM
-
_emitX86
- Specified by:
_emitX86in classSerializerCore
-
_emitFpu
void _emitFpu(int opCode) -
_emitFpuSTI
void _emitFpuSTI(int opCode, int sti) -
_emitFpuMEM
-
_emitMmu
-
_emitDisplacement
-
_emitJmpOrCallReloc
-
relocCode
-
align
public void align(long m)
-