private void traceDirectRegister(String reg, int lineNum, AndrCodeBlock block, HashSet<String> result)
	{
		if(block.getVisitedFlag())
			return;
		block.setVisitedFlag(true);
		String[] code = block.getBlockCode();       //可能从寄存器判断值是不是在本方法中确定，如果是带P的寄存器就是从其它地方传过来的
		if(reg.startsWith("p"))//暂不处理在本方法以外的
		{
			System.out.println("decide value of register in different methods.");
			return;				//感觉方法之间的调用处理起来相对麻烦，先放一放，而且看到的很多都是在一个方法内就可以确定，跨方法
		}
								//确定的相对不多，因此。。。。
							//从调用此方法的地方寻找值
		else
		{
			for(int i = lineNum - 1; i > 0; i--)
			{
				if(code[i].startsWith("move"))//赋值
				{
					String regInLine = code[i].split(" ")[1];
					if(regInLine.endsWith(","))
						regInLine = regInLine.substring(0, regInLine.length() - 1);
					if(regInLine.equals("reg"))
					{
						traceDirectRegister(code[i].split(" ")[2], i, block, result);
					}
				}
				else if(code[i].startsWith("const"))//参数为常量
				{
					String former = code[i].split(",")[0];//逗号之前部分
					String regInLine = former.split(" ")[1];//寄存器名称
					if(regInLine.equals(reg))
					{
						String tmp = code[i].split(",")[1];
						tmp = tmp.replace('\"', ' ');
						result.add(tmp.trim());
						return;
					}
				}
			}
			//在一个块中确定不了。因此找到所有调用此块的块。
			for(AndrCodeBlock blk: block.getCaller())
			{
				traceDirectRegister(reg, blk.getBlockCode().length, blk, result);
			}
		}
	}