static void
bc_align_print(const void *contents, FILE *f, int indent_level)
{
    const bytecode_align *align = (const bytecode_align *)contents;
    fprintf(f, "%*s_Align_\n", indent_level, "");
    fprintf(f, "%*sBoundary=", indent_level, "");
    yasm_expr_print(align->boundary, f);
    fprintf(f, "\n%*sFill=", indent_level, "");
    yasm_expr_print(align->fill, f);
    fprintf(f, "\n%*sMax Skip=", indent_level, "");
    yasm_expr_print(align->maxskip, f);
    fprintf(f, "\n");
}
Esempio n. 2
0
void
yasm_vps_print(const yasm_valparamhead *headp, FILE *f)
{
    const yasm_valparam *vp;

    if(!headp) {
        fprintf(f, "(none)");
        return;
    }

    yasm_vps_foreach(vp, headp) {
        if (vp->val)
            fprintf(f, "(\"%s\",", vp->val);
        else
            fprintf(f, "((nil),");
        switch (vp->type) {
            case YASM_PARAM_ID:
                fprintf(f, "%s", vp->param.id);
                break;
            case YASM_PARAM_STRING:
                fprintf(f, "\"%s\"", vp->param.str);
                break;
            case YASM_PARAM_EXPR:
                yasm_expr_print(vp->param.e, f);
                break;
        }
        fprintf(f, ")");
        if (yasm_vps_next(vp))
            fprintf(f, ",");
    }
}
Esempio n. 3
0
void
yasm_value_print(const yasm_value *value, FILE *f, int indent_level)
{
    fprintf(f, "%*s%u-bit, %ssigned", indent_level, "", value->size,
            value->sign ? "" : "un");
    fprintf(f, "%*sAbsolute portion=", indent_level, "");
    yasm_expr_print(value->abs, f);
    fprintf(f, "\n");
    if (value->rel) {
        fprintf(f, "%*sRelative to=%s%s\n", indent_level, "",
                value->seg_of ? "SEG " : "",
                yasm_symrec_get_name(value->rel));
        if (value->wrt)
            fprintf(f, "%*s(With respect to=%s)\n", indent_level, "",
                    yasm_symrec_get_name(value->wrt));
        if (value->rshift > 0)
            fprintf(f, "%*s(Right shifted by=%u)\n", indent_level, "",
                    value->rshift);
        if (value->curpos_rel)
            fprintf(f, "%*s(Relative to current position)\n", indent_level,
                    "");
        if (value->ip_rel)
            fprintf(f, "%*s(IP-relative)\n", indent_level, "");
        if (value->jump_target)
            fprintf(f, "%*s(Jump target)\n", indent_level, "");
        if (value->section_rel)
            fprintf(f, "%*s(Section-relative)\n", indent_level, "");
        if (value->no_warn)
            fprintf(f, "%*s(Overflow warnings disabled)\n", indent_level, "");
    }
}
Esempio n. 4
0
static void
bc_incbin_print(const void *contents, FILE *f, int indent_level)
{
    const bytecode_incbin *incbin = (const bytecode_incbin *)contents;
    fprintf(f, "%*s_IncBin_\n", indent_level, "");
    fprintf(f, "%*sFilename=`%s'\n", indent_level, "",
            incbin->filename);
    fprintf(f, "%*sStart=", indent_level, "");
    if (!incbin->start)
        fprintf(f, "nil (0)");
    else
        yasm_expr_print(incbin->start, f);
    fprintf(f, "%*sMax Len=", indent_level, "");
    if (!incbin->maxlen)
        fprintf(f, "nil (unlimited)");
    else
        yasm_expr_print(incbin->maxlen, f);
    fprintf(f, "\n");
}
void
yasm_bc_print(const yasm_bytecode *bc, FILE *f, int indent_level)
{
    if (!bc->callback)
        fprintf(f, "%*s_Empty_\n", indent_level, "");
    else
        bc->callback->print(bc->contents, f, indent_level);
    fprintf(f, "%*sMultiple=", indent_level, "");
    if (!bc->multiple)
        fprintf(f, "nil (1)");
    else
        yasm_expr_print(bc->multiple, f);
    fprintf(f, "\n%*sLength=%lu\n", indent_level, "", bc->len);
    fprintf(f, "%*sLine Index=%lu\n", indent_level, "", bc->line);
    fprintf(f, "%*sOffset=%lx\n", indent_level, "", bc->offset);
}