This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
dev:crosscompiler:backend_arm:code_generator [2019/11/17 18:21] – [Fixup] ursgraf | dev:crosscompiler:backend_arm:code_generator [2020/12/23 11:41] – [Exception Stackframe] ursgraf | ||
---|---|---|---|
Line 17: | Line 17: | ||
===== Exception Stackframe ===== | ===== Exception Stackframe ===== | ||
In case of an exception all volatile GPRs together with LR must be saved. Further, the nonvolatile GPRs which are used in this method must be saved as well. \\ | In case of an exception all volatile GPRs together with LR must be saved. Further, the nonvolatile GPRs which are used in this method must be saved as well. \\ | ||
- | EXTR's need no saving, as they are not allowed to be used in exceptions. If an exception method calls a method where EXTR are used (e.g. in an interrupt handler or in a decrementer | + | EXTR's need no saving, as they are not allowed to be used in exceptions. If an exception method calls a method where EXTR are used (e.g. in an interrupt handler or in a timer subclass) you have to use '' |
[{{ : | [{{ : | ||
+ | |||
+ | For efficiency, the exception stack frame does not contain space for locals. Hence, you are not allowed to use so many locals that this becomes necessary. This will be checked for when compiling exception methods. Storage for interface methods as well as the area for parameter passing are not necessary as well. | ||
+ | |||
Optimization: | Optimization: |