Answer from cs61c-am (Michael Moeng 16464697) for Question 3 The separate adder computes the branch target. If the ALU sends the answer of a computation to a memory target, the ALU computes the answer while the adder computes the branch target. Since the ALU cannot compute both values at once, the separate adder is needed.