Changeset 106694 in vbox
- Timestamp:
- Oct 25, 2024 12:55:26 PM (4 months ago)
- svn:sync-xref-src-repo-rev:
- 165565
- Location:
- trunk/src/VBox/Disassembler
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Disassembler/DisasmTables-armv8-a64-ld-st.cpp.h
r106693 r106694 449 449 450 450 /* 451 * stnp/LDNP - no-allocate variant. 452 * 453 * Note: The opc,L bitfields are concatenated to form an index. 454 */ 455 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStRegPairNoAllocGpr) 456 DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr, 0, 5, 0 /*idxParam*/), 457 DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr, 10, 5, 1 /*idxParam*/), 458 DIS_ARMV8_INSN_DECODE(kDisParmParseAddrGprSp, 5, 5, 2 /*idxParam*/), 459 DIS_ARMV8_INSN_DECODE(kDisParmParseSImmMemOff, 15, 7, 2 /*idxParam*/), 460 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(LdStRegPairNoAllocGpr) 461 DIS_ARMV8_OP_EX(0x28000000, "stnp", OP_ARMV8_A64_STNP, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_32BIT), 462 DIS_ARMV8_OP_EX(0x28400000, "ldnp", OP_ARMV8_A64_LDNP, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_32BIT), 463 INVALID_OPCODE, 464 INVALID_OPCODE, 465 DIS_ARMV8_OP_EX(0xa8000000, "stnp", OP_ARMV8_A64_STNP, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_64BIT), 466 DIS_ARMV8_OP_EX(0xa8400000, "ldnp", OP_ARMV8_A64_LDNP, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_64BIT), 467 INVALID_OPCODE, 468 INVALID_OPCODE, 469 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END(LdStRegPairNoAllocGpr, 0xffc00000 /*fFixedInsn*/, 470 kDisArmV8OpcDecodeCollate, 471 RT_BIT_32(22) | RT_BIT_32(30) | RT_BIT_32(31), 22); 472 473 474 /* 475 * C4.1.94.21 - Loads and Stores - Load/Store register (immediate post-indexed) variants 476 * 477 * Differentiate further based on the VR field. 478 * 479 * Bit 26 480 * +------------------------------------------- 481 * 0 GPR variants. 482 * 1 SIMD/FP variants 483 */ 484 DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(LdStRegPairNoAlloc) 485 DIS_ARMV8_DECODE_MAP_ENTRY(LdStRegPairNoAllocGpr), 486 DIS_ARMV8_DECODE_MAP_INVALID_ENTRY, /** @todo */ 487 DIS_ARMV8_DECODE_MAP_DEFINE_END(LdStRegPairNoAlloc, RT_BIT_32(26), 26); 488 489 490 /* 451 491 * C4.1.94 - Loads and Stores - Load/Store register pair variants 452 492 * … … 461 501 */ 462 502 DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(LdStRegPair) 463 DIS_ARMV8_DECODE_MAP_ INVALID_ENTRY, /** @todo */503 DIS_ARMV8_DECODE_MAP_ENTRY(LdStRegPairNoAlloc), 464 504 DIS_ARMV8_DECODE_MAP_ENTRY(LdStRegPairPostIndex), 465 505 DIS_ARMV8_DECODE_MAP_ENTRY(LdStRegPairOff), -
trunk/src/VBox/Disassembler/testcase/tstDisasmArmv8-1-asm.S
r106680 r106694 919 919 ldp x0, x1, [sp], #504 920 920 921 ldnp w0, w1, [x28] 922 ldnp w0, w1, [x28, #4] 923 ldnp w0, w1, [x28, #-256] 924 ldnp w0, w1, [x28, #252] 925 926 ldnp w0, w1, [sp] 927 ldnp w0, w1, [sp, #4] 928 ldnp w0, w1, [sp, #-256] 929 ldnp w0, w1, [sp, #252] 930 931 ldnp x0, x1, [x28] 932 ldnp x0, x1, [x28, #8] 933 ldnp x0, x1, [x28, #-512] 934 ldnp x0, x1, [x28, #504] 935 936 ldnp x0, x1, [sp] 937 ldnp x0, x1, [sp, #8] 938 ldnp x0, x1, [sp, #-512] 939 ldnp x0, x1, [sp, #504] 940 921 941 ldr x0, [x1, x2] 922 942 ldr w0, [x1, x2] … … 1238 1258 stp x0, x1, [sp], #-512 1239 1259 stp x0, x1, [sp], #504 1260 1261 1262 stnp w0, w1, [x28] 1263 stnp w0, w1, [x28, #4] 1264 stnp w0, w1, [x28, #-256] 1265 stnp w0, w1, [x28, #252] 1266 1267 stnp w0, w1, [sp] 1268 stnp w0, w1, [sp, #4] 1269 stnp w0, w1, [sp, #-256] 1270 stnp w0, w1, [sp, #252] 1271 1272 stnp x0, x1, [x28] 1273 stnp x0, x1, [x28, #8] 1274 stnp x0, x1, [x28, #-512] 1275 stnp x0, x1, [x28, #504] 1276 1277 stnp x0, x1, [sp] 1278 stnp x0, x1, [sp, #8] 1279 stnp x0, x1, [sp, #-512] 1280 stnp x0, x1, [sp, #504] 1281 1240 1282 1241 1283 str x0, [x1, x2]
Note:
See TracChangeset
for help on using the changeset viewer.