Changeset 106659 in vbox for trunk/src/VBox/Disassembler
- Timestamp:
- Oct 24, 2024 12:55:19 PM (3 months ago)
- Location:
- trunk/src/VBox/Disassembler
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Disassembler/DisasmTables-armv8-a64.cpp
r106657 r106659 1025 1025 1026 1026 /* 1027 * STRB/LDRB/LDRSB/STRH/LDRH/LDRSH/STR/LDR/LDRSW/STR/LDR 1028 * 1029 * Note: The size,opc bitfields are concatenated to form an index. 1030 */ 1031 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStRegImmPostIndexGpr) 1032 DIS_ARMV8_INSN_DECODE(kDisParmParseSize, 30, 2, DIS_ARMV8_INSN_PARAM_UNSET), 1033 DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr, 0, 5, 0 /*idxParam*/), 1034 DIS_ARMV8_INSN_DECODE(kDisParmParseAddrGprSp, 5, 5, 1 /*idxParam*/), 1035 DIS_ARMV8_INSN_DECODE(kDisParmParseSImmMemOffUnscaled, 12, 9, 1 /*idxParam*/), 1036 DIS_ARMV8_INSN_DECODE(kDisParmParseSetPostIndexed, 0, 0, 1 /*idxParam*/), 1037 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(LdStRegImmPostIndexGpr) 1038 DIS_ARMV8_OP(0x38000400, "strb", OP_ARMV8_A64_STRB, DISOPTYPE_HARMLESS), 1039 DIS_ARMV8_OP(0x38400400, "ldrb", OP_ARMV8_A64_LDRB, DISOPTYPE_HARMLESS), 1040 DIS_ARMV8_OP_EX(0x38800400, "ldrsb", OP_ARMV8_A64_LDRSB, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_64BIT), 1041 DIS_ARMV8_OP_EX(0x38c00400, "ldrsb", OP_ARMV8_A64_LDRSB, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_32BIT), 1042 DIS_ARMV8_OP(0x78000400, "strh", OP_ARMV8_A64_STRH, DISOPTYPE_HARMLESS), 1043 DIS_ARMV8_OP(0x78400400, "ldrh", OP_ARMV8_A64_LDRH, DISOPTYPE_HARMLESS), 1044 DIS_ARMV8_OP_EX(0x78800400, "ldrsh", OP_ARMV8_A64_LDURSH, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_64BIT), 1045 DIS_ARMV8_OP_EX(0x78c00400, "ldrsh", OP_ARMV8_A64_LDURSH, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_32BIT), 1046 DIS_ARMV8_OP(0xb8000400, "str", OP_ARMV8_A64_STR, DISOPTYPE_HARMLESS), 1047 DIS_ARMV8_OP(0xb8400400, "ldr", OP_ARMV8_A64_LDR, DISOPTYPE_HARMLESS), 1048 DIS_ARMV8_OP_EX(0xb8800400, "ldrsw", OP_ARMV8_A64_LDURSW, DISOPTYPE_HARMLESS, DISARMV8INSNCLASS_F_FORCED_64BIT), 1049 INVALID_OPCODE, 1050 DIS_ARMV8_OP(0xf8000400, "str", OP_ARMV8_A64_STR, DISOPTYPE_HARMLESS), 1051 DIS_ARMV8_OP(0xf8400400, "ldr", OP_ARMV8_A64_LDR, DISOPTYPE_HARMLESS), 1052 INVALID_OPCODE, 1053 INVALID_OPCODE, 1054 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END(LdStRegImmPostIndexGpr, 0xffe00c00 /*fFixedInsn*/, 1055 kDisArmV8OpcDecodeCollate, 1056 RT_BIT_32(22) | RT_BIT_32(23) | RT_BIT_32(30) | RT_BIT_32(31), 22); 1057 1058 1059 /* 1060 * C4.1.94.26 - Loads and Stores - Load/Store register (immediate post-indexed) variants 1061 * 1062 * Differentiate further based on the VR field. 1063 * 1064 * Bit 26 1065 * +------------------------------------------- 1066 * 0 GPR variants. 1067 * 1 SIMD/FP variants 1068 */ 1069 DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(LdStRegImmPostIndex) 1070 DIS_ARMV8_DECODE_MAP_ENTRY(LdStRegImmPostIndexGpr), 1071 DIS_ARMV8_DECODE_MAP_INVALID_ENTRY, /** @todo */ 1072 DIS_ARMV8_DECODE_MAP_DEFINE_END(LdStRegImmPostIndex, RT_BIT_32(26), 26); 1073 1074 1075 /* 1027 1076 * C4.1.94 - Loads and Stores - Load/Store register variants 1028 1077 * … … 1038 1087 DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(LdStRegOp2_11_0) 1039 1088 DIS_ARMV8_DECODE_MAP_ENTRY(LdStRegUnscaledImm), 1040 DIS_ARMV8_DECODE_MAP_ INVALID_ENTRY, /** @todo */1089 DIS_ARMV8_DECODE_MAP_ENTRY(LdStRegImmPostIndex), 1041 1090 DIS_ARMV8_DECODE_MAP_INVALID_ENTRY, /** @todo */ 1042 1091 DIS_ARMV8_DECODE_MAP_ENTRY(LdStRegImmPreIndex), -
trunk/src/VBox/Disassembler/testcase/tstDisasmArmv8-1-asm.S
r106657 r106659 642 642 ldrsw x0, [sp, #255]! 643 643 644 ldrb w0, [x28], #0 645 ldrb w0, [x28], #-256 646 ldrb w0, [x28], #255 647 648 ldrb w0, [sp], #0 649 ldrb w0, [sp], #-256 650 ldrb w0, [sp], #255 651 652 ldrsb w0, [x28], #0 653 ldrsb w0, [x28], #-256 654 ldrsb w0, [x28], #255 655 656 ldrsb w0, [sp], #0 657 ldrsb w0, [sp], #-256 658 ldrsb w0, [sp], #255 659 660 ldrsb x0, [x28], #0 661 ldrsb x0, [x28], #-256 662 ldrsb x0, [x28], #255 663 664 ldrsb x0, [sp], #0 665 ldrsb x0, [sp], #-256 666 ldrsb x0, [sp], #255 667 668 ldrh w0, [x28], #0 669 ldrh w0, [x28], #-256 670 ldrh w0, [x28], #255 671 672 ldrh w0, [sp], #0 673 ldrh w0, [sp], #-256 674 ldrh w0, [sp], #255 675 676 ldrsh w0, [x28], #0 677 ldrsh w0, [x28], #-256 678 ldrsh w0, [x28], #255 679 680 ldrsh w0, [sp], #0 681 ldrsh w0, [sp], #-256 682 ldrsh w0, [sp], #255 683 684 ldrsh x0, [x28], #0 685 ldrsh x0, [x28], #-256 686 ldrsh x0, [x28], #255 687 688 ldrsh x0, [sp], #0 689 ldrsh x0, [sp], #-256 690 ldrsh x0, [sp], #255 691 692 ldr x0, [x28], #0 693 ldr x0, [x28], #-256 694 ldr x0, [x28], #255 695 696 ldr x0, [sp], #0 697 ldr x0, [sp], #-256 698 ldr x0, [sp], #255 699 700 ldr w0, [x28], #0 701 ldr w0, [x28], #-256 702 ldr w0, [x28], #255 703 704 ldr w0, [sp], #0 705 ldr w0, [sp], #-256 706 ldr w0, [sp], #255 707 708 ldrsw x0, [x28], #0 709 ldrsw x0, [x28], #-256 710 ldrsw x0, [x28], #255 711 712 ldrsw x0, [sp], #0 713 ldrsw x0, [sp], #-256 714 ldrsw x0, [sp], #255 715 644 716 645 717 ldurb w0, [x28] … … 903 975 str w0, [sp, #4] 904 976 str w0, [sp, #16380] 977 978 strb w0, [x28, #0]! 979 strb w0, [x28, #-256]! 980 strb w0, [x28, #255]! 981 982 strb w0, [sp, #0]! 983 strb w0, [sp, #-256]! 984 strb w0, [sp, #255]! 985 986 strh w0, [x28, #0]! 987 strh w0, [x28, #-256]! 988 strh w0, [x28, #255]! 989 990 strh w0, [sp, #0]! 991 strh w0, [sp, #-256]! 992 strh w0, [sp, #255]! 993 994 str x0, [x28, #0]! 995 str x0, [x28, #-256]! 996 str x0, [x28, #255]! 997 998 str x0, [sp, #0]! 999 str x0, [sp, #-256]! 1000 str x0, [sp, #255]! 1001 1002 str w0, [x28, #0]! 1003 str w0, [x28, #-256]! 1004 str w0, [x28, #255]! 1005 1006 str w0, [sp, #0]! 1007 str w0, [sp, #-256]! 1008 str w0, [sp, #255]! 1009 1010 1011 strb w0, [x28], #0 1012 strb w0, [x28], #-256 1013 strb w0, [x28], #255 1014 1015 strb w0, [sp], #0 1016 strb w0, [sp], #-256 1017 strb w0, [sp], #255 1018 1019 strh w0, [x28], #0 1020 strh w0, [x28], #-256 1021 strh w0, [x28], #255 1022 1023 strh w0, [sp], #0 1024 strh w0, [sp], #-256 1025 strh w0, [sp], #255 1026 1027 str x0, [x28], #0 1028 str x0, [x28], #-256 1029 str x0, [x28], #255 1030 1031 str x0, [sp], #0 1032 str x0, [sp], #-256 1033 str x0, [sp], #255 1034 1035 str w0, [x28], #0 1036 str w0, [x28], #-256 1037 str w0, [x28], #255 1038 1039 str w0, [sp], #0 1040 str w0, [sp], #-256 1041 str w0, [sp], #255 905 1042 906 1043 sturb w0, [x28]
Note:
See TracChangeset
for help on using the changeset viewer.