Q. 48 The following code segment is executed on a processor which allows only register operands
in its instructions. Each instruction can have atmost two source operands and one
destination operand. Assume that all variables are dead after this code segment.
c = a + b; d = c * a; e = c + a; x = c * c; if (x > a) { y = a * a; } else { d = d * d; e = e * e; }
Suppose the instruction set architecture of the processor has only two registers.
The only allowed compiler optimization is code motion, which moves statements
from one place to another while preserving correctness. What is the minimum
number of spills to memory in the compiled code?
(A) 0
(B) 1
(C) 2
(D) 3
Answer: (B)
Explanation: