若要把条件分枝外的操作移入条件分枝,必须保证该操作在条件分枝取任何值的情况下都得到执行。因此,必须对该操作加以复制,分别移入每一个条件分枝。移入的操作在自己所在的条件分枝中可以与其他操作进行互斥操作的资源共享,设法在不增加硬件资源的条件下达到减少控制步数的目的。
  我们对图5.34(b)进行移入条件分枝的转换:首先对操作9进行复制,得到与操作9性质完全相同的操作10,然后将操作9和操作10分别移入对应的两个条件分枝中,转换后的结果示于图5.35。从图5.35看出,操作10与与操作4分别处于互斥的条件分枝中,可以合并成操作{4,10},以便共享{-,<}功能单元。同样的道理,操作9与操作7互斥,可以合并成操作{7,9},共享{-,<}功能单元。转换后的控制数据流图所需控制步数目为4。

图5.35 将条件分支外的操作移入条件分支

  操作若被移入条件分枝,该操作的的条件向量相应于这个分枝条件的元素取值由X变为1或0。
  同理,某一条件分枝中的操作可以移入其内层的条件分枝中。将操作移入条件分枝的一般原则是:
  (1)操作移动的主要目的是减少所需控制步的数目,所以操作的移入一般以不增加条件分枝的长度为前提。
  (2)操作的移入不能引起硬件资源的冲突。


  操作从条件分枝外移入条件分枝中的利弊分析:
  利:移入条件分枝中有可能使该操作与其他分枝上的某操作形成互斥操作,造成共享功能单元的机会。
  弊:操作个数由1个增加到2个;还可能引起条件分枝长度的增加。
  对于某一特定问题,操作移入条件分枝带来的是利还是弊要作具体分析。