712 views

The expression $( a * b) * c \; op \dots$

where ‘op’ is one of ‘$+$’, ‘$*$’ and ‘$\uparrow$’ (exponentiation) can be evaluated on a CPU with single register without  storing the value of ($a * b$) if

1. $\text{‘op’}$ is ‘$+$’ or ‘$*$’

2. $\text{‘op’}$ is ‘$\uparrow$’ or ‘$*$’

3. $\text{‘op’}$ is ‘$\uparrow$’ or ‘$+$’

4. not possible to evaluate without storing

edited | 712 views

A)

$\uparrow$ has higer precedence than $\{*,+,-,/ \}$

So, if op $= \uparrow$ implies, we need to evaluate the right hand side of $\uparrow$ first and then do the lhs part, which would definitely require us to store the value of lhs

but if its a '$+$' or '$*$' , we don't need to store the values evaluated, and on the go can do the operation directly on one register.

answered by Junior (909 points)
edited by
Let say, the expression is one of the below:

(a*b)*c+d

(a*b)*c*d

(a*b)*c^d

In any case, brackets has the highest priority always. So I have to compute brackets first. Now, for + and *, I can do the rest of the operation and save results in the same register. But for exponentiation, I have to store the result of a*b, then do the computation of c^d, then multiply these two results.

So option A is correct.
answered by (159 points)