Access to C and C++ compile-time constant expressions from embedded assembler
You can use the
__cpp keyword to access C and C++ compile-time constant expressions, including the
addresses of data or functions with external linkage, from the assembly code.
The expression inside the
__cpp must be a constant
expression suitable for use as a C++ static initialization. See 3.6.2 Initialization of non-local objects and 5.19 Constant expressions in ISO/IEC 14882:2003.
The following example shows a constant replacing the use of
LDR r0, =__cpp(&
some_variable) LDR r1, =__cpp(
some_function) BL __cpp(
some_function) MOV r0, #__cpp(
Names in the
__cpp expression are looked up in the C++ context of the
__asm function. Any names in the result of a
expression are mangled as required and automatically have
generated for them.