⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emitter.c

📁 guide and some example with visualC++
💻 C
📖 第 1 页 / 共 2 页
字号:
    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 + -