Fill op->mnemonic in anal-gb

This commit is contained in:
condret 2019-11-03 07:01:40 +01:00
parent 711bbdd9e4
commit 31d6b5764a
2 changed files with 25 additions and 4 deletions

View File

@ -1,5 +1,5 @@
/* radare - LGPL - Copyright 2012 - pancake<nopcode.org>
2015 - condret
2019 - condret
this file was based on anal_i8080.c */
@ -714,8 +714,31 @@ static int gb_anop(RAnal *anal, RAnalOp *op, ut64 addr, const ut8 *data, int len
int ilen = gbOpLength (gb_op[data[0]].type);
if (ilen > len) {
ilen = 0;
} else if (mask & R_ANAL_OP_MASK_DISASM) {
memset (op, '\0', sizeof (RAnalOp));
char mn[32];
memset (mn, '\0', sizeof (char) * sizeof (mn));
switch (gb_op[data[0]].type) {
case GB_8BIT:
sprintf (mn, "%s", gb_op[data[0]].name);
break;
case GB_16BIT:
sprintf (mn, "%s %s", cb_ops[data[1] >> 3], cb_regs[data[1] & 7]);
break;
case GB_8BIT + ARG_8:
sprintf (mn, gb_op[data[0]].name, data[1]);
break;
case GB_8BIT + ARG_16:
sprintf (mn, gb_op[data[0]].name, data[1] | (data[2] << 8));
break;
case GB_8BIT + ARG_8 + GB_IO:
sprintf (mn, gb_op[data[0]].name, 0xff00 | data[1]);
break;
}
op->mnemonic = strdup (mn);
} else {
memset (op, '\0', sizeof (RAnalOp));
}
memset (op, '\0', sizeof (RAnalOp));
op->addr = addr;
op->type = R_ANAL_OP_TYPE_UNK;
op->size = ilen;

View File

@ -12,14 +12,12 @@ typedef struct{
const int type;
} gb_opcode;
#ifndef GB_DIS_LEN_ONLY
static const char *cb_ops[]={ "rlc","rrc","rl","rr","sla","sra","swap","srl",
"bit 0,","bit 1,","bit 2,","bit 3,","bit 4,","bit 5,","bit 6,","bit 7,",
"res 0,","res 1,","res 2,","res 3,","res 4,","res 5,","res 6,","res 7,",
"set 0,","set 1,","set 2,","set 3,","set 4,","set 5,","set 6,","set 7,"};
static const char *cb_regs[]={ "b","c","d","e","h","l","[hl]","a"};
#endif
static gb_opcode gb_op[] = {
{"nop" ,GB_8BIT}, //0x00