13 #define GB_DIS_LEN_ONLY
14 #include "../../asm/arch/gb/gbdis.c"
15 #include "../arch/gb/gb_makros.h"
16 #include "../arch/gb/meta_gb_cmt.c"
20 static const char *
regs_1[] = {
"Z",
"N",
"H",
"C" };
21 static const char *
regs_8[] = {
"b",
"c",
"d",
"e",
"h",
"l",
"a",
"a" };
22 static const char *
regs_x[] = {
"b",
"c",
"d",
"e",
"h",
"l",
"hl",
"a" };
23 static const char *
regs_16[] = {
"bc",
"de",
"hl",
"sp" };
24 static const char *
regs_16_alt[] = {
"bc",
"de",
"hl",
"af" };
41 rz_strbuf_setf(&
op->esil,
"2,sp,-=,pc,sp,=[2],%" PFMT64d ",pc,:=", (
op->jump & 0xffff));
55 rz_strbuf_setf(&
op->esil,
"%c,?{,2,sp,-=,pc,sp,=[2],%" PFMT64d ",pc,:=,}",
cond, (
op->jump & 0xffff));
57 rz_strbuf_setf(&
op->esil,
"%c,!,?{,2,sp,-=,pc,sp,=[2],%" PFMT64d ",pc,:=,}",
cond, (
op->jump & 0xffff));
67 if ((data & 0xd0) == 0xd0) {
73 rz_strbuf_setf(&
op->esil,
"%c,?{,sp,[2],pc,:=,2,sp,+=,}",
cond);
75 rz_strbuf_setf(&
op->esil,
"%c,!,?{,sp,[2],pc,:=,2,sp,+=,}",
cond);
114 op->src[0]->absolute =
true;
115 if (data == 0x34 || data == 0x35) {
119 rz_strbuf_set(&
op->esil,
"1,hl,[1],+,hl,=[1],3,$c,H,:=,$z,Z,:=,0,N,:=");
121 rz_strbuf_set(&
op->esil,
"1,hl,[1],-,hl,=[1],4,$b,H,:=,$z,Z,:=,1,N,:=");
124 if (!(data & (1 << 2))) {
134 rz_strbuf_setf(&
op->esil,
"1,%s,+=,3,$c,H,:=,$z,Z,:=,0,N,:=",
regs_8[data >> 3]);
136 rz_strbuf_setf(&
op->esil,
"1,%s,-=,4,$b,H,:=,$z,Z,:=,1,N,:=",
regs_8[data >> 3]);
154 op->src[0]->imm = (
st8)data;
172 op->src[0]->imm = data[1];
175 op->src[0]->absolute =
true;
176 op->val =
op->src[0]->imm;
193 op->src[1]->imm = (
st8)data;
214 op->src[0]->absolute =
true;
215 op->src[0]->imm = (data != 0xf3);
234 op->src[0]->imm = 0xff;
275 if ((data & 0xf) == 1) {
287 op->src[0]->imm = ((~(0x1 << ((data >> 3) & 7))) & 0xff);
288 op->dst->memref = ((data & 7) == 6);
290 if (
op->dst->memref) {
300 op->src[0]->imm = 1 << ((data >> 3) & 7);
301 op->dst->memref = ((data & 7) == 6);
303 if (
op->dst->memref) {
304 rz_strbuf_setf(&
op->esil,
"%" PFMT64d ",%s,[1],&,0,==,$z,Z,:=,0,N,:=,1,H,:=",
op->src[0]->imm,
regs_x[data & 7]);
306 rz_strbuf_setf(&
op->esil,
"%" PFMT64d ",%s,&,0,==,$z,Z,:=,0,N,:=,1,H,:=",
op->src[0]->imm,
regs_x[data & 7]);
313 op->src[0]->imm = (data >> 3) & 7;
314 op->dst->memref = ((data & 7) == 6);
316 if (
op->dst->memref) {
328 op->src[0]->memref = ((data[0] & 7) == 6);
331 if (
op->src[0]->memref) {
332 rz_strbuf_setf(&
op->esil,
"%s,[1],a,^=,$z,Z,:=,0,N,:=,0,H,:=,0,C,:=",
regs_x[data[0] & 7]);
334 rz_strbuf_setf(&
op->esil,
"%s,a,^=,$z,Z,:=,0,N,:=,0,H,:=,0,C,:=",
regs_x[data[0] & 7]);
338 if (
op->src[0]->memref) {
339 rz_strbuf_setf(&
op->esil,
"%s,[1],a,|=,$z,Z,:=,0,N,:=,0,H,:=,0,C,:=",
regs_x[data[0] & 7]);
341 rz_strbuf_setf(&
op->esil,
"%s,a,|=,$z,Z,:=,0,N,:=,0,H,:=,0,C,:=",
regs_x[data[0] & 7]);
345 if (
op->src[0]->memref) {
346 rz_strbuf_setf(&
op->esil,
"%s,[1],a,&=,$z,Z,:=,0,N,:=,1,H,:=,0,C,:=",
regs_x[data[0] & 7]);
348 rz_strbuf_setf(&
op->esil,
"%s,a,&=,$z,Z,:=,0,N,:=,1,H,:=,0,C,:=",
regs_x[data[0] & 7]);
352 if (
op->src[0]->memref) {
353 if (data[0] > 0x87) {
356 rz_strbuf_setf(&
op->esil,
"C,%s,[1],+,a,+=,$z,Z,:=,3,$c,H,:=,7,$c,C,:=,0,N,:=",
regs_x[data[0] & 7]);
358 rz_strbuf_setf(&
op->esil,
"%s,[1],a,+=,$z,Z,:=,3,$c,H,:=,7,$c,C,:=,0,N,:=",
regs_x[data[0] & 7]);
361 if (data[0] > 0x87) {
364 rz_strbuf_setf(&
op->esil,
"C,%s,+,a,+=,$z,Z,:=,3,$c,H,:=,7,$c,C,:=,0,N,:=",
regs_x[data[0] & 7]);
366 rz_strbuf_setf(&
op->esil,
"%s,a,+=,$z,Z,:=,3,$c,H,:=,7,$c,C,:=,0,N,:=",
regs_x[data[0] & 7]);
371 if (
op->src[0]->memref) {
372 if (data[0] > 0x97) {
375 rz_strbuf_setf(&
op->esil,
"C,%s,[1],+,a,-=,$z,Z,:=,4,$b,H,:=,8,$b,C,:=,1,N,:=",
regs_x[data[0] & 7]);
377 rz_strbuf_setf(&
op->esil,
"%s,[1],a,-=,$z,Z,:=,4,$b,H,:=,8,$b,C,:=,1,N,:=",
regs_x[data[0] & 7]);
380 if (data[0] > 0x97) {
383 rz_strbuf_setf(&
op->esil,
"C,%s,+,a,-=,$z,Z,:=,4,$b,H,:=,8,$b,C,:=,1,N,:=",
regs_x[data[0] & 7]);
385 rz_strbuf_setf(&
op->esil,
"%s,a,-=,$z,Z,:=,4,$b,H,:=,8,$b,C,:=,1,N,:=",
regs_x[data[0] & 7]);
390 if (
op->src[0]->memref) {
391 rz_strbuf_setf(&
op->esil,
"%s,[1],a,==,$z,Z,:=,4,$b,H,:=,8,$b,C,:=,1,N,:=",
regs_x[data[0] & 7]);
393 rz_strbuf_setf(&
op->esil,
"%s,a,==,$z,Z,:=,4,$b,H,:=,8,$b,C,:=,1,N,:=",
regs_x[data[0] & 7]);
407 op->src[0]->absolute =
true;
408 op->src[0]->imm = data[1];
411 rz_strbuf_setf(&
op->esil,
"0x%02x,a,^=,$z,Z,:=,0,N,:=,0,H,:=,0,C,:=", data[1]);
414 rz_strbuf_setf(&
op->esil,
"0x%02x,a,|=,$z,Z,:=,0,N,:=,0,H,:=,0,C,:=", data[1]);
417 rz_strbuf_setf(&
op->esil,
"0x%02x,a,&=,$z,Z,:=,0,N,:=,1,H,:=,0,C,:=", data[1]);
421 if (data[0] == 0xce) {
424 rz_strbuf_append(&
op->esil,
"a,+=,C,NUM,7,$c,C,:=,3,$c,H,:=,a,+=,7,$c,C,|,C,:=,3,$c,H,|=,a,a,=,$z,Z,:=,0,N,:=");
426 rz_strbuf_append(&
op->esil,
"a,+=,3,$c,H,:=,7,$c,C,:=,0,N,:=,a,a,=,$z,Z,:=");
431 if (data[0] == 0xde) {
434 rz_strbuf_append(&
op->esil,
"a,-=,C,NUM,8,$b,C,:=,4,$b,H,:=,a,-=,8,$b,C,|,C,=,4,$b,H,|,H,=,a,a,=,$z,Z,:=,1,N,:=");
436 rz_strbuf_append(&
op->esil,
"a,-=,4,$b,H,:=,8,$b,C,:=,1,N,:=,a,a,=,$z,Z,:=");
440 rz_strbuf_setf(&
op->esil,
"%d,a,==,$z,Z,:=,4,$b,H,:=,8,$b,C,:=,1,N,:=", data[1]);
450 op->src[0]->memref = 1;
451 op->src[0]->absolute =
true;
466 op->src[0]->memref = 1;
469 op->src[0]->base = 0xff00 + data[1];
473 op->src[0]->base = 0xff00;
479 if (
op->src[0]->base < 0x4000) {
480 op->ptr =
op->src[0]->base;
482 if (
op->addr > 0x3fff &&
op->src[0]->base < 0x8000) {
483 op->ptr =
op->src[0]->base + (
op->addr & 0xffffffffffff0000LL);
500 op->src[0]->absolute =
true;
501 if (data[0] == 0x36) {
502 op->src[0]->imm = data[1];
508 if (data[0] == 0x32) {
511 if (data[0] == 0x22) {
529 op->dst->base = 0xff00 + data[1];
533 op->dst->base = 0xff00;
552 if ((data & 7) == 6) {
554 rz_strbuf_setf(&
op->esil,
"4,%s,[1],>>,4,%s,[1],<<,|,%s,=[1],$z,Z,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
556 rz_strbuf_setf(&
op->esil,
"4,%s,>>,4,%s,<<,|,%s,=,$z,Z,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
565 if ((data & 7) == 6) {
567 rz_strbuf_setf(&
op->esil,
"7,%s,[1],>>,1,&,C,:=,1,%s,[1],<<,C,|,%s,=[1],$z,Z,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
569 rz_strbuf_setf(&
op->esil,
"1,%s,<<=,7,$c,C,:=,C,%s,|=,$z,Z,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7]);
578 if ((data & 7) == 6) {
580 rz_strbuf_setf(&
op->esil,
"1,%s,<<,C,|,%s,=[1],7,$c,C,:=,$z,Z,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7]);
582 rz_strbuf_setf(&
op->esil,
"1,%s,<<,C,|,%s,=,7,$c,C,:=,$z,Z,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7]);
591 if ((data & 7) == 6) {
593 rz_strbuf_setf(&
op->esil,
"1,%s,[1],&,C,:=,1,%s,[1],>>,7,C,<<,|,%s,=[1],$z,Z,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
595 rz_strbuf_setf(&
op->esil,
"1,%s,&,C,:=,1,%s,>>,7,C,<<,|,%s,=,$z,Z,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
604 if ((data & 7) == 6) {
606 rz_strbuf_setf(&
op->esil,
"1,%s,[1],&,H,:=,1,%s,[1],>>,7,C,<<,|,%s,=[1],H,C,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
608 rz_strbuf_setf(&
op->esil,
"1,%s,&,H,:=,1,%s,>>,7,C,<<,|,%s,=,H,C,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
618 op->dst->memref = ((data & 7) == 6);
619 if (
op->dst->memref) {
620 rz_strbuf_setf(&
op->esil,
"1,%s,[1],<<,%s,=[1],7,$c,C,:=,%s,[1],%s,=[1],$z,Z,:=,0,H,:=,0,N,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
622 rz_strbuf_setf(&
op->esil,
"1,%s,<<=,7,$c,C,:=,%s,%s,=,$z,Z,:=,0,H,:=0,N,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
631 op->dst->memref = ((data & 7) == 6);
632 if (
op->dst->memref) {
633 rz_strbuf_setf(&
op->esil,
"1,%s,[1],&,C,:=,0x80,%s,[1],&,1,%s,[1],>>,|,%s,=[1],$z,Z,:=,0,N,:=,0,H,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
635 rz_strbuf_setf(&
op->esil,
"1,%s,&,C,:=,0x80,%s,&,1,%s,>>,|,%s,=,$z,Z,:=,0,N,:=,0,H,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
644 op->dst->memref = ((data & 7) == 6);
645 if (
op->dst->memref) {
646 rz_strbuf_setf(&
op->esil,
"1,%s,[1],&,C,:=,1,%s,[1],>>,%s,=[1],$z,Z,:=,0,N,:=,0,H,:=",
regs_x[data & 7],
regs_x[data & 7],
regs_x[data & 7]);
648 rz_strbuf_setf(&
op->esil,
"1,%s,&,C,:=,1,%s,>>=,$z,Z,:=,0,N,:=,0,H,:=",
regs_x[data & 7],
regs_x[data & 7]);
670 val = (
val - 0x60) & 0xff;
673 val = (
val - 0x06) & 0xff;
676 if (
C || (
val > 0x99)) {
677 val = (
val + 0x60) & 0xff;
679 if (
H || ((
val & 0x0f) > 0x09)) {
695 memset(mn,
'\0',
sizeof(
char) *
sizeof(mn));
1201 op->failcycles = 12;
1243 op->failcycles = 12;
1323 rz_strbuf_set(&
op->esil,
"a,daa,a,=,$z,Z,:=,3,$c,H,:=,7,$c,C,:=");
1331 switch (data[1] >> 3) {
1333 if ((data[1] & 7) == 6) {
1342 if ((data[1] & 7) == 6) {
1351 if ((data[1] & 7) == 6) {
1360 if ((data[1] & 7) == 6) {
1369 if ((data[1] & 7) == 6) {
1378 if ((data[1] & 7) == 6) {
1387 if ((data[1] & 7) == 6) {
1396 if ((data[1] & 7) == 6) {
1412 if ((data[1] & 7) == 6) {
1428 if ((data[1] & 7) == 6) {
1444 if ((data[1] & 7) == 6) {
1503 "gpr mbcrom .16 14 0\n"
1504 "gpr mbcram .16 16 0\n"
1506 "gpr ime .1 18 0\n";
1540 .desc =
"Gameboy CPU code analysis plugin",
1551 #ifndef RZ_PLUGIN_INCORE
RZ_API RzAnalysisValue * rz_analysis_value_new(void)
static void gb_analysis_cb_swap(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_esil_call(RzAnalysisOp *op)
static void gb_analysis_cb_srl(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_id(RzAnalysis *analysis, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_mov_hl_sp(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_esil_cjmp(RzAnalysisOp *op, const ut8 data)
static char * get_reg_profile(RzAnalysis *analysis)
static bool gb_custom_daa(RzAnalysisEsil *esil)
static int gb_anop(RzAnalysis *analysis, RzAnalysisOp *op, ut64 addr, const ut8 *data, int len, RzAnalysisOpMask mask)
static void gb_analysis_cb_rrc(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_esil_ccall(RzAnalysisOp *op, const ut8 data)
static void gb_analysis_load(RzReg *reg, RzAnalysisOp *op, const ut8 *data)
static const char * regs_8[]
static int esil_gb_init(RzAnalysisEsil *esil)
static void gb_analysis_xor_ccf(RzReg *reg, RzAnalysisOp *op)
static void gb_analysis_store(RzReg *reg, RzAnalysisOp *op, const ut8 *data)
static void gb_analysis_mov_scf(RzReg *reg, RzAnalysisOp *op)
static void gb_analysis_esil_ret(RzAnalysisOp *op)
static const char * regs_16[]
static const char * regs_x[]
static void gb_analysis_xoaasc_imm(RzReg *reg, RzAnalysisOp *op, const ut8 *data)
static void gb_analysis_and_res(RzAnalysis *analysis, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_xor_cpl(RzReg *reg, RzAnalysisOp *op)
static void gb_analysis_cb_sla(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_pp(RzReg *reg, RzAnalysisOp *op, const ut8 data)
RZ_API RzLibStruct rizin_plugin
RzAnalysisPlugin rz_analysis_plugin_gb
static const char * regs_16_alt[]
static void gb_analysis_cb_rl(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_cb_sra(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_or_set(RzAnalysis *analysis, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_esil_cret(RzAnalysisOp *op, const ut8 data)
static ut8 gb_op_calljump(RzAnalysis *a, RzAnalysisOp *op, const ut8 *data, ut64 addr)
static void gb_analysis_mov_reg(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_cb_rlc(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_cond(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_mov_sp_hl(RzReg *reg, RzAnalysisOp *op)
static void gb_analysis_load_hl(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_mov_imm(RzReg *reg, RzAnalysisOp *op, const ut8 *data)
static void gb_analysis_store_hl(RzReg *reg, RzAnalysisOp *op, const ut8 *data)
static const char * regs_1[]
static void gb_analysis_xoaasc(RzReg *reg, RzAnalysisOp *op, const ut8 *data)
static int esil_gb_fini(RzAnalysisEsil *esil)
static void gb_analysis_cb_rr(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_add_hl(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_add_sp(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_esil_jmp(RzAnalysisOp *op)
static void gb_analysis_and_bit(RzReg *reg, RzAnalysisOp *op, const ut8 data)
static void gb_analysis_jmp_hl(RzReg *reg, RzAnalysisOp *op)
static void gb_analysis_mov_ime(RzReg *reg, RzAnalysisOp *op, const ut8 data)
RZ_API int rz_analysis_esil_get_parm(RzAnalysisEsil *esil, const char *str, ut64 *num)
RZ_API bool rz_analysis_esil_pushnum(RzAnalysisEsil *esil, ut64 num)
RZ_API int rz_analysis_esil_reg_read(RzAnalysisEsil *esil, const char *regname, ut64 *num, int *size)
RZ_API bool rz_analysis_esil_set_op(RzAnalysisEsil *esil, const char *op, RzAnalysisEsilOpCb code, ut32 push, ut32 pop, ut32 type)
RZ_API char * rz_analysis_esil_pop(RzAnalysisEsil *esil)
#define GB_IB_DST(x, y, z)
#define GB_IS_VBANK_DST(x, y)
#define GB_IS_RAM_DST(x, y)
#define GB_SOFTCAST(x, y)
static const char * cb_ops[]
static const char * cb_regs[]
static void gb_hardware_register_name(char *reg, ut8 offset)
static int gbOpLength(int gboptype)
return memset(p, 0, total)
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
RZ_API RzRegItem * rz_reg_get(RzReg *reg, const char *name, int type)
RZ_API bool rz_reg_set_value(RzReg *reg, RzRegItem *item, ut64 value)
@ RZ_ANALYSIS_ESIL_OP_TYPE_MATH
@ RZ_ANALYSIS_ESIL_OP_TYPE_CUSTOM
@ RZ_ANALYSIS_OP_MASK_DISASM
@ RZ_ANALYSIS_OP_TYPE_CMP
@ RZ_ANALYSIS_OP_TYPE_SUB
@ RZ_ANALYSIS_OP_TYPE_LOAD
@ RZ_ANALYSIS_OP_TYPE_UNK
@ RZ_ANALYSIS_OP_TYPE_ROL
@ RZ_ANALYSIS_OP_TYPE_JMP
@ RZ_ANALYSIS_OP_TYPE_AND
@ RZ_ANALYSIS_OP_TYPE_SAL
@ RZ_ANALYSIS_OP_TYPE_RPUSH
@ RZ_ANALYSIS_OP_TYPE_UJMP
@ RZ_ANALYSIS_OP_TYPE_UCCALL
@ RZ_ANALYSIS_OP_TYPE_ROR
@ RZ_ANALYSIS_OP_TYPE_SAR
@ RZ_ANALYSIS_OP_TYPE_NULL
@ RZ_ANALYSIS_OP_TYPE_CCALL
@ RZ_ANALYSIS_OP_TYPE_CALL
@ RZ_ANALYSIS_OP_TYPE_ADD
@ RZ_ANALYSIS_OP_TYPE_STORE
@ RZ_ANALYSIS_OP_TYPE_CRET
@ RZ_ANALYSIS_OP_TYPE_SHR
@ RZ_ANALYSIS_OP_TYPE_POP
@ RZ_ANALYSIS_OP_TYPE_CJMP
@ RZ_ANALYSIS_OP_TYPE_UCJMP
@ RZ_ANALYSIS_OP_TYPE_MOV
@ RZ_ANALYSIS_OP_TYPE_ILL
@ RZ_ANALYSIS_OP_TYPE_UCALL
@ RZ_ANALYSIS_OP_TYPE_RET
@ RZ_ANALYSIS_OP_TYPE_NOP
@ RZ_ANALYSIS_OP_TYPE_ACMP
@ RZ_ANALYSIS_OP_TYPE_XOR
RZ_API const char * rz_strbuf_set(RzStrBuf *sb, const char *s)
RZ_API bool rz_strbuf_append(RzStrBuf *sb, const char *s)
RZ_API const char * rz_strbuf_setf(RzStrBuf *sb, const char *fmt,...) RZ_PRINTF_CHECK(2
@ RZ_TYPE_COND_NE
Not equal.
#define cond(bop, top, mask, flags)
RzAnalysisEsilCallbacks cb
ut64(WINAPI *w32_GetEnabledXStateFeatures)()