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

📄 emitter.c

📁 微软的基于HMM的人脸识别原代码, 非常经典的说
💻 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 + -