Exemple #1
0
void build_dag(int st,int en,int level)
{
	int i,a,b;
	struct four_expression t;
	init_dag();
	for (i = st;i<=en;i++)
	{
		t = four_codes[i];
		switch(t.type){
		case four_add: case four_sub: case four_mul: case four_div:
		case four_big: case four_bige:case four_smo: case four_smoe:
		case four_eq:  case four_neq: case four_getarr: case four_getadd: case four_bec:
			a = get_point_dag(t.src1);
			b = get_point_dag(t.src2);
			new_point_dag(t.type,a,b,t.des);
			break;	
		case four_read:
			new_point_dag(t.type,0,0,t.des);
			break;
		case four_push: case four_write:
			a = get_point_dag(t.des);
			b = t.src1;
			new_point_dag(t.type,a,b,0);
			break;
		default:
			if (t.type == four_call 
			 || t.type == four_end 
			 || t.type == four_jz 
			 || t.type==four_jmp)
			{
				restore_all(level);
				init_dag();
			}
			new_better(four_codes[i].type,four_codes[i].src1,four_codes[i].src2,four_codes[i].des,four_codes[i].level);
			break;
		}
	}
	restore_all(level);
}
Exemple #2
0
dag_network::dag_network(const char *s_dagid, rpl_debug *deb)
{
    set_dagid(s_dagid);
    init_dag();
    set_debug(deb);
}
Exemple #3
0
dag_network::dag_network(dagid_t n_dagid, rpl_debug *deb)
{
    set_dagid(n_dagid);
    init_dag();
    set_debug(deb);
}