Multiple choice

Direction: The following code segment is executed on a processor which allows only register operands in its instructions. Each instruction can have almost 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;
}

What is the minimum number of registers needed in the instruction set architecture of the processor to compile this code segment without any spill to memory? Do not apply any optimisation other than optimising register allocation.

  1. 3

  2. 4

  3. 5

  4. 6

Reveal answer Fill a bubble to check yourself
B Correct answer
Explanation

In the above code, minimum number of registers used = 4