如何看待
给定一个具有k个节点的CFG(程序),迭代算法将在每次迭代中为每个节点n更新OUT [n]。
假设数据流分析中值的域为V,那么我们可以定义一个k元组。<br>(OUT[n1], OUT[n2], …, OUT[nk])<br>Vk表示为的集合(V1×V2…×Vk)的一个元素值,以保存每次迭代后的分析值。<br>(注:元素值Vk中的k应该在V的右上角,表示值域V上的k元组)
通过应用传递函数和控制流处理(抽象为函数F),可以将每次迭代视为将Vk的元素值映射到Vk的新元素值的函数F:Vk→Vk
然后,该算法迭代输出一系列k元组,直到两个连续迭代中前一个k元组与后一个相同为止。
思考
迭代算法(或IN/OUT方程系统)为数据流分析提供了一个解决方案。
(1)是否保证算法可以终止或到达固定点,或者始终有解决方案?<br>(2)如果是这样,是否只有一种解决方案或只有一个固定点? <br> 如果解决方案不止一个,那么我们的解决方案是最好的(最精确的)吗?<br>(3)算法何时会达到固定点,或者何时才能获得解决方案?
要回答这些问题,需要先学习一些数学知识。