If you'll use a good compiler then it'll find that both expressions can be evaluated as compile time since operands are constants. So there is not any need of executing any expression at runtime.
But if constant propagation optimization is restricted, then it can be evaluated with the help of two registers.
d= a+b;
R1 <- R1 + R2 //before execution R1 : contains value of a, R2 : contains value of b,
c= e+d;
R1 <- R1 + R2 //before execution R1 contains value of variable d and R2 contains variable e, result will be in register R1