Skip to content

Commit

Permalink
asm: removed sdb_fmt in /arch/ (#4123)
Browse files Browse the repository at this point in the history
  • Loading branch information
HN026 committed Jan 19, 2024
1 parent cad1e5c commit c33be9f
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 36 deletions.
17 changes: 8 additions & 9 deletions librz/asm/arch/6502/6502dis.c
Original file line number Diff line number Diff line change
Expand Up @@ -143,40 +143,39 @@ static int _6502Disass(ut64 pc, RzAsmOp *op, const ut8 *buf, ut64 len) {
int i;
for (i = 0; ops[i].name != NULL; i++) {
if (ops[i].op == buf[0]) {
const char *buf_asm = "invalid";
int len = ops[i].len;
switch (ops[i].len) {
case 1:
buf_asm = sdb_fmt("%s", ops[i].name);
rz_asm_op_setf_asm(op, "%s", ops[i].name);
break;
case 2:
if (len > 1) {
buf_asm = sdb_fmt(ops[i].name, buf[1]);
rz_asm_op_setf_asm(op, ops[i].name, buf[1]);
} else {
buf_asm = "truncated";
rz_asm_op_set_asm(op, "truncated");
len = -1;
}
break;
case 3:
if (len > 2) {
buf_asm = sdb_fmt(ops[i].name, buf[1] + 0x100 * buf[2]);
rz_asm_op_setf_asm(op, ops[i].name, buf[1] + 0x100 * buf[2]);
} else {
buf_asm = "truncated";
rz_asm_op_set_asm(op, "truncated");
len = -1;
}
break;
case 4:
if (len > 3) {
buf_asm = sdb_fmt(ops[i].name, buf[1] + 0x100 * buf[2] + 0x10000 * buf[3]);
rz_asm_op_setf_asm(op, ops[i].name, buf[1] + 0x100 * buf[2] + 0x10000 * buf[3]);
} else {
buf_asm = "truncated";
rz_asm_op_set_asm(op, "truncated");
len = -1;
}
break;
default:
rz_asm_op_set_asm(op, "invalid");
goto beach;
}
rz_strbuf_set(&op->buf_asm, buf_asm);
return len;
}
}
Expand Down
15 changes: 8 additions & 7 deletions librz/asm/arch/gb/gbdis.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,28 +156,29 @@ static int gbDisass(RzAsmOp *op, const ut8 *buf, int len) {
if (len < foo) {
return 0;
}
const char *buf_asm = "invalid";
char reg[32];
memset(reg, '\0', sizeof(reg));
switch (gb_op[buf[0]].type) {
case GB_8BIT:
buf_asm = sdb_fmt("%s", gb_op[buf[0]].name);
rz_asm_op_setf_asm(op, "%s", gb_op[buf[0]].name);
break;
case GB_16BIT:
buf_asm = sdb_fmt("%s %s", cb_ops[buf[1] >> 3u], cb_regs[buf[1] & 7u]);
rz_asm_op_setf_asm(op, "%s %s", cb_ops[buf[1] >> 3u], cb_regs[buf[1] & 7u]);
break;
case GB_8BIT + ARG_8:
buf_asm = sdb_fmt(gb_op[buf[0]].name, buf[1]);
rz_asm_op_setf_asm(op, gb_op[buf[0]].name, buf[1]);
break;
case GB_8BIT + ARG_16:
buf_asm = sdb_fmt(gb_op[buf[0]].name, buf[1] + 0x100 * buf[2]);
rz_asm_op_setf_asm(op, gb_op[buf[0]].name, buf[1] + 0x100 * buf[2]);
break;
case GB_8BIT + ARG_8 + GB_IO:
gb_hardware_register_name(reg, buf[1]);
buf_asm = sdb_fmt(gb_op[buf[0]].name, reg);
rz_asm_op_setf_asm(op, gb_op[buf[0]].name, reg);
break;
default:
rz_asm_op_set_asm(op, "invalid");
break;
}
rz_strbuf_set(&op->buf_asm, buf_asm);
return foo;
}
#endif
39 changes: 19 additions & 20 deletions librz/asm/arch/i4004/i4004dis.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,40 +62,39 @@ static int i4004dis(RzAsmOp *op, const ut8 *buf, int len) {
int rlen = i4004_get_ins_len(*buf);
ut8 high = (*buf & 0xf0) >> 4;
ut8 low = (*buf & 0xf);
const char *buf_asm = "invalid";
if (rlen > len) {
return op->size = 0;
}
switch (high) {
case 0: buf_asm = low ? "invalid" : "nop"; break;
case 1: buf_asm = sdb_fmt("jcn %d 0x%02x", low, buf[1]); break;
case 0: rz_asm_op_set_asm(op, low ? "invalid" : "nop"); break;
case 1: rz_asm_op_setf_asm(op, "jcn %d 0x%02x", low, buf[1]); break;
case 2:
if (rlen == 1) {
buf_asm = sdb_fmt("src r%d", (low & 0xe));
rz_asm_op_setf_asm(op, "src r%d", (low & 0xe));
} else {
buf_asm = sdb_fmt("fim r%d, 0x%02x", (low & 0xe), buf[1]);
rz_asm_op_setf_asm(op, "fim r%d, 0x%02x", (low & 0xe), buf[1]);
}
break;
case 3:
if ((low & 1) == 1) {
buf_asm = sdb_fmt("jin r%d", (low & 0xe));
rz_asm_op_setf_asm(op, "jin r%d", (low & 0xe));
} else {
buf_asm = sdb_fmt("fin r%d", (low & 0xe));
rz_asm_op_setf_asm(op, "fin r%d", (low & 0xe));
}
break;
case 4: buf_asm = sdb_fmt("jun 0x%03x", ((ut16)(low << 8) | buf[1])); break;
case 5: buf_asm = sdb_fmt("jms 0x%03x", ((ut16)(low << 8) | buf[1])); break;
case 6: buf_asm = sdb_fmt("inc r%d", low); break;
case 7: buf_asm = sdb_fmt("isz r%d, 0x%02x", low, buf[1]); break;
case 8: buf_asm = sdb_fmt("add r%d", low); break;
case 9: buf_asm = sdb_fmt("sub r%d", low); break;
case 10: buf_asm = sdb_fmt("ld r%d", low); break;
case 11: buf_asm = sdb_fmt("xch r%d", low); break;
case 12: buf_asm = sdb_fmt("bbl %d", low); break;
case 13: buf_asm = sdb_fmt("ldm %d", low); break;
case 14: buf_asm = i4004_e[low]; break;
case 15: buf_asm = i4004_f[low]; break;
case 4: rz_asm_op_setf_asm(op, "jun 0x%03x", ((ut16)(low << 8) | buf[1])); break;
case 5: rz_asm_op_setf_asm(op, "jms 0x%03x", ((ut16)(low << 8) | buf[1])); break;
case 6: rz_asm_op_setf_asm(op, "inc r%d", low); break;
case 7: rz_asm_op_setf_asm(op, "isz r%d, 0x%02x", low, buf[1]); break;
case 8: rz_asm_op_setf_asm(op, "add r%d", low); break;
case 9: rz_asm_op_setf_asm(op, "sub r%d", low); break;
case 10: rz_asm_op_setf_asm(op, "ld r%d", low); break;
case 11: rz_asm_op_setf_asm(op, "xch r%d", low); break;
case 12: rz_asm_op_setf_asm(op, "bbl %d", low); break;
case 13: rz_asm_op_setf_asm(op, "ldm %d", low); break;
case 14: rz_asm_op_set_asm(op, i4004_e[low]); break;
case 15: rz_asm_op_set_asm(op, i4004_f[low]); break;
default: rz_asm_op_set_asm(op, "invalid"); break;
}
rz_strbuf_set(&op->buf_asm, buf_asm);
return op->size = rlen;
}

0 comments on commit c33be9f

Please sign in to comment.