VirtualBox

Ignore:
Timestamp:
Aug 19, 2024 4:57:30 PM (6 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164436
Message:

Disassembler/ARMv8: Refactoring and updates, among others make it possible to decode system register names in mrs/msr instructions, bugref:10388

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Disassembler/DisasmTables-armv8-a64.cpp

    r100046 r105731  
    5959/* UDF */
    6060DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_aArmV8A64InsnRsvd)
    61     DIS_ARMV8_OP(0xffff0000, 0x00000000, "udf %I" ,                 OP_ARMV8_A64_UDF,       DISOPTYPE_INVALID)
     61    DIS_ARMV8_OP(0xffff0000, 0x00000000, "udf" ,            OP_ARMV8_A64_UDF,       DISOPTYPE_INVALID)
    6262DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_aArmV8A64InsnRsvd, 0 /*fClass*/,
    6363                                          kDisArmV8OpcDecodeNop, 0xffff0000, 16)
    64     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,    0, 16),
     64    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,    0, 16, 0 /*idxParam*/),
    6565    DIS_ARMV8_INSN_PARAM_NONE,
    6666    DIS_ARMV8_INSN_PARAM_NONE,
     
    7171/* ADR/ADRP */
    7272DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Adr)
    73     DIS_ARMV8_OP(0x9f000000, 0x10000000, "adr %X,%I" ,              OP_ARMV8_A64_ADR,       DISOPTYPE_HARMLESS),
    74     DIS_ARMV8_OP(0x9f000000, 0x90000000, "adrp %X,%I" ,             OP_ARMV8_A64_ADRP,      DISOPTYPE_HARMLESS)
     73    DIS_ARMV8_OP(0x9f000000, 0x10000000, "adr" ,            OP_ARMV8_A64_ADR,       DISOPTYPE_HARMLESS),
     74    DIS_ARMV8_OP(0x9f000000, 0x90000000, "adrp" ,           OP_ARMV8_A64_ADRP,      DISOPTYPE_HARMLESS)
    7575DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Adr, DISARMV8INSNCLASS_F_FORCED_64BIT,
    7676                                          kDisArmV8OpcDecodeNop, RT_BIT_32(31), 31)
    77     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,    0, 5),
    78     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmAdr, 0, 0),
     77    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,    0, 5, 0 /*idxParam*/),
     78    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmAdr, 0, 0, 1 /*idxParam*/),
    7979    DIS_ARMV8_INSN_PARAM_NONE,
    8080    DIS_ARMV8_INSN_PARAM_NONE
     
    8484/* ADD/ADDS/SUB/SUBS */
    8585DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64AddSubImm)
    86     DIS_ARMV8_OP(0x7f800000, 0x11000000, "add %X,%X,%I" ,           OP_ARMV8_A64_ADD,       DISOPTYPE_HARMLESS),
    87     DIS_ARMV8_OP(0x7f800000, 0x31000000, "adds %X,%X,%I" ,          OP_ARMV8_A64_ADDS,      DISOPTYPE_HARMLESS),
    88     DIS_ARMV8_OP(0x7f800000, 0x51000000, "sub %X,%X,%I" ,           OP_ARMV8_A64_SUB,       DISOPTYPE_HARMLESS),
    89     DIS_ARMV8_OP(0x7f800000, 0x71000000, "subs %X,%X,%I" ,          OP_ARMV8_A64_SUBS,      DISOPTYPE_HARMLESS),
     86    DIS_ARMV8_OP(0x7f800000, 0x11000000, "add" ,            OP_ARMV8_A64_ADD,       DISOPTYPE_HARMLESS),
     87    DIS_ARMV8_OP(0x7f800000, 0x31000000, "adds" ,           OP_ARMV8_A64_ADDS,      DISOPTYPE_HARMLESS),
     88    DIS_ARMV8_OP(0x7f800000, 0x51000000, "sub" ,            OP_ARMV8_A64_SUB,       DISOPTYPE_HARMLESS),
     89    DIS_ARMV8_OP(0x7f800000, 0x71000000, "subs" ,           OP_ARMV8_A64_SUBS,      DISOPTYPE_HARMLESS),
    9090DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64AddSubImm, DISARMV8INSNCLASS_F_SF,
    9191                                          kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29)
    92     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,    0, 5),
    93     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,    5, 5),
    94     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,  10, 12),
     92    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,    0, 5, 0 /*idxParam*/),
     93    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,    5, 5, 1 /*idxParam*/),
     94    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,  10, 12, 2 /*idxParam*/),
    9595    DIS_ARMV8_INSN_PARAM_NONE
    9696DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
     
    9999/* AND/ORR/EOR/ANDS */
    100100DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64LogicalImm)
    101     DIS_ARMV8_OP(0x7f800000, 0x12000000, "and %X,%X,%I" ,           OP_ARMV8_A64_AND,       DISOPTYPE_HARMLESS),
    102     DIS_ARMV8_OP(0x7f800000, 0x32000000, "orr %X,%X,%I" ,           OP_ARMV8_A64_ORR,       DISOPTYPE_HARMLESS),
    103     DIS_ARMV8_OP(0x7f800000, 0x52000000, "eor %X,%X,%I" ,           OP_ARMV8_A64_EOR,       DISOPTYPE_HARMLESS),
    104     DIS_ARMV8_OP(0x7f800000, 0x72000000, "ands %X,%X,%I" ,          OP_ARMV8_A64_ANDS,      DISOPTYPE_HARMLESS),
     101    DIS_ARMV8_OP(0x7f800000, 0x12000000, "and" ,            OP_ARMV8_A64_AND,       DISOPTYPE_HARMLESS),
     102    DIS_ARMV8_OP(0x7f800000, 0x32000000, "orr" ,            OP_ARMV8_A64_ORR,       DISOPTYPE_HARMLESS),
     103    DIS_ARMV8_OP(0x7f800000, 0x52000000, "eor" ,            OP_ARMV8_A64_EOR,       DISOPTYPE_HARMLESS),
     104    DIS_ARMV8_OP(0x7f800000, 0x72000000, "ands" ,           OP_ARMV8_A64_ANDS,      DISOPTYPE_HARMLESS),
    105105DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64LogicalImm, DISARMV8INSNCLASS_F_SF,
    106106                                          kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29)
    107     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
    108     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            5,  6),
    109     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmsImmrN,     10, 13),
     107    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     108    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            5,  6, 1 /*idxParam*/),
     109    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmsImmrN,     10, 13, 2 /*idxParam*/),
    110110    DIS_ARMV8_INSN_PARAM_NONE
    111111DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
     
    114114/* MOVN/MOVZ/MOVK */
    115115DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64MoveWide)
    116     DIS_ARMV8_OP(0x7f800000, 0x12800000, "movn %X,%I LSL %I",       OP_ARMV8_A64_MOVN,      DISOPTYPE_HARMLESS),
     116    DIS_ARMV8_OP(0x7f800000, 0x12800000, "movn",            OP_ARMV8_A64_MOVN,      DISOPTYPE_HARMLESS),
    117117    INVALID_OPCODE,
    118     DIS_ARMV8_OP(0x7f800000, 0x52800000, "movz %X,%I LSL %I" ,      OP_ARMV8_A64_MOVZ,      DISOPTYPE_HARMLESS),
    119     DIS_ARMV8_OP(0x7f800000, 0x72800000, "movk %X,%I LSL %I" ,      OP_ARMV8_A64_MOVK,      DISOPTYPE_HARMLESS),
     118    DIS_ARMV8_OP(0x7f800000, 0x52800000, "movz" ,           OP_ARMV8_A64_MOVZ,      DISOPTYPE_HARMLESS),
     119    DIS_ARMV8_OP(0x7f800000, 0x72800000, "movk" ,           OP_ARMV8_A64_MOVK,      DISOPTYPE_HARMLESS),
    120120DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64MoveWide, DISARMV8INSNCLASS_F_SF,
    121121                                          kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29)
    122     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
    123     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            5, 16),
    124     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseHw,            21,  2),
     122    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     123    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            5, 16, 1 /*idxParam*/),
     124    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseHw,            21,  2, 2 /*idxParam*/),
    125125    DIS_ARMV8_INSN_PARAM_NONE
    126126DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
     
    129129/* SBFM/BFM/UBFM */
    130130DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Bitfield)
    131     DIS_ARMV8_OP(0x7f800000, 0x13000000, "sbfm %X,%X,%I",           OP_ARMV8_A64_SBFM,      DISOPTYPE_HARMLESS),
    132     DIS_ARMV8_OP(0x7f800000, 0x33000000, "bfm  %X,%X,%I",           OP_ARMV8_A64_BFM,       DISOPTYPE_HARMLESS),
    133     DIS_ARMV8_OP(0x7f800000, 0x23000000, "ubfm %X,%X,%I",           OP_ARMV8_A64_UBFM,      DISOPTYPE_HARMLESS),
     131    DIS_ARMV8_OP(0x7f800000, 0x13000000, "sbfm",            OP_ARMV8_A64_SBFM,      DISOPTYPE_HARMLESS),
     132    DIS_ARMV8_OP(0x7f800000, 0x33000000, "bfm",             OP_ARMV8_A64_BFM,       DISOPTYPE_HARMLESS),
     133    DIS_ARMV8_OP(0x7f800000, 0x23000000, "ubfm",            OP_ARMV8_A64_UBFM,      DISOPTYPE_HARMLESS),
    134134    INVALID_OPCODE,
    135135DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Bitfield, DISARMV8INSNCLASS_F_SF | DISARMV8INSNCLASS_F_N_FORCED_1_ON_64BIT,
    136136                                          kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29)
    137     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
    138     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            5,  5),
    139     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmsImmrN,     10, 13),
     137    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     138    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            5,  5, 1 /*idxParam*/),
     139    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmsImmrN,     10, 13, 2 /*idxParam*/),
    140140    DIS_ARMV8_INSN_PARAM_NONE
    141141DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
     
    170170/* B.cond/BC.cond */
    171171DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64CondBr)
    172     DIS_ARMV8_OP(0xff000010, 0x54000000, "b.%C   %J",               OP_ARMV8_A64_B,         DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW),
    173     DIS_ARMV8_OP(0xff000010, 0x54000010, "bc.%C  %J" ,              OP_ARMV8_A64_BC,        DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW),
     172    DIS_ARMV8_OP(0xff000010, 0x54000000, "b.",              OP_ARMV8_A64_B,         DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW),
     173    DIS_ARMV8_OP(0xff000010, 0x54000010, "bc." ,            OP_ARMV8_A64_BC,        DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW),
    174174DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64CondBr, 0 /*fClass*/,
    175175                                          kDisArmV8OpcDecodeNop, RT_BIT_32(4), 4)
    176     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseCond,           0,  4),
    177     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmRel,         5, 19),
     176    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseCond,           0,  4, DIS_ARMV8_INSN_PARAM_UNSET),
     177    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmRel,         5, 19, 1 /*idxParam*/),
    178178    DIS_ARMV8_INSN_PARAM_NONE,
    179179    DIS_ARMV8_INSN_PARAM_NONE
     
    183183/* SVC/HVC/SMC/BRK/HLT/TCANCEL/DCPS1/DCPS2/DCPS3 */
    184184DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Excp)
    185     DIS_ARMV8_OP(0xffe0001f, 0xd4000001, "svc       %I",            OP_ARMV8_A64_SVC,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
    186     DIS_ARMV8_OP(0xffe0001f, 0xd4000002, "hvc       %I",            OP_ARMV8_A64_HVC,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT | DISOPTYPE_PRIVILEGED),
    187     DIS_ARMV8_OP(0xffe0001f, 0xd4000003, "smc       %I",            OP_ARMV8_A64_SMC,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT | DISOPTYPE_PRIVILEGED),
    188     DIS_ARMV8_OP(0xffe0001f, 0xd4200000, "brk       %I",            OP_ARMV8_A64_BRK,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
    189     DIS_ARMV8_OP(0xffe0001f, 0xd4400000, "hlt       %I",            OP_ARMV8_A64_HLT,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
    190     DIS_ARMV8_OP(0xffe0001f, 0xd4600000, "tcancel   %I",            OP_ARMV8_A64_TCANCEL,   DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT), /* FEAT_TME */
    191     DIS_ARMV8_OP(0xffe0001f, 0xd4a00001, "dcps1     %I",            OP_ARMV8_A64_DCPS1,     DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
    192     DIS_ARMV8_OP(0xffe0001f, 0xd4a00002, "dcps2     %I",            OP_ARMV8_A64_DCPS2,     DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
    193     DIS_ARMV8_OP(0xffe0001f, 0xd4a00003, "dcps3     %I",            OP_ARMV8_A64_DCPS3,     DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
     185    DIS_ARMV8_OP(0xffe0001f, 0xd4000001, "svc",             OP_ARMV8_A64_SVC,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
     186    DIS_ARMV8_OP(0xffe0001f, 0xd4000002, "hvc",             OP_ARMV8_A64_HVC,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT | DISOPTYPE_PRIVILEGED),
     187    DIS_ARMV8_OP(0xffe0001f, 0xd4000003, "smc",             OP_ARMV8_A64_SMC,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT | DISOPTYPE_PRIVILEGED),
     188    DIS_ARMV8_OP(0xffe0001f, 0xd4200000, "brk",             OP_ARMV8_A64_BRK,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
     189    DIS_ARMV8_OP(0xffe0001f, 0xd4400000, "hlt",             OP_ARMV8_A64_HLT,       DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
     190    DIS_ARMV8_OP(0xffe0001f, 0xd4600000, "tcancel",         OP_ARMV8_A64_TCANCEL,   DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT), /* FEAT_TME */
     191    DIS_ARMV8_OP(0xffe0001f, 0xd4a00001, "dcps1",           OP_ARMV8_A64_DCPS1,     DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
     192    DIS_ARMV8_OP(0xffe0001f, 0xd4a00002, "dcps2",           OP_ARMV8_A64_DCPS2,     DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
     193    DIS_ARMV8_OP(0xffe0001f, 0xd4a00003, "dcps3",           OP_ARMV8_A64_DCPS3,     DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT),
    194194DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Excp, 0 /*fClass*/,
    195195                                          kDisArmV8OpcDecodeLookup, 0xffe0001f, 0)
    196     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            5, 16),
     196    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            5, 16, 0 /*idxParam*/),
    197197    DIS_ARMV8_INSN_PARAM_NONE,
    198198    DIS_ARMV8_INSN_PARAM_NONE,
     
    203203/* WFET/WFIT */
    204204DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64SysReg)
    205     DIS_ARMV8_OP(0xffffffe0, 0xd5031000, "wfet   %X",  OP_ARMV8_A64_WFET,      DISOPTYPE_HARMLESS), /* FEAT_WFxT */
    206     DIS_ARMV8_OP(0xffffffe0, 0x54000010, "wfit   %X" , OP_ARMV8_A64_WFIT,      DISOPTYPE_HARMLESS), /* FEAT_WFxT */
     205    DIS_ARMV8_OP(0xffffffe0, 0xd5031000, "wfet",            OP_ARMV8_A64_WFET,      DISOPTYPE_HARMLESS), /* FEAT_WFxT */
     206    DIS_ARMV8_OP(0xffffffe0, 0x54000010, "wfit" ,          OP_ARMV8_A64_WFIT,      DISOPTYPE_HARMLESS), /* FEAT_WFxT */
    207207DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64SysReg, DISARMV8INSNCLASS_F_FORCED_64BIT,
    208208                                          kDisArmV8OpcDecodeNop, 0xfe0, 5)
    209     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
     209    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    210210    DIS_ARMV8_INSN_PARAM_NONE,
    211211    DIS_ARMV8_INSN_PARAM_NONE,
     
    216216/* Various hint instructions */
    217217DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Hints)
    218     DIS_ARMV8_OP(0xffffffff, 0xd503201f, "nop",        OP_ARMV8_A64_NOP,       DISOPTYPE_HARMLESS),
    219     DIS_ARMV8_OP(0xffffffff, 0xd503203f, "yield",      OP_ARMV8_A64_YIELD,     DISOPTYPE_HARMLESS),
    220     DIS_ARMV8_OP(0xffffffff, 0xd503205f, "wfe",        OP_ARMV8_A64_WFE,       DISOPTYPE_HARMLESS),
    221     DIS_ARMV8_OP(0xffffffff, 0xd503207f, "wfi",        OP_ARMV8_A64_WFI,       DISOPTYPE_HARMLESS),
    222     DIS_ARMV8_OP(0xffffffff, 0xd503209f, "sev",        OP_ARMV8_A64_SEV,       DISOPTYPE_HARMLESS),
    223     DIS_ARMV8_OP(0xffffffff, 0xd50320bf, "sevl",       OP_ARMV8_A64_SEVL,      DISOPTYPE_HARMLESS),
    224     DIS_ARMV8_OP(0xffffffff, 0xd50320df, "dgh",        OP_ARMV8_A64_DGH,       DISOPTYPE_HARMLESS), /* FEAT_DGH */
    225     DIS_ARMV8_OP(0xffffffff, 0xd50320ff, "xpaclri",    OP_ARMV8_A64_XPACLRI,   DISOPTYPE_HARMLESS), /* FEAT_PAuth */
     218    DIS_ARMV8_OP(0xffffffff, 0xd503201f, "nop",             OP_ARMV8_A64_NOP,       DISOPTYPE_HARMLESS),
     219    DIS_ARMV8_OP(0xffffffff, 0xd503203f, "yield",           OP_ARMV8_A64_YIELD,     DISOPTYPE_HARMLESS),
     220    DIS_ARMV8_OP(0xffffffff, 0xd503205f, "wfe",             OP_ARMV8_A64_WFE,       DISOPTYPE_HARMLESS),
     221    DIS_ARMV8_OP(0xffffffff, 0xd503207f, "wfi",             OP_ARMV8_A64_WFI,       DISOPTYPE_HARMLESS),
     222    DIS_ARMV8_OP(0xffffffff, 0xd503209f, "sev",             OP_ARMV8_A64_SEV,       DISOPTYPE_HARMLESS),
     223    DIS_ARMV8_OP(0xffffffff, 0xd50320bf, "sevl",            OP_ARMV8_A64_SEVL,      DISOPTYPE_HARMLESS),
     224    DIS_ARMV8_OP(0xffffffff, 0xd50320df, "dgh",             OP_ARMV8_A64_DGH,       DISOPTYPE_HARMLESS), /* FEAT_DGH */
     225    DIS_ARMV8_OP(0xffffffff, 0xd50320ff, "xpaclri",         OP_ARMV8_A64_XPACLRI,   DISOPTYPE_HARMLESS), /* FEAT_PAuth */
    226226    /** @todo */
    227227DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Hints, 0 /*fClass*/,
     
    235235
    236236/* CLREX */
    237 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Clrex)
    238     DIS_ARMV8_OP(0xfffff0ff, 0xd503305f, "clrex %I",   OP_ARMV8_A64_CLREX,     DISOPTYPE_HARMLESS),
    239 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Clrex, 0 /*fClass*/,
    240                                           kDisArmV8OpcDecodeNop, 0, 0)
    241     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            8,  4),
     237DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64DecBarriers)
     238    DIS_ARMV8_OP(0xfffff0ff, 0xd503304f, "clrex",           OP_ARMV8_A64_CLREX,     DISOPTYPE_HARMLESS),
     239    DIS_ARMV8_OP(0xfffff0ff, 0xd50330bf, "dmb",             OP_ARMV8_A64_DMB,       DISOPTYPE_HARMLESS),
     240DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64DecBarriers, 0 /*fClass*/,
     241                                          kDisArmV8OpcDecodeNop, RT_BIT_32(5), 5)
     242    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            8,  4, 0 /*idxParam*/),
    242243    DIS_ARMV8_INSN_PARAM_NONE,
    243244    DIS_ARMV8_INSN_PARAM_NONE,
     
    249250DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(g_ArmV8A64DecodeBarriers)
    250251    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
    251     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,             /** @todo DSB - Encoding */
    252     DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64Clrex),    /* CLREX */
    253     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,             /** @todo TCOMMIT */
    254     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,             /** @todo DSB - Encoding */
    255     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,             /** @todo DMB */
    256     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,             /** @todo ISB */
    257     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY              /** @todo SB */
     252    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,                     /** @todo DSB - Encoding */
     253    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64DecBarriers),      /* CLREX */
     254    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,                     /** @todo TCOMMIT */
     255    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,                     /** @todo DSB - Encoding */
     256    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64DecBarriers),      /* DMB */
     257    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,                     /** @todo ISB */
     258    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY                      /** @todo SB */
    258259DIS_ARMV8_DECODE_MAP_DEFINE_END(g_ArmV8A64DecodeBarriers, RT_BIT_32(5) | RT_BIT_32(6) | RT_BIT_32(7), 5);
    259260
     
    261262/* MSR (and potentially CFINV,XAFLAG,AXFLAG) */
    262263DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64PState)
    263     DIS_ARMV8_OP(0xfffff0ff, 0xd503305f, "msr %P, %I", OP_ARMV8_A64_MSR,       DISOPTYPE_PRIVILEGED),
     264    DIS_ARMV8_OP(0xfffff0ff, 0xd503305f, "msr",            OP_ARMV8_A64_MSR,       DISOPTYPE_PRIVILEGED),
    264265DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64PState, 0 /*fClass*/,
    265266                                          kDisArmV8OpcDecodeNop, 0, 0)
    266     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParsePState,         0,  0), /* This is special for the MSR instruction. */
    267     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            8,  4), /* CRm field encodes the immediate value */
     267    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParsePState,         0,  0, 0 /*idxParam*/), /* This is special for the MSR instruction. */
     268    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            8,  4, 1 /*idxParam*/), /* CRm field encodes the immediate value */
    268269    DIS_ARMV8_INSN_PARAM_NONE,
    269270    DIS_ARMV8_INSN_PARAM_NONE
     
    273274/* TSTART/TTEST */
    274275DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64SysResult)
    275     DIS_ARMV8_OP(0xfffffffe, 0xd5233060, "tstart %X",  OP_ARMV8_A64_TSTART,    DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED),  /* FEAT_TME */
    276     DIS_ARMV8_OP(0xfffffffe, 0xd5233160, "ttest  %X",  OP_ARMV8_A64_TTEST,     DISOPTYPE_HARMLESS),                         /* FEAT_TME */
     276    DIS_ARMV8_OP(0xfffffffe, 0xd5233060, "tstart",          OP_ARMV8_A64_TSTART,    DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED),  /* FEAT_TME */
     277    DIS_ARMV8_OP(0xfffffffe, 0xd5233160, "ttest",           OP_ARMV8_A64_TTEST,     DISOPTYPE_HARMLESS),                         /* FEAT_TME */
    277278DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64SysResult, DISARMV8INSNCLASS_F_FORCED_64BIT,
    278279                                          kDisArmV8OpcDecodeNop, RT_BIT_32(8) | RT_BIT_32(9) | RT_BIT_32(10) | RT_BIT_32(11), 8)
    279     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
     280    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    280281    DIS_ARMV8_INSN_PARAM_NONE,
    281282    DIS_ARMV8_INSN_PARAM_NONE,
     
    286287/* SYS */
    287288DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Sys)
    288     DIS_ARMV8_OP(0xfff80000, 0xd5080000, "sys   %I, %Cn, %Cm, %I, %X",   OP_ARMV8_A64_SYS,       DISOPTYPE_HARMLESS),
     289    DIS_ARMV8_OP(0xfff80000, 0xd5080000, "sys",             OP_ARMV8_A64_SYS,       DISOPTYPE_HARMLESS),
    289290DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Sys, DISARMV8INSNCLASS_F_FORCED_64BIT,
    290291                                          kDisArmV8OpcDecodeNop, 0, 0)
    291     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,           16,  3),
    292     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseCRnCRm,         8,  8),
    293     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            5,  3),
    294     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5)
     292    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,           16,  3, 0 /*idxParam*/),
     293    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseCRnCRm,         8,  8, 1 /*idxParam*/),
     294    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            5,  3, 2 /*idxParam*/),
     295    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 3 /*idxParam*/)
    295296DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
    296297
     
    298299/* SYSL */
    299300DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64SysL)
    300     DIS_ARMV8_OP(0xfff80000, 0xd5280000, "sysl  %X, %I, %Cn, %Cm, %I",   OP_ARMV8_A64_SYSL,      DISOPTYPE_HARMLESS),
     301    DIS_ARMV8_OP(0xfff80000, 0xd5280000, "sysl",            OP_ARMV8_A64_SYSL,      DISOPTYPE_HARMLESS),
    301302DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64SysL, DISARMV8INSNCLASS_F_FORCED_64BIT,
    302303                                          kDisArmV8OpcDecodeNop, 0, 0)
    303     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
    304     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,           16,  3),
    305     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseCRnCRm,         8,  8),
    306     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            5,  3)
     304    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     305    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,           16,  3, 1 /*idxParam*/),
     306    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseCRnCRm,         8,  8, 2 /*idxParam*/),
     307    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,            5,  3, 3 /*idxParam*/)
    307308DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
    308309
     
    310311/* MSR */
    311312DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Msr)
    312     DIS_ARMV8_OP(0xfff00000, 0xd5080000, "msr   %S, %X",   OP_ARMV8_A64_MSR,       DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED),
     313    DIS_ARMV8_OP(0xfff00000, 0xd5100000, "msr",             OP_ARMV8_A64_MSR,       DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED),
    313314DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Msr, DISARMV8INSNCLASS_F_FORCED_64BIT,
    314315                                          kDisArmV8OpcDecodeNop, 0, 0)
    315     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseSysReg,         5, 15),
    316     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
     316    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseSysReg,         5, 15, 0 /*idxParam*/),
     317    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 1 /*idxParam*/),
    317318    DIS_ARMV8_INSN_PARAM_NONE,
    318319    DIS_ARMV8_INSN_PARAM_NONE
     
    322323/* MRS */
    323324DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Mrs)
    324     DIS_ARMV8_OP(0xfff00000, 0xd5280000, "mrs   %X, %S",   OP_ARMV8_A64_MRS,       DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED),
     325    DIS_ARMV8_OP(0xfff00000, 0xd5300000, "mrs",             OP_ARMV8_A64_MRS,       DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED),
    325326DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Mrs, DISARMV8INSNCLASS_F_FORCED_64BIT,
    326327                                          kDisArmV8OpcDecodeNop, 0, 0)
    327     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
    328     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseSysReg,         5, 15),
     328    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     329    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseSysReg,         5, 15, 1 /*idxParam*/),
     330    DIS_ARMV8_INSN_PARAM_NONE,
     331    DIS_ARMV8_INSN_PARAM_NONE
     332DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
     333
     334
     335/* RET/RETAA/RETAB */
     336DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Ret)
     337    DIS_ARMV8_OP(0xfffffc1f, 0xd65f0000, "ret",            OP_ARMV8_A64_RET,        DISOPTYPE_HARMLESS),
     338    DIS_ARMV8_OP(0xfffffc1f, 0xd65f0800, "retaa",          OP_ARMV8_A64_RETAA,      DISOPTYPE_HARMLESS),
     339    DIS_ARMV8_OP(0xfffffc1f, 0xd65f0c00, "retab",          OP_ARMV8_A64_RETAB,      DISOPTYPE_HARMLESS),
     340DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64Ret, DISARMV8INSNCLASS_F_FORCED_64BIT,
     341                                          kDisArmV8OpcDecodeLookup, 0xfffffc1f, 0)
     342    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            5,  5, 0 /*idxParam*/),
     343    DIS_ARMV8_INSN_PARAM_NONE,
    329344    DIS_ARMV8_INSN_PARAM_NONE,
    330345    DIS_ARMV8_INSN_PARAM_NONE
     
    336351    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
    337352    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
    338     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
     353    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64Ret),    /* RET/RETAA/RETAB */
    339354    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
    340355    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
     
    355370/* B/BL */
    356371DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64UncondBrImm)
    357     DIS_ARMV8_OP(0xfc000000, 0x14000000, "b   %J",         OP_ARMV8_A64_B,         DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    358     DIS_ARMV8_OP(0xfc000000, 0x94000000, "bl  %J",         OP_ARMV8_A64_BL,        DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     372    DIS_ARMV8_OP(0xfc000000, 0x14000000, "b",              OP_ARMV8_A64_B,         DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     373    DIS_ARMV8_OP(0xfc000000, 0x94000000, "bl",             OP_ARMV8_A64_BL,        DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    359374DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64UncondBrImm, 0 /*fClass*/,
    360375                                          kDisArmV8OpcDecodeNop, RT_BIT_32(31), 31)
    361     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmRel,         0,  26),
     376    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmRel,         0,  26, 0 /*idxParam*/),
    362377    DIS_ARMV8_INSN_PARAM_NONE,
    363378    DIS_ARMV8_INSN_PARAM_NONE,
     
    368383/* CBZ/CBNZ */
    369384DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64CmpBrImm)
    370     DIS_ARMV8_OP(0x7f000000, 0x34000000, "cbz   %X, %J",   OP_ARMV8_A64_CBZ,       DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    371     DIS_ARMV8_OP(0x7f000000, 0x35000000, "cbnz  %X, %J",   OP_ARMV8_A64_CBNZ,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     385    DIS_ARMV8_OP(0x7f000000, 0x34000000, "cbz",             OP_ARMV8_A64_CBZ,       DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     386    DIS_ARMV8_OP(0x7f000000, 0x35000000, "cbnz",            OP_ARMV8_A64_CBNZ,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    372387DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64CmpBrImm, DISARMV8INSNCLASS_F_SF,
    373388                                          kDisArmV8OpcDecodeNop, RT_BIT_32(24), 24)
    374     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
    375     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmRel,         5, 19),
     389    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     390    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmRel,         5, 19, 1 /*idxParam*/),
    376391    DIS_ARMV8_INSN_PARAM_NONE,
    377392    DIS_ARMV8_INSN_PARAM_NONE
     
    381396/* TBZ/TBNZ */
    382397DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64TestBrImm)
    383     DIS_ARMV8_OP(0x7f000000, 0x36000000, "tbz   %X, %I, %J",   OP_ARMV8_A64_TBZ,       DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    384     DIS_ARMV8_OP(0x7f000000, 0x37000000, "tbnz  %X, %I, %J",   OP_ARMV8_A64_TBNZ,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     398    DIS_ARMV8_OP(0x7f000000, 0x36000000, "tbz",             OP_ARMV8_A64_TBZ,       DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     399    DIS_ARMV8_OP(0x7f000000, 0x37000000, "tbnz",            OP_ARMV8_A64_TBNZ,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    385400DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64TestBrImm, DISARMV8INSNCLASS_F_SF,
    386401                                          kDisArmV8OpcDecodeNop, RT_BIT_32(24), 24)
    387     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5),
    388     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,           19,  5),
    389     DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmRel,         5, 14),
     402    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     403    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImm,           19,  5, 1 /*idxParam*/),
     404    DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseImmRel,         5, 14, 2 /*idxParam*/),
    390405    DIS_ARMV8_INSN_PARAM_NONE
    391406DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
     
    420435    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
    421436DIS_ARMV8_DECODE_MAP_DEFINE_END(g_ArmV8A64DataProcReg, RT_BIT_32(24), 24);
     437
     438
     439DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64LdSt)
     440    DIS_ARMV8_OP(0xbfc00000, 0xb9400000, "ldr",             OP_ARMV8_A64_LDR,       DISOPTYPE_HARMLESS),
     441    DIS_ARMV8_OP(0xbfc00000, 0xb9000000, "str",             OP_ARMV8_A64_STR,       DISOPTYPE_HARMLESS),
     442DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64LdSt, 0 /*fClass*/,
     443                                          kDisArmV8OpcDecodeLookup, 0xbfc00000, 0)
     444    DIS_ARMV8_INSN_PARAM_CREATE(   kDisParmParseIs32Bit,       30,  1, DIS_ARMV8_INSN_PARAM_UNSET),
     445    DIS_ARMV8_INSN_PARAM_CREATE(   kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     446    DIS_ARMV8_INSN_PARAM_CREATE_EX(kDisParmParseReg,            5,  5, 1 /*idxParam*/, DIS_ARMV8_INSN_PARAM_F_ADDR_BEGIN),
     447    DIS_ARMV8_INSN_PARAM_CREATE_EX(kDisParmParseImm,           10, 12, 2 /*idxParam*/, DIS_ARMV8_INSN_PARAM_F_ADDR_END),
     448DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END;
    422449
    423450
     
    473500    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64BrExcpSys),                /* Branches / Exception generation and system instructions. */
    474501    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64BrExcpSys),                /* Branches / Exception generation and system instructions. */
    475     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,                             /* Load/Stores. */
     502    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64LdSt),                     /* Load/Stores. */
    476503    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64DataProcReg),              /* Data processing (register) (see op1 in C4.1.68). */
    477504    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,                             /* Load/Stores. */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette