and reading the exception and interrupt handling chapter of the ARM system design book.
I have noted that link register is not always pointed to the next resume instruction. So it should be added or subtracted when returning.
It's not a big deal to write appropriate assembly code for that. But my question is why they design the processor to behave like that? Is that design is to reduce the complexity and number of transistors? So that complexity could be switched to compiler writer, Am I right guessing why.