static void lc3b_bc_insn_print(const void *contents, FILE *f, int indent_level) { const lc3b_insn *insn = (const lc3b_insn *)contents; fprintf(f, "%*s_Instruction_\n", indent_level, ""); fprintf(f, "%*sImmediate Value:", indent_level, ""); if (!insn->imm.abs) fprintf(f, " (nil)\n"); else { indent_level++; fprintf(f, "\n"); yasm_value_print(&insn->imm, f, indent_level); fprintf(f, "%*sType=", indent_level, ""); switch (insn->imm_type) { case LC3B_IMM_NONE: fprintf(f, "NONE-SHOULDN'T HAPPEN"); break; case LC3B_IMM_4: fprintf(f, "4-bit"); break; case LC3B_IMM_5: fprintf(f, "5-bit"); break; case LC3B_IMM_6_WORD: fprintf(f, "6-bit, word-multiple"); break; case LC3B_IMM_6_BYTE: fprintf(f, "6-bit, byte-multiple"); break; case LC3B_IMM_8: fprintf(f, "8-bit, word-multiple"); break; case LC3B_IMM_9: fprintf(f, "9-bit, signed, word-multiple"); break; case LC3B_IMM_9_PC: fprintf(f, "9-bit, signed, word-multiple, PC-relative"); break; } indent_level--; } /* FIXME fprintf(f, "\n%*sOrigin=", indent_level, ""); if (insn->origin) { fprintf(f, "\n"); yasm_symrec_print(insn->origin, f, indent_level+1); } else fprintf(f, "(nil)\n"); */ fprintf(f, "%*sOpcode: %04x\n", indent_level, "", (unsigned int)insn->opcode); }
static void lc3b_ea_print(const yasm_effaddr *ea, FILE *f, int indent_level) { fprintf(f, "%*sDisp:\n", indent_level, ""); yasm_value_print(&ea->disp, f, indent_level+1); }