Inline assembler register restrictions in C and C++ code
Registers such as
lr, and the NZCV flags in the
CPSR must be used with caution.
If C or C++ expressions are used, these might be used as temporary registers and NZCV flags might be corrupted by the compiler when evaluating the expression.
sp registers cannot be
explicitly read or modified using inline assembly code because there is no direct access to
any physical registers. However, you can use the intrinsics
__return_address to read these