14 #define MCORE_INSTR_ALIGN (2)
76 #define INVALID_FIELD (0)
95 #define MCORE_INSTRS 265
97 {
"bkpt",
MCORE_CPU_DFLT, 0x0,
RZ_ANALYSIS_OP_TYPE_ILL, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
98 {
"sync",
MCORE_CPU_DFLT, 0x1,
RZ_ANALYSIS_OP_TYPE_SYNC, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
99 {
"rte",
MCORE_CPU_DFLT, 0x2,
RZ_ANALYSIS_OP_TYPE_RET, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
100 {
"rfi",
MCORE_CPU_DFLT, 0x3,
RZ_ANALYSIS_OP_TYPE_RET, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
101 {
"stop",
MCORE_CPU_DFLT, 0x4,
RZ_ANALYSIS_OP_TYPE_NULL, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
102 {
"wait",
MCORE_CPU_DFLT, 0x5,
RZ_ANALYSIS_OP_TYPE_NULL, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
103 {
"doze",
MCORE_CPU_DFLT, 0x6,
RZ_ANALYSIS_OP_TYPE_NULL, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
104 {
"idly4",
MCORE_CPU_DFLT, 0x7,
RZ_ANALYSIS_OP_TYPE_NULL, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
106 {
"trap",
MCORE_CPU_DFLT, 0xb,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0x3, 0,
TYPE_IMM }, { 0 }, { 0 }, { 0 }, { 0 } } },
108 {
"mvtc",
MCORE_CPU_510E, 0xc,
RZ_ANALYSIS_OP_TYPE_NULL, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
110 {
"cprc",
MCORE_CPU_DFLT, 0xd,
RZ_ANALYSIS_OP_TYPE_NULL, 0, { { 0 }, { 0 }, { 0 }, { 0 }, { 0 } } },
113 {
"cpseti",
MCORE_CPU_DFLT, 0x1f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_IMM }, { 0 }, { 0 }, { 0 }, { 0 } } },
115 {
"mvc",
MCORE_CPU_DFLT, 0x2f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
117 {
"mvcv",
MCORE_CPU_DFLT, 0x3f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
119 {
"ldq",
MCORE_CPU_DFLT, 0x4f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
121 {
"stq",
MCORE_CPU_DFLT, 0x5f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
123 {
"ldm",
MCORE_CPU_DFLT, 0x6f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
125 {
"stm",
MCORE_CPU_DFLT, 0x7f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
127 {
"dect",
MCORE_CPU_DFLT, 0x8f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
129 {
"decf",
MCORE_CPU_DFLT, 0x9f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
131 {
"inct",
MCORE_CPU_DFLT, 0xaf,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
133 {
"incf",
MCORE_CPU_DFLT, 0xbf,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
135 {
"jmp",
MCORE_CPU_DFLT, 0xcf,
RZ_ANALYSIS_OP_TYPE_CALL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
137 {
"jsr",
MCORE_CPU_DFLT, 0xdf,
RZ_ANALYSIS_OP_TYPE_RET, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
139 {
"ff1",
MCORE_CPU_DFLT, 0xef,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
141 {
"brev",
MCORE_CPU_DFLT, 0xff,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
143 {
"xtrb3",
MCORE_CPU_DFLT, 0x10f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
145 {
"xtrb2",
MCORE_CPU_DFLT, 0x11f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
147 {
"xtrb1",
MCORE_CPU_DFLT, 0x12f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
149 {
"xtrb0",
MCORE_CPU_DFLT, 0x13f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
151 {
"zextb",
MCORE_CPU_DFLT, 0x14f,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
153 {
"sextb",
MCORE_CPU_DFLT, 0x15f,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
155 {
"zexth",
MCORE_CPU_DFLT, 0x16f,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
157 {
"sexth",
MCORE_CPU_DFLT, 0x17f,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
159 {
"declt",
MCORE_CPU_DFLT, 0x18f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
161 {
"declt",
MCORE_CPU_DFLT, 0x19f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
163 {
"decgt",
MCORE_CPU_DFLT, 0x1af,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
165 {
"decne",
MCORE_CPU_DFLT, 0x1bf,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
167 {
"clrt",
MCORE_CPU_DFLT, 0x1cf,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
169 {
"clrf",
MCORE_CPU_DFLT, 0x1df,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
171 {
"abs",
MCORE_CPU_DFLT, 0x1ef,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
173 {
"not",
MCORE_CPU_DFLT, 0x1ff,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
175 {
"movt",
MCORE_CPU_DFLT, 0x2ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
177 {
"mult",
MCORE_CPU_DFLT, 0x3ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
179 {
"subu",
MCORE_CPU_DFLT, 0x5ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
181 {
"addc",
MCORE_CPU_DFLT, 0x6ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
183 {
"subc",
MCORE_CPU_DFLT, 0x7ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
185 {
"cprgr",
MCORE_CPU_DFLT, 0x9ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
187 {
"movf",
MCORE_CPU_DFLT, 0xaff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
189 {
"lsr",
MCORE_CPU_DFLT, 0xbff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
191 {
"cmphs",
MCORE_CPU_DFLT, 0xbff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
193 {
"cmplt",
MCORE_CPU_DFLT, 0xdff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
195 {
"tst",
MCORE_CPU_DFLT, 0xeff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
197 {
"cmpne",
MCORE_CPU_DFLT, 0xfff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
199 {
"mfcr",
MCORE_CPU_DFLT, 0x11ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_CTRL }, { 0 }, { 0 }, { 0 } } },
201 {
"psrclr",
MCORE_CPU_DFLT, 0x11f7,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0x7, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
203 {
"psrset",
MCORE_CPU_DFLT, 0x11ff,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0x7, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
205 {
"mov",
MCORE_CPU_DFLT, 0x12ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
207 {
"bgenr",
MCORE_CPU_DFLT, 0x13ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
209 {
"rsub",
MCORE_CPU_DFLT, 0x14ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
211 {
"lxw",
MCORE_CPU_DFLT, 0x15ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
213 {
"and",
MCORE_CPU_DFLT, 0x16ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
215 {
"xor",
MCORE_CPU_DFLT, 0x17ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
217 {
"mtcr",
MCORE_CPU_DFLT, 0x11ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_CTRL }, { 0 }, { 0 }, { 0 } } },
219 {
"asr",
MCORE_CPU_DFLT, 0x1aff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
221 {
"lsl",
MCORE_CPU_DFLT, 0x1bff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
223 {
"addu",
MCORE_CPU_DFLT, 0x1cff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
225 {
"lxh",
MCORE_CPU_DFLT, 0x1dff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
227 {
"or",
MCORE_CPU_DFLT, 0x1eff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
229 {
"andn",
MCORE_CPU_DFLT, 0x1fff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
231 {
"addi",
MCORE_CPU_DFLT, 0x21ff,
RZ_ANALYSIS_OP_TYPE_NULL, 3, { { 0xf, 0,
TYPE_REG }, { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 } } },
233 {
"cmplti",
MCORE_CPU_DFLT, 0x23ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
235 {
"subi",
MCORE_CPU_DFLT, 0x25ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
237 {
"cpwgr",
MCORE_CPU_DFLT, 0x27ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_CTRL }, { 0 }, { 0 }, { 0 } } },
239 {
"rsubi",
MCORE_CPU_DFLT, 0x29ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
241 {
"cmpnei",
MCORE_CPU_DFLT, 0x2bff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
243 {
"bmaski",
MCORE_CPU_DFLT, 0x2c0f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
245 {
"divu",
MCORE_CPU_DFLT, 0x2c1f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
247 {
"mflos",
MCORE_CPU_610E, 0x2c2f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
249 {
"mfhis",
MCORE_CPU_610E, 0x2c2f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
251 {
"mtlo",
MCORE_CPU_620, 0x2c4f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
253 {
"mthi",
MCORE_CPU_620, 0x2c5f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
255 {
"mtlo",
MCORE_CPU_620, 0x2c6f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
257 {
"mthi",
MCORE_CPU_620, 0x2c7f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
259 {
"bmaski",
MCORE_CPU_DFLT, 0x2cff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x70, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
261 {
"bmaski",
MCORE_CPU_DFLT, 0x2dff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
263 {
"andi",
MCORE_CPU_DFLT, 0x2fff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
265 {
"bclri",
MCORE_CPU_DFLT, 0x31ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
267 {
"cpwir",
MCORE_CPU_DFLT, 0x320f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
269 {
"divs",
MCORE_CPU_DFLT, 0x321f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
271 {
"cprsr",
MCORE_CPU_DFLT, 0x322f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
273 {
"cpwsr",
MCORE_CPU_DFLT, 0x323f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
278 {
"bgeni",
MCORE_CPU_DFLT, 0x327f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
280 {
"bgeni",
MCORE_CPU_DFLT, 0x32ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x70, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
282 {
"bgeni",
MCORE_CPU_DFLT, 0x33ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0xf0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
284 {
"bgeni",
MCORE_CPU_DFLT, 0x35ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
286 {
"btsti",
MCORE_CPU_DFLT, 0x37ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
288 {
"xsr",
MCORE_CPU_DFLT, 0x380f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
290 {
"rotli",
MCORE_CPU_DFLT, 0x39ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
292 {
"asrc",
MCORE_CPU_DFLT, 0x3a0f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
294 {
"asri",
MCORE_CPU_DFLT, 0x3bff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
296 {
"lslc",
MCORE_CPU_DFLT, 0x3c0f,
RZ_ANALYSIS_OP_TYPE_NULL, 1, { { 0xf, 0,
TYPE_REG }, { 0 }, { 0 }, { 0 }, { 0 } } },
298 {
"lsli",
MCORE_CPU_DFLT, 0x3dff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x1f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
325 {
"movi",
MCORE_CPU_DFLT, 0x67ff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0xf, 0,
TYPE_REG }, { 0x7f0, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
334 {
"cpwcr",
MCORE_CPU_DFLT, 0x6fff,
RZ_ANALYSIS_OP_TYPE_NULL, 2, { { 0x7, 0,
TYPE_REG }, { 0xf8, 4,
TYPE_IMM }, { 0 }, { 0 }, { 0 } } },
336 {
"jmpi",
MCORE_CPU_DFLT, 0x70ff,
RZ_ANALYSIS_OP_TYPE_JMP, 2, { { 0xff, 0,
TYPE_JMP }, { 0 }, { 0 }, { 0 }, { 0 } } },
338 {
"lrw",
MCORE_CPU_DFLT, 0x7fff,
RZ_ANALYSIS_OP_TYPE_LOAD, 2, { { 0xff, 0,
TYPE_MEM }, { 0xf00, 8,
TYPE_REG }, { 0 }, { 0 }, { 0 } } },
340 {
"jsri",
MCORE_CPU_DFLT, 0x7fff,
RZ_ANALYSIS_OP_TYPE_CALL, 1, { { 0xff, 0,
TYPE_JMPI }, { 0 }, { 0 }, { 0 }, { 0 } } },
342 {
"ld.w",
MCORE_CPU_DFLT, 0x8fff,
RZ_ANALYSIS_OP_TYPE_LOAD, 4, { { 0xf, 0,
TYPE_NONE }, { 0xf0, 4,
TYPE_NONE }, { 0xf00, 8,
TYPE_NONE }, { 0x6000, 13,
TYPE_NONE }, { 0 } } },
344 {
"st.w",
MCORE_CPU_DFLT, 0x9fff,
RZ_ANALYSIS_OP_TYPE_STORE, 4, { { 0xf, 0,
TYPE_NONE }, { 0xf0, 4,
TYPE_NONE }, { 0xf00, 8,
TYPE_NONE }, { 0x6000, 13,
TYPE_NONE }, { 0 } } },
346 {
"ld.b",
MCORE_CPU_DFLT, 0xafff,
RZ_ANALYSIS_OP_TYPE_LOAD, 4, { { 0xf, 0,
TYPE_NONE }, { 0xf0, 4,
TYPE_NONE }, { 0xf00, 8,
TYPE_NONE }, { 0x6000, 13,
TYPE_NONE }, { 0 } } },
348 {
"st.b",
MCORE_CPU_DFLT, 0xbfff,
RZ_ANALYSIS_OP_TYPE_STORE, 4, { { 0xf, 0,
TYPE_NONE }, { 0xf0, 4,
TYPE_NONE }, { 0xf00, 8,
TYPE_NONE }, { 0x6000, 13,
TYPE_NONE }, { 0 } } },
350 {
"ld.h",
MCORE_CPU_DFLT, 0xcfff,
RZ_ANALYSIS_OP_TYPE_LOAD, 4, { { 0xf, 0,
TYPE_NONE }, { 0xf0, 4,
TYPE_NONE }, { 0xf00, 8,
TYPE_NONE }, { 0x6000, 13,
TYPE_NONE }, { 0 } } },
352 {
"st.h",
MCORE_CPU_DFLT, 0xdfff,
RZ_ANALYSIS_OP_TYPE_STORE, 4, { { 0xf, 0,
TYPE_NONE }, { 0xf0, 4,
TYPE_NONE }, { 0xf00, 8,
TYPE_NONE }, { 0x6000, 13,
TYPE_NONE }, { 0 } } },
354 {
"bt",
MCORE_CPU_DFLT, 0xe7ff,
RZ_ANALYSIS_OP_TYPE_CJMP, 1, { { 0x7ff, 0,
TYPE_JMP }, { 0 }, { 0 }, { 0 }, { 0 } } },
356 {
"bf",
MCORE_CPU_DFLT, 0xefff,
RZ_ANALYSIS_OP_TYPE_CJMP, 1, { { 0x7ff, 0,
TYPE_JMP }, { 0 }, { 0 }, { 0 }, { 0 } } },
358 {
"br",
MCORE_CPU_DFLT, 0xf7ff,
RZ_ANALYSIS_OP_TYPE_CJMP, 1, { { 0x7ff, 0,
TYPE_JMP }, { 0 }, { 0 }, { 0 }, { 0 } } },
360 {
"bsr",
MCORE_CPU_DFLT, 0xffff,
RZ_ANALYSIS_OP_TYPE_CALL, 1, { { 0x7ff, 0,
TYPE_JMP }, { 0 }, { 0 }, { 0 }, { 0 } } },
383 if (masked == data) {
388 op->name =
"illegal";
393 if (!strncmp(op_ptr->
name,
"lrw", 3) && (data & 0xf00) == 0xf00) {
471 if (!instr || !
str) {
474 switch (instr->
type) {
static mcore_handle handle
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void count
RZ_API void Ht_() free(HtName_(Ht) *ht)
return memset(p, 0, total)
void * malloc(size_t size)
#define MCORE_INSTR_ALIGN
struct mcore_ops mcore_ops_t
static mcore_t * find_instruction(const ut8 *buffer)
static const char * mcore_ctrl_registers[]
int mcore_init(mcore_handle *handle, const ut8 *buffer, const ut32 size)
void mcore_snprint(char *str, int size, ut64 addr, mcore_t *instr)
struct mcore_mask mcore_mask_t
mcore_ops_t mcore_instructions[MCORE_INSTRS]
mcore_t * mcore_next(mcore_handle *handle)
void print_loop(char *str, int size, ut64 addr, mcore_t *instr)
void mcore_free(mcore_t *instr)
@ RZ_ANALYSIS_OP_TYPE_LOAD
@ RZ_ANALYSIS_OP_TYPE_JMP
@ RZ_ANALYSIS_OP_TYPE_SYNC
@ RZ_ANALYSIS_OP_TYPE_NULL
@ RZ_ANALYSIS_OP_TYPE_CALL
@ RZ_ANALYSIS_OP_TYPE_STORE
@ RZ_ANALYSIS_OP_TYPE_CJMP
@ RZ_ANALYSIS_OP_TYPE_ILL
@ RZ_ANALYSIS_OP_TYPE_RET
mcore_mask_t args[ARGS_SIZE]
mcore_field_t args[ARGS_SIZE]
ut64(WINAPI *w32_GetEnabledXStateFeatures)()