simplify ARCH_group_name() by using lookup table as suggested by @learn_more. also added the missing group name for GRP_PRIVILEGE
diff --git a/arch/AArch64/AArch64Mapping.c b/arch/AArch64/AArch64Mapping.c
index 58c14ef..1233668 100644
--- a/arch/AArch64/AArch64Mapping.c
+++ b/arch/AArch64/AArch64Mapping.c
@@ -840,28 +840,20 @@
{ ARM64_GRP_JUMP, "jump" },
{ ARM64_GRP_CALL, "call" },
{ ARM64_GRP_RET, "return" },
+ { ARM64_GRP_PRIVILEGE, "privilege" },
// architecture-specific groups
{ ARM64_GRP_CRYPTO, "crypto" },
{ ARM64_GRP_FPARMV8, "fparmv8" },
{ ARM64_GRP_NEON, "neon" },
{ ARM64_GRP_CRC, "crc" },
-
};
#endif
const char *AArch64_group_name(csh handle, unsigned int id)
{
#ifndef CAPSTONE_DIET
- // verify group id
- if (id >= ARM64_GRP_ENDING || (id > ARM64_GRP_RET && id < ARM64_GRP_CRYPTO))
- return NULL;
-
- // NOTE: when new generic groups are added, 4 must be changed accordingly
- if (id >= ARM64_GRP_CRYPTO)
- return group_name_maps[id - ARM64_GRP_CRYPTO + 4].name;
- else
- return group_name_maps[id].name;
+ return id2name(group_name_maps, ARR_SIZE(group_name_maps), id);
#else
return NULL;
#endif