{
case PDP11_OPCODE_NO_OPS:
FPRINTF (F, OP.name);
- break;
+ goto done;
case PDP11_OPCODE_REG:
FPRINTF (F, OP.name);
FPRINTF (F, AFTER_INSTRUCTION);
print_reg (dst, info);
- break;
+ goto done;
case PDP11_OPCODE_OP:
FPRINTF (F, OP.name);
FPRINTF (F, AFTER_INSTRUCTION);
dst |= JUMP;
if (print_operand (&memaddr, dst, info) < 0)
return -1;
- break;
+ goto done;
case PDP11_OPCODE_REG_OP:
FPRINTF (F, OP.name);
FPRINTF (F, AFTER_INSTRUCTION);
dst |= JUMP;
if (print_operand (&memaddr, dst, info) < 0)
return -1;
- break;
+ goto done;
case PDP11_OPCODE_REG_OP_REV:
FPRINTF (F, OP.name);
FPRINTF (F, AFTER_INSTRUCTION);
return -1;
FPRINTF (F, OPERAND_SEPARATOR);
print_reg (src, info);
- break;
+ goto done;
case PDP11_OPCODE_AC_OP:
{
int ac = (opcode & 0xe0) >> 6;
FPRINTF (F, OPERAND_SEPARATOR);
if (print_operand (&memaddr, dst, info) < 0)
return -1;
- break;
+ goto done;
}
case PDP11_OPCODE_OP_OP:
FPRINTF (F, OP.name);
FPRINTF (F, OPERAND_SEPARATOR);
if (print_operand (&memaddr, dst, info) < 0)
return -1;
- break;
+ goto done;
case PDP11_OPCODE_DISPL:
{
int displ = (opcode & 0xff) << 8;
FPRINTF (F, OP.name);
FPRINTF (F, AFTER_INSTRUCTION);
(*info->print_address_func) (address, info);
- break;
+ goto done;
}
case PDP11_OPCODE_REG_DISPL:
{
print_reg (src, info);
FPRINTF (F, OPERAND_SEPARATOR);
(*info->print_address_func) (address, info);
- break;
+ goto done;
}
case PDP11_OPCODE_IMM8:
{
FPRINTF (F, OP.name);
FPRINTF (F, AFTER_INSTRUCTION);
FPRINTF (F, "%o", code);
- break;
+ goto done;
}
case PDP11_OPCODE_IMM6:
{
FPRINTF (F, OP.name);
FPRINTF (F, AFTER_INSTRUCTION);
FPRINTF (F, "%o", code);
- break;
+ goto done;
}
case PDP11_OPCODE_IMM3:
{
FPRINTF (F, OP.name);
FPRINTF (F, AFTER_INSTRUCTION);
FPRINTF (F, "%o", code);
- break;
+ goto done;
+ }
+ case PDP11_OPCODE_ILLEGAL:
+ {
+ FPRINTF (F, ".word");
+ FPRINTF (F, AFTER_INSTRUCTION);
+ FPRINTF (F, "%o", opcode);
+ goto done;
}
default:
/* TODO: is this a proper way of signalling an error? */
}
#undef OP
}
+ done:
return memaddr - start_memaddr;
}