/* Given an operands addressing mode, value and associated register, * print the canonical representation of it to stdout. * * Returns the number of characters printed. */ static int format_operand(msp430_amode_t amode, uint16_t addr, msp430_reg_t reg) { int len = 0; len += format_addr(amode, addr); len += format_reg(amode, reg); return len; }
static void format_normal(const xed_inst_t *xi) { #ifdef WINDOWS_FORMAT strcpy(inst_buffer, g_inst_str); #else format_reg(inst_buffer, g_inst_str); //Hush.b format_scasbb(inst_buffer); format_cmpsbb(inst_buffer); //Hush.e #endif }
static void format_lea(const xed_inst_t *xi) { char r_str[50]; INST *inst = get_inst(g_pc); switch(inst->type){ case LEA_8: fprintf(stderr, "error in format_lea: lea_8\n"); exit(0); case LEA_16: fprintf(stderr, "error in format_lea: lea_16\n"); exit(0); case LEA_32: sprintf(r_str, "dword ptr"); break; } #ifdef WINDOWS_FORMAT strcpy(inst_buffer, replace(g_inst_str, "ptr", r_str)); #else format_reg(inst_buffer, g_inst_str); #endif }
static void dump_reg( struct sh_reg reg, struct sh_srcreg *indreg, const struct dump_info *di ) { assert( reg.is_reg == 1 ); switch (sh_reg_type( reg )) { case SVGA3DREG_TEMP: format_reg("r", reg, NULL); break; case SVGA3DREG_INPUT: format_reg("v", reg, indreg); break; case SVGA3DREG_CONST: format_reg("c", reg, indreg); break; case SVGA3DREG_ADDR: /* VS */ /* SVGA3DREG_TEXTURE */ /* PS */ assert(!reg.relative); if (di->is_ps) { format_reg("t", reg, NULL); } else { format_reg("a", reg, NULL); } break; case SVGA3DREG_RASTOUT: assert(!reg.relative); switch (reg.number) { case 0 /*POSITION*/: _debug_printf( "oPos" ); break; case 1 /*FOG*/: _debug_printf( "oFog" ); break; case 2 /*POINT_SIZE*/: _debug_printf( "oPts" ); break; default: assert( 0 ); _debug_printf( "???" ); } break; case SVGA3DREG_ATTROUT: assert( reg.number < 2 ); format_reg("oD", reg, NULL); break; case SVGA3DREG_TEXCRDOUT: /* VS */ /* SVGA3DREG_OUTPUT */ /* VS3.0+ */ if (!di->is_ps && di->version >= SVGA3D_VS_30) { format_reg("o", reg, indreg); } else { format_reg("oT", reg, NULL); } break; case SVGA3DREG_COLOROUT: format_reg("oC", reg, NULL); break; case SVGA3DREG_DEPTHOUT: assert(!reg.relative); assert(reg.number == 0); _debug_printf("oDepth"); break; case SVGA3DREG_SAMPLER: format_reg("s", reg, NULL); break; case SVGA3DREG_CONSTBOOL: format_reg("b", reg, NULL); break; case SVGA3DREG_CONSTINT: format_reg("i", reg, NULL); break; case SVGA3DREG_LOOP: assert(!reg.relative); assert( reg.number == 0 ); _debug_printf( "aL" ); break; case SVGA3DREG_MISCTYPE: assert(!reg.relative); switch (reg.number) { case SVGA3DMISCREG_POSITION: _debug_printf("vPos"); break; case SVGA3DMISCREG_FACE: _debug_printf("vFace"); break; default: assert(0); _debug_printf("???"); } break; case SVGA3DREG_LABEL: format_reg("l", reg, NULL); break; case SVGA3DREG_PREDICATE: format_reg("p", reg, NULL); break; default: assert( 0 ); _debug_printf( "???" ); } }