?? 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
-----------------
----------------- */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -