public Object[] ic_trans(IcFun f,IcStmt_label break_to){
		// if num <= 0, error, but ignore that
		/* t = num;
		 * i = 0;
		 * a = new[num];
		 * L: a[i] = value;
		 * 	  branch L if i < num
		 */
		LinkedList<IcStmt> codes = new LinkedList<IcStmt>();
		IcOper r = null;
		
		/* 1.first get num */
		Object[] result = num.ic_trans(f, break_to);
		codes.addAll((LinkedList<IcStmt>)result[0]);
		IcOper the_num = (IcOper)result[1];
		/* 2.tmp t */
		IcVar_tmp the_t = IcVar_tmp.new_one(f);
		codes.add(new IcStmt_assign(f,0,the_t,new IcConst_int(0)));
		/* 3.new arr */
		IcVar_tmp the_t_a = IcVar_tmp.new_one(f);
		codes.add(new IcStmt_new(f,0,the_num,the_t_a));
		/* 4.new label */
		IcStmt_label the_l = IcStmt_label.new_one(f, 0);
		codes.add(the_l);
		f.labels.add(the_l);
		/* 5.the loop --- value */
		Object[] result2 = value.ic_trans(f, break_to);
		codes.addAll((LinkedList<IcStmt>)result2[0]);
		IcOper the_value = (IcOper)result2[1];
		/* 6.the loop --- assign */
		codes.add(new IcStmt_array(f,0,the_t_a,the_t,the_value));
		/* 7.the loop --- plus */
		codes.add(new IcStmt_op(f,0,the_t,the_t,new IcConst_int(1),IcStmt_op.PLUS));
		/* 8.the loop --- branch */
		codes.add(new IcStmt_branch(f,0,the_t,the_num,the_l,IcStmt_branch.LT));
		
		return new Object[]{codes,the_t_a};
	}