示例#1
0
static int _6502Disass (RAsmOp *op, const ut8 *buf, ut64 len)
{
	int i;
	for (i=0;ops[i].name != NULL;i++) {
		if (ops[i].op == buf[0]) {
			switch (ops[i].len) {
			case 1:
				sprintf (op->buf_asm, "%s", ops[i].name);
				break;
			case 2:
				sprintf (op->buf_asm, ops[i].name, buf[1]);
				break;
			case 3:
				sprintf (op->buf_asm, ops[i].name, buf[1]+0x100*buf[2]);
				break;
			case 4:
				sprintf (op->buf_asm, ops[i].name,
					buf[1]+0x100*buf[2]+0x10000*buf[3]);
				break;
			default:
				goto beach;
			}
			return ops[i].len;
		}
	}
beach:
	return snesDisass (op, buf, len);
}
示例#2
0
static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
	int dlen = snesDisass(op,buf,len);
	if (dlen<0) dlen=0;
	op->size = dlen;
	return dlen;
}