VirtualBox

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


Ignore:
Timestamp:
Oct 25, 2024 9:18:06 AM (6 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165550
Message:

Disasembler: Decode extr instruction, bugref:10394

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

Legend:

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

    r106679 r106680  
    163163
    164164
     165/* SBFM/BFM/UBFM */
     166DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Extract) /** @todo N must match SF, and for sf == 0 -> imms<5> == 0. */
     167    DIS_ARMV8_INSN_DECODE(kDisParmParseSf,            31,  1, DIS_ARMV8_INSN_PARAM_UNSET),
     168    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     169    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          5,  5, 1 /*idxParam*/),
     170    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         16,  5, 2 /*idxParam*/),
     171    DIS_ARMV8_INSN_DECODE(kDisParmParseImm,           10,  6, 3 /*idxParam*/),
     172DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(Extract)
     173    DIS_ARMV8_OP(0x13800000, "extr",            OP_ARMV8_A64_EXTR,      DISOPTYPE_HARMLESS),
     174DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END(Extract, 0x7fa00000 /*fFixedInsn*/,
     175                                       kDisArmV8OpcDecodeNop, 0, 0);
     176
     177
    165178/*
    166179 * C4.1.65 of the ARMv8 architecture reference manual has the following table for the
     
    185198    DIS_ARMV8_DECODE_MAP_ENTRY(MoveWide),
    186199    DIS_ARMV8_DECODE_MAP_ENTRY(Bitfield),
    187     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY                  /** @todo Extract */
     200    DIS_ARMV8_DECODE_MAP_ENTRY(Extract)
    188201DIS_ARMV8_DECODE_MAP_DEFINE_END(DataProcessingImm, RT_BIT_32(23) | RT_BIT_32(24) | RT_BIT_32(25),  23);
    189202
  • trunk/src/VBox/Disassembler/testcase/tstDisasmArmv8-1-asm.S

    r106679 r106680  
    497497        bics xzr, xzr, xzr, ROR #63
    498498
     499        extr wzr, w0, w1, #0
     500        extr wzr, w0, w1, #31
     501
     502        extr xzr, x0, x1, #0
     503        extr xzr, x0, x1, #63
     504
    499505        ; Memory loads
    500506        ldrb w0, [x28]
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