編譯器
某函式中,同時存活的值之數量在最多的地方是5個。在干涉圖除了這5個之外不產生其他限制的單純情況下,要讓所有值不溢出就放入暫存器,暫存器至少需要幾個?
- A5個
- B4個
- C10個
查看答案與解析
正確答案:A. 5個
同時存活的5個值彼此全部互相干涉,所以在干涉圖中,5個節點全部以邊相連(完全圖),著色至少需要5種顏色。像線性的程式碼那樣,存活區間可以用區間表示的單純情況,可以用與同時存活值的最大數量相同數目的顏色著色,所以5個暫存器就夠了。若只有4個,就必須在某處把一個值退避到記憶體,也就是溢出。10個則比所需的數量多出許多。
- A. 正確。需要與同時存活的最大數量相同的5個,而且在此情況下已足夠。
- B. 只有4個的話,某處就需要溢出。
- C. 10個比所需的數量還多。