ROSE  0.9.9.109
armInstructionEnum.h
1 #ifndef ROSE_ARMINSTRUCTIONENUM_H
2 #define ROSE_ARMINSTRUCTIONENUM_H
3 
4 #include <string>
5 
6 enum ArmRegisterClass
7 {
8  arm_regclass_gpr, /* general purpose registers */
9  arm_regclass_psr /* program status registers */
10 };
11 
12 enum ArmProgramStatusRegister
13 {
14  arm_psr_current,
15  arm_psr_saved
16 };
17 
18 enum ArmInstructionKind
19 {
20  arm_unknown_instruction = 0,
21  arm_adc,
22  arm_adcs,
23  arm_add,
24  arm_adds,
25  arm_and,
26  arm_ands,
27  arm_b,
28  arm_bic,
29  arm_bics,
30  arm_bkpt,
31  arm_bl,
32  arm_blx,
33  arm_bx,
34  arm_bxj,
35  arm_clz,
36  arm_cmn,
37  arm_cmp,
38  arm_eor,
39  arm_eors,
40  arm_ldm,
41  arm_ldmda,
42  arm_ldmdb,
43  arm_ldmia,
44  arm_ldmib,
45  arm_ldr,
46  arm_ldrb,
47  arm_ldrbt,
48  arm_ldrd,
49  arm_ldrsb,
50  arm_ldrsh,
51  arm_ldrt,
52  arm_ldruh, /*synonym for ldrh?*/
53  arm_mla,
54  arm_mlas,
55  arm_mov,
56  arm_movs,
57  arm_mrs,
58  arm_msr,
59  arm_mul,
60  arm_muls,
61  arm_mvn,
62  arm_mvns,
63  arm_orr,
64  arm_orrs,
65  arm_qadd,
66  arm_qdadd,
67  arm_qdsub,
68  arm_qsub,
69  arm_rsb,
70  arm_rsbs,
71  arm_rsc,
72  arm_rscs,
73  arm_sbc,
74  arm_sbcs,
75  arm_setend,
76  arm_smlabb,
77  arm_smlabt,
78  arm_smlal,
79  arm_smlalbb,
80  arm_smlalbt,
81  arm_smlals,
82  arm_smlaltb,
83  arm_smlaltt,
84  arm_smlatb,
85  arm_smlatt,
86  arm_smlawb,
87  arm_smlawt,
88  arm_smluwb, /*should this be smulwb?*/
89  arm_smluwt, /*should this be smulwt?*/
90  arm_smulbb,
91  arm_smulbt,
92  arm_smull,
93  arm_smulls,
94  arm_smultb,
95  arm_smultt,
96  arm_stm,
97  arm_stmda,
98  arm_stmdb,
99  arm_stmia,
100  arm_stmib,
101  arm_str,
102  arm_strb,
103  arm_strbt,
104  arm_strd,
105  arm_strh,
106  arm_strt,
107  arm_sub,
108  arm_subs,
109  arm_swi,
110  arm_swp,
111  arm_teq,
112  arm_tst,
113  arm_umaal,
114  arm_umlal,
115  arm_umlals,
116  arm_umull,
117  arm_umulls,
118  arm_undefined,
119  arm_last_instruction
120 };
121 
122 // These are one more than the ARM condition codes in the instruction encoding, so the order is important
123 enum ArmInstructionCondition
124 {
125  arm_cond_unknown = 0,
126  arm_cond_eq = 1,
127  arm_cond_ne = 2,
128  arm_cond_hs = 3,
129  arm_cond_lo = 4,
130  arm_cond_mi = 5,
131  arm_cond_pl = 6,
132  arm_cond_vs = 7,
133  arm_cond_vc = 8,
134  arm_cond_hi = 9,
135  arm_cond_ls = 10,
136  arm_cond_ge = 11,
137  arm_cond_lt = 12,
138  arm_cond_gt = 13,
139  arm_cond_le = 14,
140  arm_cond_al = 15,
141  arm_cond_nv = 16 /*??*/
142 };
143 
144 #endif /* ROSE_ARMINSTRUCTIONENUM_H */