VirtualBox

Changeset 105793 in vbox for trunk/src/VBox/Disassembler


Ignore:
Timestamp:
Aug 21, 2024 6:38:21 PM (8 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164505
Message:

Disassembler/ARMv8: Updates, decode br/blr instructions, add them to the testcase, bugref:10394

Location:
trunk/src/VBox/Disassembler
Files:
2 edited

Legend:

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

    r105790 r105793  
    381381
    382382
    383 /* RET/RETAA/RETAB */
    384 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64Ret)
    385     DIS_ARMV8_OP(0xd65f0000, "ret",            OP_ARMV8_A64_RET,        DISOPTYPE_HARMLESS),
    386     DIS_ARMV8_OP(0xd65f0800, "retaa",          OP_ARMV8_A64_RETAA,      DISOPTYPE_HARMLESS),
    387     DIS_ARMV8_OP(0xd65f0c00, "retab",          OP_ARMV8_A64_RETAB,      DISOPTYPE_HARMLESS),
    388 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS_1(g_ArmV8A64Ret, 0xfffffc1f /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
     383/* BR/BRAA/BRAAZ/BRAB/BRABZ/BLR/BLRAA/BLRAAZ/BLRAB/BLRABZ/RET/RETAA/RETAB */
     384DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64BrBlrRet)
     385    DIS_ARMV8_OP(0xd61f0000, "br",             OP_ARMV8_A64_BR,         DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     386    DIS_ARMV8_OP(0xd63f0000, "blr",            OP_ARMV8_A64_BLR,        DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     387    /** @todo All the FEAT_PAuth related branch instructions. */
     388    DIS_ARMV8_OP(0xd65f0000, "ret",            OP_ARMV8_A64_RET,        DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     389    DIS_ARMV8_OP(0xd65f0800, "retaa",          OP_ARMV8_A64_RETAA,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     390    DIS_ARMV8_OP(0xd65f0c00, "retab",          OP_ARMV8_A64_RETAB,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
     391DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS_1(g_ArmV8A64BrBlrRet, 0xfffffc1f /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
    389392                                            kDisArmV8OpcDecodeLookup, 0xfffffc1f, 0,
    390393                                            kDisArmv8OpParmGpr)
     
    399402/* Unconditional branch (register) instructions, we divide these instructions further based on the opc field. */
    400403DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(g_ArmV8A64UncondBrReg)
    401     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
    402     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
    403     DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64Ret),    /* RET/RETAA/RETAB */
     404    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64BrBlrRet),    /* BR/BRAA/BRAAZ/BRAB/BRABZ */
     405    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64BrBlrRet),    /* BLR/BLRAA/BLRAAZ/BLRAB/BLRABZ */
     406    DIS_ARMV8_DECODE_MAP_ENTRY(g_ArmV8A64BrBlrRet),    /* RET/RETAA/RETAB */
    404407    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
    405408    DIS_ARMV8_DECODE_MAP_INVALID_ENTRY,
  • trunk/src/VBox/Disassembler/testcase/tstDisasmArmv8-1-asm.S

    r105790 r105793  
    6969        ret x2
    7070        ret x15
     71        br  x15
     72        blr x15
    7173
    7274        ; System register access instructions
Note: See TracChangeset for help on using the changeset viewer.

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