1,构造冲突图,就是上面所画的,如果两个变量的live range有重叠,那么他们之间就有一条冲突边。 2.用启发式的算法,尝试N-color着色。 具体分为以下两步: 启发式算法如下: 1.选择一个度< N的的节点,然后把它和它的边从图中移除,把这个点压入栈。 2.迭代这样做,直到所有节点都入栈。 分配寄存器: 1.从栈...
所以,如果我们检查coalsescing后的节点的degredd < N,那么就一定可以着色,不会导致spilling。 简单直接的算法: coalescing(x, y)成功: (x + y) < N 但是,如果x 和 y 有共同的邻居结点,那么这个结点只能算作一个。 另外,我们再思考一下:我们之所以着色时卡住,时因为栈上已经没有< N的node了,因此,我们再...
特殊的情况直接从需要分配的变量列表里面 spill 掉就行了。linear scan 只考虑:有多少可用的寄存器 每个...
特殊的情况直接从需要分配的变量列表里面 spill 掉就行了。linear scan 只考虑:有多少可用的寄存器 每个...