If you compute reversibly you need use special logic gates to not throw any bits away during the computation, like the Toffoli gate. All your operations need to have the same number of input and output bits and needs to be able to run forwards and backwards. Effectively you set or zero no bits during the entire computation that can't be losslessly reversed.
If you structure your computation this way you can do it adiabatically.
You still however need to expend energy when you set all the bits your program requires for execution when you start a computation.