757 lines
31 KiB
Java
757 lines
31 KiB
Java
// Capstone Java binding
|
|
// By Nguyen Anh Quynh & Dang Hoang Vu, 2013
|
|
|
|
import com.sun.jna.Structure;
|
|
import com.sun.jna.Pointer;
|
|
import com.sun.jna.Union;
|
|
import com.sun.jna.NativeLong;
|
|
|
|
import java.util.List;
|
|
import java.util.Arrays;
|
|
|
|
class Arm {
|
|
|
|
// ARM operand shift type
|
|
public static final int ARM_SFT_INVALID = 0;
|
|
public static final int ARM_SFT_ASR = 1;
|
|
public static final int ARM_SFT_LSL = 2;
|
|
public static final int ARM_SFT_LSR = 3;
|
|
public static final int ARM_SFT_ROR = 4;
|
|
public static final int ARM_SFT_RRX = 5;
|
|
public static final int ARM_SFT_ASR_REG = 6;
|
|
public static final int ARM_SFT_LSL_REG = 7;
|
|
public static final int ARM_SFT_LSR_REG = 8;
|
|
public static final int ARM_SFT_ROR_REG = 9;
|
|
public static final int ARM_SFT_RRX_REG = 10;
|
|
|
|
// ARM code condition type
|
|
public static final int ARM_CC_INVALID = 0;
|
|
public static final int ARM_CC_EQ = 1;
|
|
public static final int ARM_CC_NE = 2;
|
|
public static final int ARM_CC_HS = 3;
|
|
public static final int ARM_CC_LO = 4;
|
|
public static final int ARM_CC_MI = 5;
|
|
public static final int ARM_CC_PL = 6;
|
|
public static final int ARM_CC_VS = 7;
|
|
public static final int ARM_CC_VC = 8;
|
|
public static final int ARM_CC_HI = 9;
|
|
public static final int ARM_CC_LS = 10;
|
|
public static final int ARM_CC_GE = 11;
|
|
public static final int ARM_CC_LT = 12;
|
|
public static final int ARM_CC_GT = 13;
|
|
public static final int ARM_CC_LE = 14;
|
|
public static final int ARM_CC_AL = 15;
|
|
|
|
// Operand type
|
|
public static final int ARM_OP_INVALID = 0; // Uninitialized.
|
|
public static final int ARM_OP_REG = 1 ; // Register operand.
|
|
public static final int ARM_OP_CIMM = 2; // C-Immediate operand.
|
|
public static final int ARM_OP_PIMM = 3; // C-Immediate operand.
|
|
public static final int ARM_OP_IMM = 4 ; // Immediate operand.
|
|
public static final int ARM_OP_FP = 5 ; // Floating-Point immediate operand.
|
|
public static final int ARM_OP_MEM = 6 ; // Memory operand
|
|
|
|
public static class MemType extends Structure {
|
|
public int base;
|
|
public int index;
|
|
public int scale;
|
|
public long disp;
|
|
|
|
@Override
|
|
public List getFieldOrder() {
|
|
return Arrays.asList("base", "index", "scale", "disp");
|
|
}
|
|
}
|
|
|
|
public static class OpValue extends Union {
|
|
public int reg;
|
|
public long imm;
|
|
public double fp;
|
|
public MemType mem;
|
|
|
|
@Override
|
|
public List getFieldOrder() {
|
|
return Arrays.asList("reg", "imm", "fp", "mem");
|
|
}
|
|
}
|
|
|
|
public static class OpShift extends Structure {
|
|
public int type;
|
|
public int value;
|
|
|
|
@Override
|
|
public List getFieldOrder() {
|
|
return Arrays.asList("type","value");
|
|
}
|
|
}
|
|
|
|
public static class Operand extends Structure {
|
|
public OpShift shift;
|
|
public int type;
|
|
public OpValue value;
|
|
|
|
public void read() {
|
|
readField("type");
|
|
if (type == ARM_OP_MEM)
|
|
value.setType(MemType.class);
|
|
if (type == ARM_OP_FP)
|
|
value.setType(Double.TYPE);
|
|
if (type == ARM_OP_PIMM || type == ARM_OP_IMM || type == ARM_OP_CIMM)
|
|
value.setType(Long.TYPE);
|
|
if (type == ARM_OP_REG)
|
|
value.setType(Integer.TYPE);
|
|
if (type == ARM_OP_INVALID)
|
|
return;
|
|
readField("value");
|
|
readField("shift");
|
|
}
|
|
|
|
@Override
|
|
public List getFieldOrder() {
|
|
return Arrays.asList("shift", "type", "value");
|
|
}
|
|
}
|
|
|
|
public static class UnionOpInfo extends Capstone.UnionOpInfo {
|
|
public int cc;
|
|
public byte _update_flags;
|
|
public byte _writeback;
|
|
public byte op_count;
|
|
|
|
public Operand [] op = new Operand[32];
|
|
|
|
public UnionOpInfo(Pointer p){
|
|
super(p);
|
|
read();
|
|
}
|
|
|
|
public void read() {
|
|
readField("cc");
|
|
readField("_update_flags");
|
|
readField("_writeback");
|
|
readField("op_count");
|
|
op = new Operand[op_count];
|
|
readField("op");
|
|
}
|
|
|
|
@Override
|
|
public List getFieldOrder() {
|
|
return Arrays.asList("cc", "_update_flags", "_writeback", "op_count", "op");
|
|
}
|
|
}
|
|
|
|
public static class OpInfo extends Capstone.OpInfo {
|
|
public int cc;
|
|
public boolean update_flags;
|
|
public boolean writeback;
|
|
public Operand [] op = null;
|
|
|
|
public OpInfo(UnionOpInfo op_info) {
|
|
cc = op_info.cc;
|
|
update_flags = (op_info._update_flags > 0);
|
|
writeback = (op_info._writeback > 0);
|
|
if (op_info.op_count == 0) return;
|
|
op = op_info.op;
|
|
}
|
|
}
|
|
|
|
// ARM registers
|
|
public static final int ARM_REG_INVALID = 0;
|
|
public static final int ARM_REG_APSR = 1;
|
|
public static final int ARM_REG_APSR_NZCV = 2;
|
|
public static final int ARM_REG_CPSR = 3;
|
|
public static final int ARM_REG_FPEXC = 4;
|
|
public static final int ARM_REG_FPINST = 5;
|
|
public static final int ARM_REG_FPSCR = 6;
|
|
public static final int ARM_REG_FPSCR_NZCV = 7;
|
|
public static final int ARM_REG_FPSID = 8;
|
|
public static final int ARM_REG_ITSTATE = 9;
|
|
public static final int ARM_REG_LR = 10;
|
|
public static final int ARM_REG_PC = 11;
|
|
public static final int ARM_REG_SP = 12;
|
|
public static final int ARM_REG_SPSR = 13;
|
|
public static final int ARM_REG_D0 = 14;
|
|
public static final int ARM_REG_D1 = 15;
|
|
public static final int ARM_REG_D2 = 16;
|
|
public static final int ARM_REG_D3 = 17;
|
|
public static final int ARM_REG_D4 = 18;
|
|
public static final int ARM_REG_D5 = 19;
|
|
public static final int ARM_REG_D6 = 20;
|
|
public static final int ARM_REG_D7 = 21;
|
|
public static final int ARM_REG_D8 = 22;
|
|
public static final int ARM_REG_D9 = 23;
|
|
public static final int ARM_REG_D10 = 24;
|
|
public static final int ARM_REG_D11 = 25;
|
|
public static final int ARM_REG_D12 = 26;
|
|
public static final int ARM_REG_D13 = 27;
|
|
public static final int ARM_REG_D14 = 28;
|
|
public static final int ARM_REG_D15 = 29;
|
|
public static final int ARM_REG_D16 = 30;
|
|
public static final int ARM_REG_D17 = 31;
|
|
public static final int ARM_REG_D18 = 32;
|
|
public static final int ARM_REG_D19 = 33;
|
|
public static final int ARM_REG_D20 = 34;
|
|
public static final int ARM_REG_D21 = 35;
|
|
public static final int ARM_REG_D22 = 36;
|
|
public static final int ARM_REG_D23 = 37;
|
|
public static final int ARM_REG_D24 = 38;
|
|
public static final int ARM_REG_D25 = 39;
|
|
public static final int ARM_REG_D26 = 40;
|
|
public static final int ARM_REG_D27 = 41;
|
|
public static final int ARM_REG_D28 = 42;
|
|
public static final int ARM_REG_D29 = 43;
|
|
public static final int ARM_REG_D30 = 44;
|
|
public static final int ARM_REG_D31 = 45;
|
|
public static final int ARM_REG_FPINST2 = 46;
|
|
public static final int ARM_REG_MVFR0 = 47;
|
|
public static final int ARM_REG_MVFR1 = 48;
|
|
public static final int ARM_REG_Q0 = 49;
|
|
public static final int ARM_REG_Q1 = 50;
|
|
public static final int ARM_REG_Q2 = 51;
|
|
public static final int ARM_REG_Q3 = 52;
|
|
public static final int ARM_REG_Q4 = 53;
|
|
public static final int ARM_REG_Q5 = 54;
|
|
public static final int ARM_REG_Q6 = 55;
|
|
public static final int ARM_REG_Q7 = 56;
|
|
public static final int ARM_REG_Q8 = 57;
|
|
public static final int ARM_REG_Q9 = 58;
|
|
public static final int ARM_REG_Q10 = 59;
|
|
public static final int ARM_REG_Q11 = 60;
|
|
public static final int ARM_REG_Q12 = 61;
|
|
public static final int ARM_REG_Q13 = 62;
|
|
public static final int ARM_REG_Q14 = 63;
|
|
public static final int ARM_REG_Q15 = 64;
|
|
public static final int ARM_REG_R0 = 65;
|
|
public static final int ARM_REG_R1 = 66;
|
|
public static final int ARM_REG_R2 = 67;
|
|
public static final int ARM_REG_R3 = 68;
|
|
public static final int ARM_REG_R4 = 69;
|
|
public static final int ARM_REG_R5 = 70;
|
|
public static final int ARM_REG_R6 = 71;
|
|
public static final int ARM_REG_R7 = 72;
|
|
public static final int ARM_REG_R8 = 73;
|
|
public static final int ARM_REG_R9 = 74;
|
|
public static final int ARM_REG_R10 = 75;
|
|
public static final int ARM_REG_R11 = 76;
|
|
public static final int ARM_REG_R12 = 77;
|
|
public static final int ARM_REG_S0 = 78;
|
|
public static final int ARM_REG_S1 = 79;
|
|
public static final int ARM_REG_S2 = 80;
|
|
public static final int ARM_REG_S3 = 81;
|
|
public static final int ARM_REG_S4 = 82;
|
|
public static final int ARM_REG_S5 = 83;
|
|
public static final int ARM_REG_S6 = 84;
|
|
public static final int ARM_REG_S7 = 85;
|
|
public static final int ARM_REG_S8 = 86;
|
|
public static final int ARM_REG_S9 = 87;
|
|
public static final int ARM_REG_S10 = 88;
|
|
public static final int ARM_REG_S11 = 89;
|
|
public static final int ARM_REG_S12 = 90;
|
|
public static final int ARM_REG_S13 = 91;
|
|
public static final int ARM_REG_S14 = 92;
|
|
public static final int ARM_REG_S15 = 93;
|
|
public static final int ARM_REG_S16 = 94;
|
|
public static final int ARM_REG_S17 = 95;
|
|
public static final int ARM_REG_S18 = 96;
|
|
public static final int ARM_REG_S19 = 97;
|
|
public static final int ARM_REG_S20 = 98;
|
|
public static final int ARM_REG_S21 = 99;
|
|
public static final int ARM_REG_S22 = 100;
|
|
public static final int ARM_REG_S23 = 101;
|
|
public static final int ARM_REG_S24 = 102;
|
|
public static final int ARM_REG_S25 = 103;
|
|
public static final int ARM_REG_S26 = 104;
|
|
public static final int ARM_REG_S27 = 105;
|
|
public static final int ARM_REG_S28 = 106;
|
|
public static final int ARM_REG_S29 = 107;
|
|
public static final int ARM_REG_S30 = 108;
|
|
public static final int ARM_REG_S31 = 109;
|
|
|
|
// ARM instructions
|
|
public static final int ARM_INS_INVALID = 0;
|
|
public static final int ARM_INS_ADC = 1;
|
|
public static final int ARM_INS_ADD = 2;
|
|
public static final int ARM_INS_ADR = 3;
|
|
public static final int ARM_INS_AESD_8 = 4;
|
|
public static final int ARM_INS_AESE_8 = 5;
|
|
public static final int ARM_INS_AESIMC_8 = 6;
|
|
public static final int ARM_INS_AESMC_8 = 7;
|
|
public static final int ARM_INS_AND = 8;
|
|
public static final int ARM_INS_BFC = 9;
|
|
public static final int ARM_INS_BFI = 10;
|
|
public static final int ARM_INS_BIC = 11;
|
|
public static final int ARM_INS_BKPT = 12;
|
|
public static final int ARM_INS_BL = 13;
|
|
public static final int ARM_INS_BLX = 14;
|
|
public static final int ARM_INS_BX = 15;
|
|
public static final int ARM_INS_BXJ = 16;
|
|
public static final int ARM_INS_B = 17;
|
|
public static final int ARM_INS_CDP = 18;
|
|
public static final int ARM_INS_CDP2 = 19;
|
|
public static final int ARM_INS_CLREX = 20;
|
|
public static final int ARM_INS_CLZ = 21;
|
|
public static final int ARM_INS_CMN = 22;
|
|
public static final int ARM_INS_CMP = 23;
|
|
public static final int ARM_INS_CPS = 24;
|
|
public static final int ARM_INS_CRC32B = 25;
|
|
public static final int ARM_INS_CRC32CB = 26;
|
|
public static final int ARM_INS_CRC32CH = 27;
|
|
public static final int ARM_INS_CRC32CW = 28;
|
|
public static final int ARM_INS_CRC32H = 29;
|
|
public static final int ARM_INS_CRC32W = 30;
|
|
public static final int ARM_INS_DBG = 31;
|
|
public static final int ARM_INS_DMB = 32;
|
|
public static final int ARM_INS_DSB = 33;
|
|
public static final int ARM_INS_EOR = 34;
|
|
public static final int ARM_INS_VMOV = 35;
|
|
public static final int ARM_INS_FLDMDBX = 36;
|
|
public static final int ARM_INS_FLDMIAX = 37;
|
|
public static final int ARM_INS_VMRS = 38;
|
|
public static final int ARM_INS_FSTMDBX = 39;
|
|
public static final int ARM_INS_FSTMIAX = 40;
|
|
public static final int ARM_INS_HINT = 41;
|
|
public static final int ARM_INS_HLT = 42;
|
|
public static final int ARM_INS_ISB = 43;
|
|
public static final int ARM_INS_LDA = 44;
|
|
public static final int ARM_INS_LDAB = 45;
|
|
public static final int ARM_INS_LDAEX = 46;
|
|
public static final int ARM_INS_LDAEXB = 47;
|
|
public static final int ARM_INS_LDAEXD = 48;
|
|
public static final int ARM_INS_LDAEXH = 49;
|
|
public static final int ARM_INS_LDAH = 50;
|
|
public static final int ARM_INS_LDC2L = 51;
|
|
public static final int ARM_INS_LDC2 = 52;
|
|
public static final int ARM_INS_LDCL = 53;
|
|
public static final int ARM_INS_LDC = 54;
|
|
public static final int ARM_INS_LDMDA = 55;
|
|
public static final int ARM_INS_LDMDB = 56;
|
|
public static final int ARM_INS_LDM = 57;
|
|
public static final int ARM_INS_LDMIB = 58;
|
|
public static final int ARM_INS_LDRBT = 59;
|
|
public static final int ARM_INS_LDRB = 60;
|
|
public static final int ARM_INS_LDRD = 61;
|
|
public static final int ARM_INS_LDREX = 62;
|
|
public static final int ARM_INS_LDREXB = 63;
|
|
public static final int ARM_INS_LDREXD = 64;
|
|
public static final int ARM_INS_LDREXH = 65;
|
|
public static final int ARM_INS_LDRH = 66;
|
|
public static final int ARM_INS_LDRHT = 67;
|
|
public static final int ARM_INS_LDRSB = 68;
|
|
public static final int ARM_INS_LDRSBT = 69;
|
|
public static final int ARM_INS_LDRSH = 70;
|
|
public static final int ARM_INS_LDRSHT = 71;
|
|
public static final int ARM_INS_LDRT = 72;
|
|
public static final int ARM_INS_LDR = 73;
|
|
public static final int ARM_INS_MCR = 74;
|
|
public static final int ARM_INS_MCR2 = 75;
|
|
public static final int ARM_INS_MCRR = 76;
|
|
public static final int ARM_INS_MCRR2 = 77;
|
|
public static final int ARM_INS_MLA = 78;
|
|
public static final int ARM_INS_MLS = 79;
|
|
public static final int ARM_INS_MOV = 80;
|
|
public static final int ARM_INS_MOVT = 81;
|
|
public static final int ARM_INS_MOVW = 82;
|
|
public static final int ARM_INS_MRC = 83;
|
|
public static final int ARM_INS_MRC2 = 84;
|
|
public static final int ARM_INS_MRRC = 85;
|
|
public static final int ARM_INS_MRRC2 = 86;
|
|
public static final int ARM_INS_MRS = 87;
|
|
public static final int ARM_INS_MSR = 88;
|
|
public static final int ARM_INS_MUL = 89;
|
|
public static final int ARM_INS_MVN = 90;
|
|
public static final int ARM_INS_ORR = 91;
|
|
public static final int ARM_INS_PKHBT = 92;
|
|
public static final int ARM_INS_PKHTB = 93;
|
|
public static final int ARM_INS_PLDW = 94;
|
|
public static final int ARM_INS_PLD = 95;
|
|
public static final int ARM_INS_PLI = 96;
|
|
public static final int ARM_INS_QADD = 97;
|
|
public static final int ARM_INS_QADD16 = 98;
|
|
public static final int ARM_INS_QADD8 = 99;
|
|
public static final int ARM_INS_QASX = 100;
|
|
public static final int ARM_INS_QDADD = 101;
|
|
public static final int ARM_INS_QDSUB = 102;
|
|
public static final int ARM_INS_QSAX = 103;
|
|
public static final int ARM_INS_QSUB = 104;
|
|
public static final int ARM_INS_QSUB16 = 105;
|
|
public static final int ARM_INS_QSUB8 = 106;
|
|
public static final int ARM_INS_RBIT = 107;
|
|
public static final int ARM_INS_REV = 108;
|
|
public static final int ARM_INS_REV16 = 109;
|
|
public static final int ARM_INS_REVSH = 110;
|
|
public static final int ARM_INS_RFEDA = 111;
|
|
public static final int ARM_INS_RFEDB = 112;
|
|
public static final int ARM_INS_RFEIA = 113;
|
|
public static final int ARM_INS_RFEIB = 114;
|
|
public static final int ARM_INS_RSB = 115;
|
|
public static final int ARM_INS_RSC = 116;
|
|
public static final int ARM_INS_SADD16 = 117;
|
|
public static final int ARM_INS_SADD8 = 118;
|
|
public static final int ARM_INS_SASX = 119;
|
|
public static final int ARM_INS_SBC = 120;
|
|
public static final int ARM_INS_SBFX = 121;
|
|
public static final int ARM_INS_SDIV = 122;
|
|
public static final int ARM_INS_SEL = 123;
|
|
public static final int ARM_INS_SETEND = 124;
|
|
public static final int ARM_INS_SHA1C_32 = 125;
|
|
public static final int ARM_INS_SHA1H_32 = 126;
|
|
public static final int ARM_INS_SHA1M_32 = 127;
|
|
public static final int ARM_INS_SHA1P_32 = 128;
|
|
public static final int ARM_INS_SHA1SU0_32 = 129;
|
|
public static final int ARM_INS_SHA1SU1_32 = 130;
|
|
public static final int ARM_INS_SHA256H_32 = 131;
|
|
public static final int ARM_INS_SHA256H2_32 = 132;
|
|
public static final int ARM_INS_SHA256SU0_32 = 133;
|
|
public static final int ARM_INS_SHA256SU1_32 = 134;
|
|
public static final int ARM_INS_SHADD16 = 135;
|
|
public static final int ARM_INS_SHADD8 = 136;
|
|
public static final int ARM_INS_SHASX = 137;
|
|
public static final int ARM_INS_SHSAX = 138;
|
|
public static final int ARM_INS_SHSUB16 = 139;
|
|
public static final int ARM_INS_SHSUB8 = 140;
|
|
public static final int ARM_INS_SMC = 141;
|
|
public static final int ARM_INS_SMLABB = 142;
|
|
public static final int ARM_INS_SMLABT = 143;
|
|
public static final int ARM_INS_SMLAD = 144;
|
|
public static final int ARM_INS_SMLADX = 145;
|
|
public static final int ARM_INS_SMLAL = 146;
|
|
public static final int ARM_INS_SMLALBB = 147;
|
|
public static final int ARM_INS_SMLALBT = 148;
|
|
public static final int ARM_INS_SMLALD = 149;
|
|
public static final int ARM_INS_SMLALDX = 150;
|
|
public static final int ARM_INS_SMLALTB = 151;
|
|
public static final int ARM_INS_SMLALTT = 152;
|
|
public static final int ARM_INS_SMLATB = 153;
|
|
public static final int ARM_INS_SMLATT = 154;
|
|
public static final int ARM_INS_SMLAWB = 155;
|
|
public static final int ARM_INS_SMLAWT = 156;
|
|
public static final int ARM_INS_SMLSD = 157;
|
|
public static final int ARM_INS_SMLSDX = 158;
|
|
public static final int ARM_INS_SMLSLD = 159;
|
|
public static final int ARM_INS_SMLSLDX = 160;
|
|
public static final int ARM_INS_SMMLA = 161;
|
|
public static final int ARM_INS_SMMLAR = 162;
|
|
public static final int ARM_INS_SMMLS = 163;
|
|
public static final int ARM_INS_SMMLSR = 164;
|
|
public static final int ARM_INS_SMMUL = 165;
|
|
public static final int ARM_INS_SMMULR = 166;
|
|
public static final int ARM_INS_SMUAD = 167;
|
|
public static final int ARM_INS_SMUADX = 168;
|
|
public static final int ARM_INS_SMULBB = 169;
|
|
public static final int ARM_INS_SMULBT = 170;
|
|
public static final int ARM_INS_SMULL = 171;
|
|
public static final int ARM_INS_SMULTB = 172;
|
|
public static final int ARM_INS_SMULTT = 173;
|
|
public static final int ARM_INS_SMULWB = 174;
|
|
public static final int ARM_INS_SMULWT = 175;
|
|
public static final int ARM_INS_SMUSD = 176;
|
|
public static final int ARM_INS_SMUSDX = 177;
|
|
public static final int ARM_INS_SRSDA = 178;
|
|
public static final int ARM_INS_SRSDB = 179;
|
|
public static final int ARM_INS_SRSIA = 180;
|
|
public static final int ARM_INS_SRSIB = 181;
|
|
public static final int ARM_INS_SSAT = 182;
|
|
public static final int ARM_INS_SSAT16 = 183;
|
|
public static final int ARM_INS_SSAX = 184;
|
|
public static final int ARM_INS_SSUB16 = 185;
|
|
public static final int ARM_INS_SSUB8 = 186;
|
|
public static final int ARM_INS_STC2L = 187;
|
|
public static final int ARM_INS_STC2 = 188;
|
|
public static final int ARM_INS_STCL = 189;
|
|
public static final int ARM_INS_STC = 190;
|
|
public static final int ARM_INS_STL = 191;
|
|
public static final int ARM_INS_STLB = 192;
|
|
public static final int ARM_INS_STLEX = 193;
|
|
public static final int ARM_INS_STLEXB = 194;
|
|
public static final int ARM_INS_STLEXD = 195;
|
|
public static final int ARM_INS_STLEXH = 196;
|
|
public static final int ARM_INS_STLH = 197;
|
|
public static final int ARM_INS_STMDA = 198;
|
|
public static final int ARM_INS_STMDB = 199;
|
|
public static final int ARM_INS_STM = 200;
|
|
public static final int ARM_INS_STMIB = 201;
|
|
public static final int ARM_INS_STRBT = 202;
|
|
public static final int ARM_INS_STRB = 203;
|
|
public static final int ARM_INS_STRD = 204;
|
|
public static final int ARM_INS_STREX = 205;
|
|
public static final int ARM_INS_STREXB = 206;
|
|
public static final int ARM_INS_STREXD = 207;
|
|
public static final int ARM_INS_STREXH = 208;
|
|
public static final int ARM_INS_STRH = 209;
|
|
public static final int ARM_INS_STRHT = 210;
|
|
public static final int ARM_INS_STRT = 211;
|
|
public static final int ARM_INS_STR = 212;
|
|
public static final int ARM_INS_SUB = 213;
|
|
public static final int ARM_INS_SVC = 214;
|
|
public static final int ARM_INS_SWP = 215;
|
|
public static final int ARM_INS_SWPB = 216;
|
|
public static final int ARM_INS_SXTAB = 217;
|
|
public static final int ARM_INS_SXTAB16 = 218;
|
|
public static final int ARM_INS_SXTAH = 219;
|
|
public static final int ARM_INS_SXTB = 220;
|
|
public static final int ARM_INS_SXTB16 = 221;
|
|
public static final int ARM_INS_SXTH = 222;
|
|
public static final int ARM_INS_TEQ = 223;
|
|
public static final int ARM_INS_TRAP = 224;
|
|
public static final int ARM_INS_TST = 225;
|
|
public static final int ARM_INS_UADD16 = 226;
|
|
public static final int ARM_INS_UADD8 = 227;
|
|
public static final int ARM_INS_UASX = 228;
|
|
public static final int ARM_INS_UBFX = 229;
|
|
public static final int ARM_INS_UDIV = 230;
|
|
public static final int ARM_INS_UHADD16 = 231;
|
|
public static final int ARM_INS_UHADD8 = 232;
|
|
public static final int ARM_INS_UHASX = 233;
|
|
public static final int ARM_INS_UHSAX = 234;
|
|
public static final int ARM_INS_UHSUB16 = 235;
|
|
public static final int ARM_INS_UHSUB8 = 236;
|
|
public static final int ARM_INS_UMAAL = 237;
|
|
public static final int ARM_INS_UMLAL = 238;
|
|
public static final int ARM_INS_UMULL = 239;
|
|
public static final int ARM_INS_UQADD16 = 240;
|
|
public static final int ARM_INS_UQADD8 = 241;
|
|
public static final int ARM_INS_UQASX = 242;
|
|
public static final int ARM_INS_UQSAX = 243;
|
|
public static final int ARM_INS_UQSUB16 = 244;
|
|
public static final int ARM_INS_UQSUB8 = 245;
|
|
public static final int ARM_INS_USAD8 = 246;
|
|
public static final int ARM_INS_USADA8 = 247;
|
|
public static final int ARM_INS_USAT = 248;
|
|
public static final int ARM_INS_USAT16 = 249;
|
|
public static final int ARM_INS_USAX = 250;
|
|
public static final int ARM_INS_USUB16 = 251;
|
|
public static final int ARM_INS_USUB8 = 252;
|
|
public static final int ARM_INS_UXTAB = 253;
|
|
public static final int ARM_INS_UXTAB16 = 254;
|
|
public static final int ARM_INS_UXTAH = 255;
|
|
public static final int ARM_INS_UXTB = 256;
|
|
public static final int ARM_INS_UXTB16 = 257;
|
|
public static final int ARM_INS_UXTH = 258;
|
|
public static final int ARM_INS_VABAL = 259;
|
|
public static final int ARM_INS_VABA = 260;
|
|
public static final int ARM_INS_VABDL = 261;
|
|
public static final int ARM_INS_VABD = 262;
|
|
public static final int ARM_INS_VABS = 263;
|
|
public static final int ARM_INS_VACGE = 264;
|
|
public static final int ARM_INS_VACGT = 265;
|
|
public static final int ARM_INS_VADD = 266;
|
|
public static final int ARM_INS_VADDHN = 267;
|
|
public static final int ARM_INS_VADDL = 268;
|
|
public static final int ARM_INS_VADDW = 269;
|
|
public static final int ARM_INS_VAND = 270;
|
|
public static final int ARM_INS_VBIC = 271;
|
|
public static final int ARM_INS_VBIF = 272;
|
|
public static final int ARM_INS_VBIT = 273;
|
|
public static final int ARM_INS_VBSL = 274;
|
|
public static final int ARM_INS_VCEQ = 275;
|
|
public static final int ARM_INS_VCGE = 276;
|
|
public static final int ARM_INS_VCGT = 277;
|
|
public static final int ARM_INS_VCLE = 278;
|
|
public static final int ARM_INS_VCLS = 279;
|
|
public static final int ARM_INS_VCLT = 280;
|
|
public static final int ARM_INS_VCLZ = 281;
|
|
public static final int ARM_INS_VCMP = 282;
|
|
public static final int ARM_INS_VCMPE = 283;
|
|
public static final int ARM_INS_VCNT = 284;
|
|
public static final int ARM_INS_VCVTA_S32_F32 = 285;
|
|
public static final int ARM_INS_VCVTA_U32_F32 = 286;
|
|
public static final int ARM_INS_VCVTA_S32_F64 = 287;
|
|
public static final int ARM_INS_VCVTA_U32_F64 = 288;
|
|
public static final int ARM_INS_VCVTB = 289;
|
|
public static final int ARM_INS_VCVT = 290;
|
|
public static final int ARM_INS_VCVTM_S32_F32 = 291;
|
|
public static final int ARM_INS_VCVTM_U32_F32 = 292;
|
|
public static final int ARM_INS_VCVTM_S32_F64 = 293;
|
|
public static final int ARM_INS_VCVTM_U32_F64 = 294;
|
|
public static final int ARM_INS_VCVTN_S32_F32 = 295;
|
|
public static final int ARM_INS_VCVTN_U32_F32 = 296;
|
|
public static final int ARM_INS_VCVTN_S32_F64 = 297;
|
|
public static final int ARM_INS_VCVTN_U32_F64 = 298;
|
|
public static final int ARM_INS_VCVTP_S32_F32 = 299;
|
|
public static final int ARM_INS_VCVTP_U32_F32 = 300;
|
|
public static final int ARM_INS_VCVTP_S32_F64 = 301;
|
|
public static final int ARM_INS_VCVTP_U32_F64 = 302;
|
|
public static final int ARM_INS_VCVTT = 303;
|
|
public static final int ARM_INS_VDIV = 304;
|
|
public static final int ARM_INS_VDUP = 305;
|
|
public static final int ARM_INS_VEOR = 306;
|
|
public static final int ARM_INS_VEXT = 307;
|
|
public static final int ARM_INS_VFMA = 308;
|
|
public static final int ARM_INS_VFMS = 309;
|
|
public static final int ARM_INS_VFNMA = 310;
|
|
public static final int ARM_INS_VFNMS = 311;
|
|
public static final int ARM_INS_VHADD = 312;
|
|
public static final int ARM_INS_VHSUB = 313;
|
|
public static final int ARM_INS_VLD1 = 314;
|
|
public static final int ARM_INS_VLD2 = 315;
|
|
public static final int ARM_INS_VLD3 = 316;
|
|
public static final int ARM_INS_VLD4 = 317;
|
|
public static final int ARM_INS_VLDMDB = 318;
|
|
public static final int ARM_INS_VLDMIA = 319;
|
|
public static final int ARM_INS_VLDR = 320;
|
|
public static final int ARM_INS_VMAXNM_F64 = 321;
|
|
public static final int ARM_INS_VMAXNM_F32 = 322;
|
|
public static final int ARM_INS_VMAX = 323;
|
|
public static final int ARM_INS_VMINNM_F64 = 324;
|
|
public static final int ARM_INS_VMINNM_F32 = 325;
|
|
public static final int ARM_INS_VMIN = 326;
|
|
public static final int ARM_INS_VMLA = 327;
|
|
public static final int ARM_INS_VMLAL = 328;
|
|
public static final int ARM_INS_VMLS = 329;
|
|
public static final int ARM_INS_VMLSL = 330;
|
|
public static final int ARM_INS_VMOVL = 331;
|
|
public static final int ARM_INS_VMOVN = 332;
|
|
public static final int ARM_INS_VMSR = 333;
|
|
public static final int ARM_INS_VMUL = 334;
|
|
public static final int ARM_INS_VMULL_P64 = 335;
|
|
public static final int ARM_INS_VMULL = 336;
|
|
public static final int ARM_INS_VMVN = 337;
|
|
public static final int ARM_INS_VNEG = 338;
|
|
public static final int ARM_INS_VNMLA = 339;
|
|
public static final int ARM_INS_VNMLS = 340;
|
|
public static final int ARM_INS_VNMUL = 341;
|
|
public static final int ARM_INS_VORN = 342;
|
|
public static final int ARM_INS_VORR = 343;
|
|
public static final int ARM_INS_VPADAL = 344;
|
|
public static final int ARM_INS_VPADDL = 345;
|
|
public static final int ARM_INS_VPADD = 346;
|
|
public static final int ARM_INS_VPMAX = 347;
|
|
public static final int ARM_INS_VPMIN = 348;
|
|
public static final int ARM_INS_VQABS = 349;
|
|
public static final int ARM_INS_VQADD = 350;
|
|
public static final int ARM_INS_VQDMLAL = 351;
|
|
public static final int ARM_INS_VQDMLSL = 352;
|
|
public static final int ARM_INS_VQDMULH = 353;
|
|
public static final int ARM_INS_VQDMULL = 354;
|
|
public static final int ARM_INS_VQMOVUN = 355;
|
|
public static final int ARM_INS_VQMOVN = 356;
|
|
public static final int ARM_INS_VQNEG = 357;
|
|
public static final int ARM_INS_VQRDMULH = 358;
|
|
public static final int ARM_INS_VQRSHL = 359;
|
|
public static final int ARM_INS_VQRSHRN = 360;
|
|
public static final int ARM_INS_VQRSHRUN = 361;
|
|
public static final int ARM_INS_VQSHL = 362;
|
|
public static final int ARM_INS_VQSHLU = 363;
|
|
public static final int ARM_INS_VQSHRN = 364;
|
|
public static final int ARM_INS_VQSHRUN = 365;
|
|
public static final int ARM_INS_VQSUB = 366;
|
|
public static final int ARM_INS_VRADDHN = 367;
|
|
public static final int ARM_INS_VRECPE = 368;
|
|
public static final int ARM_INS_VRECPS = 369;
|
|
public static final int ARM_INS_VREV16 = 370;
|
|
public static final int ARM_INS_VREV32 = 371;
|
|
public static final int ARM_INS_VREV64 = 372;
|
|
public static final int ARM_INS_VRHADD = 373;
|
|
public static final int ARM_INS_VRINTA_F64 = 374;
|
|
public static final int ARM_INS_VRINTA_F32 = 375;
|
|
public static final int ARM_INS_VRINTM_F64 = 376;
|
|
public static final int ARM_INS_VRINTM_F32 = 377;
|
|
public static final int ARM_INS_VRINTN_F64 = 378;
|
|
public static final int ARM_INS_VRINTN_F32 = 379;
|
|
public static final int ARM_INS_VRINTP_F64 = 380;
|
|
public static final int ARM_INS_VRINTP_F32 = 381;
|
|
public static final int ARM_INS_VRINTR = 382;
|
|
public static final int ARM_INS_VRINTX = 383;
|
|
public static final int ARM_INS_VRINTX_F32 = 384;
|
|
public static final int ARM_INS_VRINTZ = 385;
|
|
public static final int ARM_INS_VRINTZ_F32 = 386;
|
|
public static final int ARM_INS_VRSHL = 387;
|
|
public static final int ARM_INS_VRSHRN = 388;
|
|
public static final int ARM_INS_VRSHR = 389;
|
|
public static final int ARM_INS_VRSQRTE = 390;
|
|
public static final int ARM_INS_VRSQRTS = 391;
|
|
public static final int ARM_INS_VRSRA = 392;
|
|
public static final int ARM_INS_VRSUBHN = 393;
|
|
public static final int ARM_INS_VSELEQ_F64 = 394;
|
|
public static final int ARM_INS_VSELEQ_F32 = 395;
|
|
public static final int ARM_INS_VSELGE_F64 = 396;
|
|
public static final int ARM_INS_VSELGE_F32 = 397;
|
|
public static final int ARM_INS_VSELGT_F64 = 398;
|
|
public static final int ARM_INS_VSELGT_F32 = 399;
|
|
public static final int ARM_INS_VSELVS_F64 = 400;
|
|
public static final int ARM_INS_VSELVS_F32 = 401;
|
|
public static final int ARM_INS_VSHLL = 402;
|
|
public static final int ARM_INS_VSHL = 403;
|
|
public static final int ARM_INS_VSHRN = 404;
|
|
public static final int ARM_INS_VSHR = 405;
|
|
public static final int ARM_INS_VSLI = 406;
|
|
public static final int ARM_INS_VSQRT = 407;
|
|
public static final int ARM_INS_VSRA = 408;
|
|
public static final int ARM_INS_VSRI = 409;
|
|
public static final int ARM_INS_VST1 = 410;
|
|
public static final int ARM_INS_VST2 = 411;
|
|
public static final int ARM_INS_VST3 = 412;
|
|
public static final int ARM_INS_VST4 = 413;
|
|
public static final int ARM_INS_VSTMDB = 414;
|
|
public static final int ARM_INS_VSTMIA = 415;
|
|
public static final int ARM_INS_VSTR = 416;
|
|
public static final int ARM_INS_VSUB = 417;
|
|
public static final int ARM_INS_VSUBHN = 418;
|
|
public static final int ARM_INS_VSUBL = 419;
|
|
public static final int ARM_INS_VSUBW = 420;
|
|
public static final int ARM_INS_VSWP = 421;
|
|
public static final int ARM_INS_VTBL = 422;
|
|
public static final int ARM_INS_VTBX = 423;
|
|
public static final int ARM_INS_VCVTR = 424;
|
|
public static final int ARM_INS_VTRN = 425;
|
|
public static final int ARM_INS_VTST = 426;
|
|
public static final int ARM_INS_VUZP = 427;
|
|
public static final int ARM_INS_VZIP = 428;
|
|
public static final int ARM_INS_ADDW = 429;
|
|
public static final int ARM_INS_ADR_W = 430;
|
|
public static final int ARM_INS_ASR = 431;
|
|
public static final int ARM_INS_DCPS1 = 432;
|
|
public static final int ARM_INS_DCPS2 = 433;
|
|
public static final int ARM_INS_DCPS3 = 434;
|
|
public static final int ARM_INS_IT = 435;
|
|
public static final int ARM_INS_LSL = 436;
|
|
public static final int ARM_INS_LSR = 437;
|
|
public static final int ARM_INS_ORN = 438;
|
|
public static final int ARM_INS_ROR = 439;
|
|
public static final int ARM_INS_RRX = 440;
|
|
public static final int ARM_INS_SUBW = 441;
|
|
public static final int ARM_INS_TBB = 442;
|
|
public static final int ARM_INS_TBH = 443;
|
|
public static final int ARM_INS_CBNZ = 444;
|
|
public static final int ARM_INS_CBZ = 445;
|
|
public static final int ARM_INS_NOP = 446;
|
|
public static final int ARM_INS_POP = 447;
|
|
public static final int ARM_INS_PUSH = 448;
|
|
public static final int ARM_INS_SEV = 449;
|
|
public static final int ARM_INS_SEVL = 450;
|
|
public static final int ARM_INS_WFE = 451;
|
|
public static final int ARM_INS_WFI = 452;
|
|
public static final int ARM_INS_YIELD = 453;
|
|
|
|
// ARM group of instructions
|
|
public static final int ARM_GRP_INVALID = 0;
|
|
public static final int ARM_GRP_CRYPTO = 1;
|
|
public static final int ARM_GRP_DATABARRIER = 2;
|
|
public static final int ARM_GRP_DIVIDE = 3;
|
|
public static final int ARM_GRP_FPARMV8 = 4;
|
|
public static final int ARM_GRP_MULTPRO = 5;
|
|
public static final int ARM_GRP_NEON = 6;
|
|
public static final int ARM_GRP_T2EXTRACTPACK = 7;
|
|
public static final int ARM_GRP_THUMB2DSP = 8;
|
|
public static final int ARM_GRP_TRUSTZONE = 9;
|
|
public static final int ARM_GRP_V4T = 10;
|
|
public static final int ARM_GRP_V5T = 11;
|
|
public static final int ARM_GRP_V5TE = 12;
|
|
public static final int ARM_GRP_V6 = 13;
|
|
public static final int ARM_GRP_V6T2 = 14;
|
|
public static final int ARM_GRP_V7 = 15;
|
|
public static final int ARM_GRP_V8 = 16;
|
|
public static final int ARM_GRP_VFP2 = 17;
|
|
public static final int ARM_GRP_VFP3 = 18;
|
|
public static final int ARM_GRP_VFP4 = 19;
|
|
public static final int ARM_GRP_ARM = 20;
|
|
public static final int ARM_GRP_MCLASS = 21;
|
|
public static final int ARM_GRP_NOTMCLASS = 22;
|
|
public static final int ARM_GRP_THUMB = 23;
|
|
public static final int ARM_GRP_THUMB1ONLY = 24;
|
|
public static final int ARM_GRP_THUMB2 = 25;
|
|
public static final int ARM_GRP_PREV8 = 26;
|
|
public static final int ARM_GRP_FPVMLX = 27;
|
|
public static final int ARM_GRP_MULOPS = 28;
|
|
}
|