📄 genicode.c
字号:
type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_aslsh: iprintf ("*aslsh"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_asrsh: iprintf ("*asrsh"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_asmul: iprintf ("*asmul"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_asmul2: iprintf ("*asmul2"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_asdiv: iprintf ("*asdiv"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_asdiv2: iprintf ("*asdiv2"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_asmod: iprintf ("*asmod"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_assign: iprintf ("*assign"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_ainc: iprintf ("*ainc value=%ld", (long) ep->v.p[1]->v.i); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); break; case en_adec: iprintf ("*adec value=%ld", (long) ep->v.p[1]->v.i); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); break; case en_land: iprintf ("*land"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_lor: iprintf ("*lor"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_eq: iprintf ("*eq"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_ne: iprintf ("*ne"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_lt: iprintf ("*lt"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_le: iprintf ("*le"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_gt: iprintf ("*gt"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_ge: iprintf ("*ge"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_test: iprintf ("*test"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); break; case en_not: iprintf ("*not"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); break; case en_cond: iprintf ("*cond"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); ep = ep->v.p[1]; g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION);; break; case en_comma: iprintf ("*comma"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); if (ep->v.p[1] != NIL_EXPR) { g_icode (ep->v.p[1], indent + INDENTATION); } else { iprintf ("*null"); } break; case en_fcall: iprintf ("*fcall"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); if (ep->v.p[1] != NIL_EXPR) { g_icode (ep->v.p[1], indent + INDENTATION);; } break; case en_call: iprintf ("*call"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); if (ep->v.p[1] != NIL_EXPR) { g_icode (ep->v.p[1], indent + INDENTATION);; } break; case en_usercall:
iprintf ("*usercall");
type (ep->etp);
iprintf ("%s", newline);
g_icode (ep->v.p[0], indent + INDENTATION);
if (ep->v.p[1] != NIL_EXPR) {
g_icode (ep->v.p[1], indent + INDENTATION);;
}
break;
case en_cast: iprintf ("*cast"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); break; case en_deref: iprintf ("*deref"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); break; case en_list: iprintf ("*list"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); if (ep->v.p[1] != NIL_EXPR) { g_icode (ep->v.p[1], indent + INDENTATION);; } break; case en_literal: iprintf ("*literal"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION); break; case en_litval: iprintf ("*litval"); type (ep->etp); iprintf ("%s", newline); g_icode (ep->v.p[0], indent + INDENTATION); g_icode (ep->v.p[1], indent + INDENTATION); break; case en_str: iprintf ("*str \"%s\"", ep->v.str); type (ep->etp); iprintf ("%s", newline); break; case en_size: iprintf ("*size %ld", (long) ep->v.i); type (ep->etp); iprintf ("%s", newline); break; default: FATAL ((__FILE__, "g_icode", "uncoded node %d", ep->nodetype)); }}void genicse P1 (CSE *, olist){ CSE *csp; EXPR *ep; for (csp = olist; csp != NIL_CSE; csp = csp->next) { ep = csp->exp;#ifdef DEBUG if (is_debugging (DEBUG_GLOBAL)) { iprintf ("%d:%s", (int) desire (csp), newline); g_icode (ep, INDENTATION); }#endif if (csp->reg != NO_REG) { /* see if preload needed */ iprintf ("register %d:%s", (int) csp->reg, newline); if (!is_lvalue (ep) || (ep->v.p[0]->v.i > 0L)) { g_icode (ep, INDENTATION); } } }}void genicode P2 (const STMT *, stmt, int, indent){ int j; for (; stmt != NIL_STMT; stmt = stmt->next) { for (j = indent; j >= 0; j--) iprintf (" ");#ifdef DEBUGOPT iprintf ("line %d: ", stmt->line);#endif /*DEBUGOPT */ switch (stmt->stype) { case st_label: iprintf ("L%u:%s", (unsigned int) stmt->v2.l, newline); genicode (stmt->v1.s, indent); break; case st_goto: iprintf ("$goto\tL%u%s", (unsigned int) stmt->v2.l, newline); break; case st_expr: iprintf ("$expression%s", newline); g_icode (stmt->exp, indent + INDENTATION); break; case st_return: iprintf ("$return%s", newline); g_icode (stmt->exp, indent + INDENTATION); break; case st_if: iprintf ("$if%s", newline); g_icode (stmt->exp, indent + INDENTATION); genicode (stmt->s1, indent + INDENTATION); if (stmt->v1.s != NIL_STMT) { genicode (stmt->v1.s, indent + INDENTATION); } break; case st_while: iprintf ("$while%s", newline); g_icode (stmt->exp, indent + INDENTATION); genicode (stmt->s1, indent + INDENTATION); break; case st_do: iprintf ("$do%s", newline); genicode (stmt->s1, indent + INDENTATION); g_icode (stmt->exp, indent + INDENTATION); break; case st_for: iprintf ("$for%s", newline); g_icode (stmt->exp, indent + INDENTATION); g_icode (stmt->v1.e, indent + INDENTATION); g_icode (stmt->v2.e, indent + INDENTATION); genicode (stmt->s1, indent + INDENTATION); break; case st_continue: iprintf ("$continue%s", newline); break; case st_break: iprintf ("$break%s", newline); break; case st_switch: iprintf ("$switch%s", newline); g_icode (stmt->exp, indent + INDENTATION); genicode (stmt->v1.s, indent + INDENTATION); break; case st_compound: iprintf ("$compound%s", newline); genicode (stmt->s1, indent + INDENTATION); break; case st_case: iprintf ("$case %ld:5%s", (long) stmt->v2.i, newline); genicode (stmt->v1.s, indent + INDENTATION); break; case st_default: iprintf ("$default:5%s", newline); genicode (stmt->v1.s, indent + INDENTATION); break;#ifdef ASM case st_asm: iprintf ("$asm:%s", newline); g_icode (stmt->exp, indent + INDENTATION); break;#endif /* ASM */ default: FATAL ( (__FILE__, "genicode", "uncoded statement %d", stmt->stype)); } }}#endif /* ICODE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -