前面已经介绍创建分析树,下面就来详细地说明一个例子,看看到底生成什么样的分析树,
C
源程序如下:
#005 int nTest1 = 1;
#006 int nTest2 = 2;
#007 int nTest3;
#008 int i;
#009
#010 nTest3 = nTest1 + nTest2;
把上面的源程序分析后,就生成下面的
DAG
树,如下:
#2 ADDRLP4 count=1 nTest1
#3 CNSTI4 count=1 1
'1 ASGNI4 count=0 #2 #3 4 4
左子树是
ADDRLP4
,右子树是
CNSTI4
,根节点是
ASGNI4
。这是第
5
行的树。
#2 ADDRLP4 count=1 nTest2
#3 CNSTI4 count=1 2
'1 ASGNI4 count=0 #2 #3 4 4
左子树是
ADDRLP4
,右子树是
CNSTI4
,根节点是
ASGNI4
。这是第
6
行的树。
#2 ADDRLP4 count=2 nTest3
#5 ADDRLP4 count=1 nTest1
#4 INDIRI4 count=1 #5
#7 ADDRLP4 count=1 nTest2
#6 INDIRI4 count=1 #7
#3 ADDI4 count=1 #4 #6
'1 ASGNI4 count=0 #2 #3 4 4
这是第
10
行的树。根节点是
ASGNI4
,它的左子树是
ADDRLP4
,也就是
nTest3
。它的右子树是
ADDI4
,也就是
nTest1 + nTest2
。
nTest1
是由
#4 INDIRI4
和
#5 ADDRLP4
树构成的。
nTest2
也是
#6 INDIRI4
和
#7 ADDRLP4
构成的。
前面
1
,
2
,
3
等号码是节点序号。