retdec
capstone_utils.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_CAPSTONE2LLVMIR_CAPSTONE_UTILS_H
8 #define RETDEC_CAPSTONE2LLVMIR_CAPSTONE_UTILS_H
9 
10 #include <map>
11 #include <string>
12 
13 #include <capstone/capstone.h>
14 
15 namespace retdec {
16 namespace capstone2llvmir {
17 
18 static std::map<cs_arch, std::string> capstoneArchStringMap =
19 {
20  {CS_ARCH_ARM, "CS_ARCH_ARM"},
21  {CS_ARCH_ARM64, "CS_ARCH_ARM64"},
22  {CS_ARCH_MIPS, "CS_ARCH_MIPS"},
23  {CS_ARCH_X86, "CS_ARCH_X86"},
24  {CS_ARCH_PPC, "CS_ARCH_PPC"},
25  {CS_ARCH_SPARC, "CS_ARCH_SPARC"},
26  {CS_ARCH_SYSZ, "CS_ARCH_SYSZ"},
27  {CS_ARCH_XCORE, "CS_ARCH_XCORE"},
28  {CS_ARCH_MAX, "CS_ARCH_MAX"},
29  {CS_ARCH_ALL, "CS_ARCH_ALL"}
30 };
31 
32 inline std::string capstoneArchToString(cs_arch a)
33 {
34  auto fIt = capstoneArchStringMap.find(a);
35  return fIt != capstoneArchStringMap.end() ? fIt->second : std::string();
36 }
37 
38 static std::map<cs_mode, std::string> capstoneModeStringMap =
39 {
40  {CS_MODE_LITTLE_ENDIAN, "CS_MODE_LITTLE_ENDIAN"},
41  {CS_MODE_ARM, "CS_MODE_ARM"},
42  {CS_MODE_16, "CS_MODE_16"},
43  {CS_MODE_32, "CS_MODE_32"},
44  {CS_MODE_64, "CS_MODE_64"},
45  {CS_MODE_THUMB, "CS_MODE_THUMB"},
46  {CS_MODE_MCLASS, "CS_MODE_MCLASS"},
47  {CS_MODE_V8, "CS_MODE_V8"},
48  {CS_MODE_MICRO, "CS_MODE_MICRO"},
49  {CS_MODE_MIPS3, "CS_MODE_MIPS3"},
50  {CS_MODE_MIPS32R6, "CS_MODE_MIPS32R6"},
51  {CS_MODE_V9, "CS_MODE_V9"},
52  {CS_MODE_BIG_ENDIAN, "CS_MODE_BIG_ENDIAN"},
53  {CS_MODE_MIPS32, "CS_MODE_MIPS32"},
54  {CS_MODE_MIPS64, "CS_MODE_MIPS64"}
55 };
56 
57 inline std::string capstoneModeToString(cs_mode m)
58 {
59  auto fIt = capstoneModeStringMap.find(m);
60  return fIt != capstoneModeStringMap.end() ? fIt->second : std::string();
61 }
62 
63 } // namespace capstone2llvmir
64 } // namespace retdec
65 
66 #endif
std::string capstoneModeToString(cs_mode m)
Definition: capstone_utils.h:57
static std::map< cs_arch, std::string > capstoneArchStringMap
Definition: capstone_utils.h:18
static std::map< cs_mode, std::string > capstoneModeStringMap
Definition: capstone_utils.h:38
std::string capstoneArchToString(cs_arch a)
Definition: capstone_utils.h:32
Definition: archive_wrapper.h:19