44 parsed_operands[
i].esil[0] =
'\0';
54 parsed_operands[
i].value->imm =
op->val = rz_instr.
operands[
i].
u;
58 parsed_operands[
i].value->imm =
op->val = rz_instr.
operands[
i].
s;
61 snprintf(parsed_operands[
i].esil,
sizeof(parsed_operands[
i].esil),
64 parsed_operands[
i].value->imm = rz_instr.
operands[
i].
s;
73 parsed_operands[
i].value->imm = rz_instr.
operands[
i].
u;
74 parsed_operands[
i].value->memref = 4;
105 op->dst = parsed_operands[0].value;
106 op->src[0] = parsed_operands[1].value;
107 rz_strbuf_setf(&
op->esil,
"%s,%s,=", parsed_operands[1].esil, parsed_operands[0].esil);
114 op->dst = parsed_operands[0].value;
115 op->src[0] = parsed_operands[1].value;
116 op->src[1] = parsed_operands[2].value;
117 rz_strbuf_setf(&
op->esil,
"%s,%s,+,%s,=", parsed_operands[2].esil, parsed_operands[1].esil, parsed_operands[0].esil);
122 op->dst = parsed_operands[0].value;
123 op->src[0] = parsed_operands[1].value;
124 op->src[1] = parsed_operands[2].value;
125 rz_strbuf_setf(&
op->esil,
"%s,%s,-,%s,=", parsed_operands[2].esil, parsed_operands[1].esil, parsed_operands[0].esil);
130 op->dst = parsed_operands[0].value;
131 op->src[0] = parsed_operands[1].value;
132 op->src[1] = parsed_operands[2].value;
133 rz_strbuf_setf(&
op->esil,
"%s,%s,&,%s,=", parsed_operands[2].esil, parsed_operands[1].esil, parsed_operands[0].esil);
138 op->dst = parsed_operands[0].value;
139 op->src[0] = parsed_operands[1].value;
140 op->src[1] = parsed_operands[2].value;
141 rz_strbuf_setf(&
op->esil,
"%s,%s,|,%s,=", parsed_operands[2].esil, parsed_operands[1].esil, parsed_operands[0].esil);
146 op->dst = parsed_operands[0].value;
147 op->src[0] = parsed_operands[1].value;
148 op->src[1] = parsed_operands[2].value;
149 rz_strbuf_setf(&
op->esil,
"%s,%s,^,%s,=", parsed_operands[2].esil, parsed_operands[1].esil, parsed_operands[0].esil);
153 op->dst = parsed_operands[0].value;
154 op->src[0] = parsed_operands[1].value;
155 op->src[1] = parsed_operands[2].value;
161 op->dst = parsed_operands[0].value;
162 op->src[0] = parsed_operands[1].value;
163 op->src[1] = parsed_operands[2].value;
164 rz_strbuf_setf(&
op->esil,
"%s,%s,<<,%s,=", parsed_operands[2].esil, parsed_operands[1].esil, parsed_operands[0].esil);
169 op->dst = parsed_operands[0].value;
170 op->src[0] = parsed_operands[1].value;
171 op->src[1] = parsed_operands[2].value;
172 rz_strbuf_setf(&
op->esil,
"%s,%s,>>,%s,=", parsed_operands[2].esil, parsed_operands[1].esil, parsed_operands[0].esil);
177 op->dst = parsed_operands[0].value;
178 op->src[0] = parsed_operands[1].value;
179 op->src[1] = parsed_operands[2].value;
188 op->dst = parsed_operands[0].value;
189 op->src[0] = parsed_operands[1].value;
190 op->src[1] = parsed_operands[2].value;
191 rz_strbuf_setf(&
op->esil,
"%s,%s,<,$z,?{,1,%s,=,}{,0,%s,=,}", parsed_operands[2].esil, parsed_operands[1].esil, parsed_operands[0].esil, parsed_operands[0].esil);
197 op->src[0] = parsed_operands[0].value;
204 op->src[0] = parsed_operands[0].value;
217 op->src[0] = parsed_operands[0].value;
225 op->src[0] = parsed_operands[0].value;
226 op->src[1] = parsed_operands[1].value;
227 rz_strbuf_setf(&
op->esil,
"%s,%s,==,$z,?{,%s,PC,=,}", parsed_operands[0].esil, parsed_operands[1].esil, parsed_operands[2].esil);
234 op->src[0] = parsed_operands[0].value;
235 op->src[1] = parsed_operands[1].value;
236 rz_strbuf_setf(&
op->esil,
"%s,%s,==,$z,!,?{,%s,PC,=,}", parsed_operands[0].esil, parsed_operands[1].esil, parsed_operands[2].esil);
243 op->src[0] = parsed_operands[0].value;
244 op->src[1] = parsed_operands[1].value;
245 rz_strbuf_setf(&
op->esil,
"%s,!,%s,0x80000000,&,!,!,|,?{,%s,PC,=,}", parsed_operands[0].esil, parsed_operands[0].esil, parsed_operands[1].esil);
253 op->src[0] = parsed_operands[0].value;
254 op->src[1] = parsed_operands[1].value;
255 rz_strbuf_setf(&
op->esil,
"%s,0x80000000,&,!,%s,!,!,&,?{,%s,PC,=,}", parsed_operands[0].esil, parsed_operands[0].esil, parsed_operands[1].esil);
263 op->src[0] = parsed_operands[0].value;
264 op->src[1] = parsed_operands[1].value;
265 rz_strbuf_setf(&
op->esil,
"%s,0x80000000,&,!,!,?{,%s,PC,=,}", parsed_operands[0].esil, parsed_operands[1].esil);
273 op->src[0] = parsed_operands[0].value;
274 op->src[1] = parsed_operands[1].value;
275 rz_strbuf_setf(&
op->esil,
"%s,0x80000000,&,!,?{,%s,PC,=,}", parsed_operands[0].esil, parsed_operands[1].esil);
283 op->src[0] = parsed_operands[0].value;
284 op->src[1] = parsed_operands[1].value;
292 op->src[0] = parsed_operands[0].value;
293 op->src[1] = parsed_operands[1].value;
298 op->dst = parsed_operands[0].value;
299 op->src[0] = parsed_operands[1].value;
300 op->src[0]->memref =
op->refptr = 1;
302 rz_strbuf_setf(&
op->esil,
"%s,[1],%s,=", parsed_operands[1].esil, parsed_operands[0].esil);
306 op->dst = parsed_operands[0].value;
307 op->src[0] = parsed_operands[1].value;
308 op->src[0]->memref =
op->refptr = 2;
310 rz_strbuf_setf(&
op->esil,
"%s,[2],%s,=", parsed_operands[1].esil, parsed_operands[0].esil);
314 op->dst = parsed_operands[0].value;
315 op->src[0] = parsed_operands[1].value;
316 op->src[0]->memref =
op->refptr = 4;
317 rz_strbuf_setf(&
op->esil,
"%s,[4],%s,=", parsed_operands[1].esil, parsed_operands[0].esil);
321 op->dst = parsed_operands[0].value;
322 op->src[0] = parsed_operands[1].value;
323 op->src[0]->memref =
op->refptr = 1;
324 rz_strbuf_setf(&
op->esil,
"%s,[1],%s,=", parsed_operands[1].esil, parsed_operands[0].esil);
328 op->dst = parsed_operands[0].value;
329 op->src[0] = parsed_operands[1].value;
330 op->src[0]->memref =
op->refptr = 2;
331 rz_strbuf_setf(&
op->esil,
"%s,[2],%s,=", parsed_operands[1].esil, parsed_operands[0].esil);
335 op->src[0] = parsed_operands[0].value;
336 op->dst = parsed_operands[1].value;
337 op->dst->memref =
op->refptr = 1;
338 rz_strbuf_setf(&
op->esil,
"%s,%s,=[1]", parsed_operands[0].esil, parsed_operands[1].esil);
342 op->src[0] = parsed_operands[0].value;
343 op->dst = parsed_operands[1].value;
344 op->dst->memref =
op->refptr = 2;
345 rz_strbuf_setf(&
op->esil,
"%s,%s,=[2]", parsed_operands[0].esil, parsed_operands[1].esil);
349 op->src[0] = parsed_operands[0].value;
350 op->dst = parsed_operands[1].value;
351 op->dst->memref =
op->refptr = 4;
352 rz_strbuf_setf(&
op->esil,
"%s,%s,=[4]", parsed_operands[0].esil, parsed_operands[1].esil);
356 op->dst = parsed_operands[0].value;
357 op->src[0] = parsed_operands[1].value;
358 rz_strbuf_setf(&
op->esil,
"%s,%s,=", parsed_operands[1].esil, parsed_operands[0].esil);
362 op->src[0] = parsed_operands[0].value;
363 op->dst = parsed_operands[1].value;
364 rz_strbuf_setf(&
op->esil,
"%s,%s,=", parsed_operands[0].esil, parsed_operands[1].esil);
368 op->dst = parsed_operands[0].value;
373 op->src[0] = parsed_operands[0].value;
RZ_API RzAnalysisValue * rz_analysis_value_new(void)
return memset(p, 0, total)
RZ_API RzRegItem * rz_reg_get(RzReg *reg, const char *name, int type)
rsp_instruction rsp_instruction_decode(ut64 pc, ut32 iw)
const char * rsp_gp_reg_soft_names[]
const char * rsp_c0_reg_names[]
static ut64 rsp_mem_addr(ut64 addr, ut64 base)
@ RSP_OPND_C2_VREG_ELEMENT
@ RSP_OPND_C2_VREG_SCALAR
@ RZ_ANALYSIS_OP_TYPE_CMP
@ RZ_ANALYSIS_OP_TYPE_SUB
@ RZ_ANALYSIS_OP_TYPE_LOAD
@ RZ_ANALYSIS_OP_TYPE_UNK
@ RZ_ANALYSIS_OP_TYPE_MUL
@ RZ_ANALYSIS_OP_TYPE_JMP
@ RZ_ANALYSIS_OP_TYPE_AND
@ RZ_ANALYSIS_OP_TYPE_UJMP
@ RZ_ANALYSIS_OP_TYPE_NOR
@ RZ_ANALYSIS_OP_TYPE_SAR
@ RZ_ANALYSIS_OP_TYPE_ABS
@ RZ_ANALYSIS_OP_TYPE_CMOV
@ RZ_ANALYSIS_OP_TYPE_TRAP
@ RZ_ANALYSIS_OP_TYPE_CCALL
@ RZ_ANALYSIS_OP_TYPE_CALL
@ RZ_ANALYSIS_OP_TYPE_ADD
@ RZ_ANALYSIS_OP_TYPE_STORE
@ RZ_ANALYSIS_OP_TYPE_SHR
@ RZ_ANALYSIS_OP_TYPE_CJMP
@ RZ_ANALYSIS_OP_TYPE_MOV
@ RZ_ANALYSIS_OP_TYPE_SHL
@ RZ_ANALYSIS_OP_TYPE_ILL
@ RZ_ANALYSIS_OP_TYPE_RET
@ RZ_ANALYSIS_OP_TYPE_NOP
@ RZ_ANALYSIS_OP_TYPE_XOR
static ut32 rz_read_ble32(const void *src, bool big_endian)
RZ_API const char * rz_strbuf_set(RzStrBuf *sb, const char *s)
RZ_API const char * rz_strbuf_setf(RzStrBuf *sb, const char *fmt,...) RZ_PRINTF_CHECK(2
@ RZ_TYPE_COND_LE
Less or equal.
@ RZ_TYPE_COND_GE
Greater or equal.
@ RZ_TYPE_COND_NE
Not equal.
@ RZ_TYPE_COND_GT
Greater than.
@ RZ_TYPE_COND_LT
Less than.
rsp_operand operands[RSP_MAX_OPNDS]