📄 emitter.c
字号:
case rvalllong: sprintf(str, "rvalllong %d %d", inst->val.ival, inst->ext); break; case dreflong: s = "dreflong "; break; case reflong: s = "reflong "; break; case declong: sprintf(str, "declong %d", inst->val.ival); break; case inclong: sprintf(str, "inclong %d", inst->val.ival); break; case neglong: s = "neglong"; break; case ltlong: s = "ltlong"; break; case lelong: s = "lelong"; break; case eqlong: s = "eqlong"; break; case nelong: s = "nelong"; break; case gtlong: s = "gtlong"; break; case gelong: s = "gelong"; break; case lorlong: s = "lorlong"; break; case landlong: s = "landlong"; break; case notlong: s = "notlong"; break; case borlong: s = "borlong"; break; case xorlong: s = "xorlong"; break; case andlong: s = "andlong"; break; case addlong: s = "addlong"; break; case sublong: s = "sublong"; break; case divlong: s = "divlong"; break; case multlong: s = "multlong"; break; case modlong: s = "modlong"; break; case lshtlong: s = "lshtlong"; break; case rshtlong: s = "rshtlong"; break; case complong: s = "complong"; break; case drefllong: s = "drefllong "; break; case refllong: s = "refllong "; break; case decllong: sprintf(str, "decllong %d", inst->val.ival); break; case incllong: sprintf(str, "incllong %d", inst->val.ival); break; case negllong: s = "negllong"; break; case ltllong: s = "ltllong"; break; case lellong: s = "lellong"; break; case eqllong: s = "eqllong"; break; case nellong: s = "nellong"; break; case gtllong: s = "gtllong"; break; case gellong: s = "gellong"; break; case lorllong: s = "lorllong"; break; case landllong: s = "landllong"; break; case notllong: s = "notllong"; break; case borllong: s = "borllong"; break; case xorllong: s = "xorllong"; break; case andllong: s = "andllong"; break; case addllong: s = "addllong"; break; case subllong: s = "subllong"; break; case divllong: s = "divllong"; break; case multllong: s = "multllong"; break; case modllong: s = "modllong"; break; case lshtllong: s = "lshtllong"; break; case rshtllong: s = "rshtllong"; break; case compllong: s = "compllong"; break; case long2ptr: s = "long2ptr"; break; case long2int: s = "long2int"; break; case long2double: s = "long2double"; break; case llong2ptr: s = "llong2ptr"; break; case llong2int: s = "llong2int"; break; case llong2double: s = "llong2double"; break; case stoulong: sprintf(str, "stoulong %d %d", inst->val.ival, inst->ext); break; case pushulong: sprintf(str, "pushulong %u", inst->val.ival); break; case rvalulong: sprintf(str, "rvalulong %d %d", inst->val.ival, inst->ext); break; case drefulong: s = "drefulong"; break; case refulong: s = "refulong"; break; case deculong: sprintf(str, "deculong %d", inst->val.ival); break; case inculong: sprintf(str, "inculong %d", inst->val.ival); break; case negulong: s = "negulong"; break; case ltulong: s = "ltulong"; break; case leulong: s = "leulong"; break; case equlong: s = "equlong"; break; case neulong: s = "neulong"; break; case gtulong: s = "gtulong"; break; case geulong: s = "geulong"; break; case lorulong: s = "lorulong"; break; case notulong: s = "notulong"; break; case borulong: s = "borulong"; break; case xorulong: s = "xorulong"; break; case andulong: s = "andulong"; break; case addulong: s = "addulong"; break; case subulong: s = "subulong"; break; case divulong: s = "divulong"; break; case multulong: s = "multulong"; break; case modulong: s = "modulong"; break; case lshtulong: s = "lshtulong"; break; case rshtulong: s = "rshtulong"; break; case compulong: s = "compulong"; break; case ulong2ptr: s = "ulong2ptr"; break; case ulong2int: s = "ulong2int"; break; case ulong2double: s = "ulong2double"; break; case drefptr: s = "drefptr"; break; case drefuptr: s = "drefuptr"; break; case refptr: s = "refptr"; break; case refuptr: s = "refuptr"; break; case stouptr: sprintf(str, "stouptr %d %d", inst->val.ival, inst->ext); break; case stoptr: sprintf(str, "stoptr %d %d", inst->val.ival, inst->ext); break; case pushptr: sprintf(str, "pushptr %p", inst->val.p.p); break; case rvaluptr: sprintf(str, "rvaluptr %d %d", inst->val.ival, inst->ext); break; case rvalptr: sprintf(str, "rvalptr %d %d", inst->val.ival, inst->ext); break; case incptr: sprintf(str, "incptr %d", inst->val.ival); break; case decptr: sprintf(str, "decptr %d", inst->val.ival); break; case ltptr: s = "ltptr"; break; case leptr: s = "leptr"; break; case eqptr: s = "eqptr"; break; case neptr: s = "neptr"; break; case gtptr: s = "gtptr"; break; case geptr: s = "geptr"; break; case lorptr: s = "lorptr"; break; case landptr: s = "landptr"; break; case notptr: s = "notptr"; break; case addptr2int: s = "addptr2int"; break; case addint2ptr: s = "addint2ptr"; break; case subptrint: s = "subptrint"; break; case subptr: s = "subptr"; break; case divptr: sprintf(str, "divptr %d", inst->val.ival); break; case ptr2int: s = "ptr2int"; break; case ptr2long: s = "ptr2long"; break; case eiccall: s = "eiccall"; break; case eicreturn: s = "eicreturn"; break; case assigntype: sprintf(str, "assigntype %d", inst->ext); break; case stoval: s = "stoval"; break; case pushval: s = "pushval"; break; case reducear: sprintf(str, "reducear %d", inst->val.ival); break; case checkar: sprintf(str, "checkar %d %d", inst->val.ival, inst->ext); break; case refmem: sprintf(str, "refmem %d", inst->val.ival); break; case massign: sprintf(str, "massign %d %d", inst->val.ival, inst->ext); break; case fmem: sprintf(str, "fmem %d %d", inst->val.ival, inst->ext); break; case minit: sprintf(str, "mcpy %p %d", inst->val.p.p, inst->ext); break; case empty: s = "empty"; break; default: sprintf(str, "UNKNOWN %d", inst->opcode); } if (s) printf("%-20.20s", s); else printf("%-20.20s", str);} void EiC_listcode(code_t * CODE){ extern int EiC_lineNums; int i, j, t, k, cols, rows, sp; if (CODE->nextinst < 11) cols = 1; else if (CODE->nextinst < 21) cols = 2; else cols = 3; rows = CODE->nextinst / cols; if (CODE->nextinst % cols) rows++; if(EiC_lineNums) sp = 30; else sp = 25; for (j = 0; j < rows; ++j) { for (t = 0, i = j; i < CODE->nextinst; i += rows, t++) { if(EiC_lineNums) printf("%4d:", CODE->inst[i].line); printf("%4d:", i); showcode(&CODE->inst[i], i); if (CODE->inst[i].opcode == jmptab) { showjmptab(&CODE->inst[i], i, t * sp); t = (t + 1) * sp; for (k = 0; k < t; k++) printf(" "); } } printf("\n"); } printf("\n");}/* END EMITTER.C ----------------- ----------------- */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -