Changeset 105790 in vbox
- Timestamp:
- Aug 21, 2024 6:09:33 PM (6 months ago)
- Location:
- trunk/src/VBox/Disassembler
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Disassembler/DisasmTables-armv8-a64.cpp
r105789 r105790 86 86 87 87 88 /* ADD/ADDS/SUB/SUBS */88 /* ADD/ADDS/SUB/SUBS - shifted immediate variant */ 89 89 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64AddSubImm) 90 90 DIS_ARMV8_OP(0x11000000, "add" , OP_ARMV8_A64_ADD, DISOPTYPE_HARMLESS), … … 100 100 DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseSh12, 22, 1, 2 /*idxParam*/), 101 101 DIS_ARMV8_INSN_PARAM_NONE 102 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END; 103 104 105 /* ADD/ADDS/SUB/SUBS - shifted register variant */ 106 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_aArmV8A64InsnAddSubShiftReg) 107 DIS_ARMV8_OP(0x0b000000, "add" , OP_ARMV8_A64_ADD, DISOPTYPE_HARMLESS), 108 DIS_ARMV8_OP(0x2b000000, "adds" , OP_ARMV8_A64_ADDS, DISOPTYPE_HARMLESS), 109 DIS_ARMV8_OP(0x4b000000, "sub" , OP_ARMV8_A64_SUB, DISOPTYPE_HARMLESS), 110 DIS_ARMV8_OP(0x6b000000, "subs" , OP_ARMV8_A64_SUBS, DISOPTYPE_HARMLESS), 111 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS_3(g_aArmV8A64InsnAddSubShiftReg, 0x7f200000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, 112 kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29, 113 kDisArmv8OpParmGpr, kDisArmv8OpParmGpr, kDisArmv8OpParmGpr) 114 DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 115 DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg, 5, 5, 1 /*idxParam*/), 116 DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseReg, 16, 5, 2 /*idxParam*/), 117 DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseShift, 22, 2, 2 /*idxParam*/), 118 DIS_ARMV8_INSN_PARAM_CREATE(kDisParmParseShiftAmount, 10, 6, 2 /*idxParam*/) 102 119 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END; 103 120 … … 505 522 506 523 524 525 DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(g_aArmV8A64InsnAddSubExtReg) 526 DIS_ARMV8_DECODE_MAP_INVALID_ENTRY, 527 DIS_ARMV8_DECODE_MAP_DEFINE_END(g_aArmV8A64InsnAddSubExtReg, RT_BIT_32(24), 24); 528 529 530 DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(g_aArmV8A64InsnAddSubShiftExtReg) 531 DIS_ARMV8_DECODE_MAP_ENTRY(g_aArmV8A64InsnAddSubShiftReg), /* Add/Subtract (shifted register) */ 532 DIS_ARMV8_DECODE_MAP_ENTRY(g_aArmV8A64InsnAddSubExtReg), /* Add/Subtract (extended register) */ 533 DIS_ARMV8_DECODE_MAP_DEFINE_END(g_aArmV8A64InsnAddSubShiftExtReg, RT_BIT_32(21), 21); 534 535 507 536 DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(g_ArmV8A64LogicalAddSubReg) 508 537 DIS_ARMV8_DECODE_MAP_ENTRY(g_aArmV8A64InsnLogShiftRegN), /* Logical (shifted register) */ 509 DIS_ARMV8_DECODE_MAP_ INVALID_ENTRY,/* Add/subtract (shifted/extended register) */538 DIS_ARMV8_DECODE_MAP_ENTRY(g_aArmV8A64InsnAddSubShiftExtReg), /* Add/subtract (shifted/extended register) */ 510 539 DIS_ARMV8_DECODE_MAP_DEFINE_END(g_ArmV8A64LogicalAddSubReg, RT_BIT_32(24), 24); 511 540 -
trunk/src/VBox/Disassembler/testcase/tstDisasmArmv8-1-asm.S
r105785 r105790 75 75 76 76 ; Arithmetic instructions 77 add x0, x0, #0x0 78 add w0, w1, #0x10000 79 add w0, w1, #65536 77 add x0, x0, #0x0 78 add x0, x1, #0x10000 79 add x0, x1, #65536 80 add x0, x0, x0 81 add x0, x1, x29 82 add x0, x1, x28, LSL #1 83 add x0, x1, x28, LSL #63 84 add x0, x1, x28, LSR #1 85 add x0, x1, x28, LSR #63 86 add x0, x1, x28, ASR #1 87 add x0, x1, x28, ASR #63 88 ; ROR is reserved 89 90 add w0, w1, #0x0 91 add w0, w1, #0x10000 92 add w0, w1, #65536 93 add w0, w1, w29 94 add w0, w1, w28, LSL #1 95 add w0, w1, w28, LSL #31 96 add w0, w1, w28, LSR #1 97 add w0, w1, w28, LSR #31 98 add w0, w1, w28, ASR #1 99 add w0, w1, w28, ASR #31 100 ; ROR is reserved 80 101 81 102 adds x0, x0, #0x0 103 adds x0, x1, #0x10000 104 adds x0, x1, #65536 105 adds x0, x0, x0 106 adds x0, x1, x29 107 adds x0, x1, x28, LSL #1 108 adds x0, x1, x28, LSL #63 109 adds x0, x1, x28, LSR #1 110 adds x0, x1, x28, LSR #63 111 adds x0, x1, x28, ASR #1 112 adds x0, x1, x28, ASR #63 113 ; ROR is reserved 114 115 adds w0, w1, #0x0 82 116 adds w0, w1, #0x10000 83 117 adds w0, w1, #65536 84 85 sub x0, x0, #0x0 86 sub w0, w1, #0x10000 87 sub w0, w1, #65536 118 adds w0, w1, w29 119 adds w0, w1, w28, LSL #1 120 adds w0, w1, w28, LSL #31 121 adds w0, w1, w28, LSR #1 122 adds w0, w1, w28, LSR #31 123 adds w0, w1, w28, ASR #1 124 adds w0, w1, w28, ASR #31 125 ; ROR is reserved 126 127 sub x0, x0, #0x0 128 sub x0, x1, #0x10000 129 sub x0, x1, #65536 130 sub x0, x0, x0 131 sub x0, x1, x29 132 sub x0, x1, x28, LSL #1 133 sub x0, x1, x28, LSL #63 134 sub x0, x1, x28, LSR #1 135 sub x0, x1, x28, LSR #63 136 sub x0, x1, x28, ASR #1 137 sub x0, x1, x28, ASR #63 138 ; ROR is reserved 139 140 sub w0, w1, #0x0 141 sub w0, w1, #0x10000 142 sub w0, w1, #65536 143 sub w0, w1, w29 144 sub w0, w1, w28, LSL #1 145 sub w0, w1, w28, LSL #31 146 sub w0, w1, w28, LSR #1 147 sub w0, w1, w28, LSR #31 148 sub w0, w1, w28, ASR #1 149 sub w0, w1, w28, ASR #31 150 ; ROR is reserved 88 151 89 152 subs x0, x0, #0x0 153 subs x0, x1, #0x10000 154 subs x0, x1, #65536 155 subs x0, x0, x0 156 subs x0, x1, x29 157 subs x0, x1, x28, LSL #1 158 subs x0, x1, x28, LSL #63 159 subs x0, x1, x28, LSR #1 160 subs x0, x1, x28, LSR #63 161 subs x0, x1, x28, ASR #1 162 subs x0, x1, x28, ASR #63 163 ; ROR is reserved 164 165 subs w0, w1, #0x0 90 166 subs w0, w1, #0x10000 91 167 subs w0, w1, #65536 168 subs w0, w1, w29 169 subs w0, w1, w28, LSL #1 170 subs w0, w1, w28, LSL #31 171 subs w0, w1, w28, LSR #1 172 subs w0, w1, w28, LSR #31 173 subs w0, w1, w28, ASR #1 174 subs w0, w1, w28, ASR #31 175 ; ROR is reserved 92 176 93 177 ; mov x0, x1 @todo Aliases are not supported right now.
Note:
See TracChangeset
for help on using the changeset viewer.