| |||
| Home > Using the Inline and Embedded Assemblers of the ARM Compiler > 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.
Example 43 shows a
constant replacing the use of __cpp(:expr)
Example 43. __cpp(expr)
LDR r0, =__cpp(&some_variable)LDR r1, =__cpp(some_function)BL __cpp(some_function)MOV r0, #__cpp(some_constant_expr)
Names in the __cpp expression are looked
up in the C++ context of the __asm function.
Any names in the result of a __cpp expression
are mangled as required and automatically have IMPORT statements
generated for them.
ISO/IEC 14882:2003
Section 3.6.2 Initialization of non-local objects
Section 5.19 Constant expressions.