/src/capstonenext/arch/PowerPC/PPCRegisterInfo.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* Capstone Disassembly Engine, http://www.capstone-engine.org */ |
2 | | /* By Rot127 <unisono@quyllur.org> 2022-2023 */ |
3 | | |
4 | | #ifndef CS_PPC_REGISTERINFO_H |
5 | | #define CS_PPC_REGISTERINFO_H |
6 | | |
7 | | #include "PPCMCTargetDesc.h" |
8 | | |
9 | | /// stripRegisterPrefix - This method strips the character prefix from a |
10 | | /// register name so that only the number is left. Used by for linux asm. |
11 | | static const char *PPCRegisterInfo_stripRegisterPrefix(const char *RegName) |
12 | 0 | { |
13 | 0 | switch (RegName[0]) { |
14 | 0 | case 'a': |
15 | 0 | if (RegName[1] == 'c' && RegName[2] == 'c') |
16 | 0 | return RegName + 3; |
17 | 0 | break; |
18 | 0 | case 'r': |
19 | 0 | case 'f': |
20 | 0 | case 'v': |
21 | 0 | if (RegName[1] == 's') { |
22 | 0 | if (RegName[2] == 'p') |
23 | 0 | return RegName + 3; |
24 | 0 | return RegName + 2; |
25 | 0 | } |
26 | 0 | return RegName + 1; |
27 | 0 | case 'c': |
28 | 0 | if (RegName[1] == 'r') |
29 | 0 | return RegName + 2; |
30 | 0 | break; |
31 | 0 | case 'w': |
32 | | // For wacc and wacc_hi |
33 | 0 | if (RegName[1] == 'a' && RegName[2] == 'c' && |
34 | 0 | RegName[3] == 'c') { |
35 | 0 | if (RegName[4] == '_') |
36 | 0 | return RegName + 7; |
37 | 0 | else |
38 | 0 | return RegName + 4; |
39 | 0 | } |
40 | 0 | break; |
41 | 0 | case 'd': |
42 | | // For dmr, dmrp, dmrrow, dmrrowp |
43 | 0 | if (RegName[1] == 'm' && RegName[2] == 'r') { |
44 | 0 | if (RegName[3] == 'r' && RegName[4] == 'o' && |
45 | 0 | RegName[5] == 'w' && RegName[6] == 'p') |
46 | 0 | return RegName + 7; |
47 | 0 | else if (RegName[3] == 'r' && RegName[4] == 'o' && |
48 | 0 | RegName[5] == 'w') |
49 | 0 | return RegName + 6; |
50 | 0 | else if (RegName[3] == 'p') |
51 | 0 | return RegName + 4; |
52 | 0 | else |
53 | 0 | return RegName + 3; |
54 | 0 | } |
55 | 0 | break; |
56 | 0 | } |
57 | | |
58 | 0 | return RegName; |
59 | 0 | } |
60 | | |
61 | | #endif // CS_PPC_REGISTERINFO_H |