This attribute tells the compiler that the function is an embedded assembly function. You can write the body of the function entirely in assembly code using __asm statements.
The compiler does not generate prologue and epilogue sequences for
functions with __attribute__((naked)).
The compiler only supports basic __asm statements in __attribute__((naked)) functions. Using extended assembly, parameter
references or mixing C code with __asm statements
might not work reliably.
Example
B3-1 Examples
__attribute__((naked)) int add(int i, int j); /* Declaring a function with __attribute__((naked)). */
__attribute__((naked)) int add(int i, int j)
{
__asm("ADD r0, r1, #1"); /* Basic assembler statements are supported. */
/* Parameter references are not supported inside naked functions: */
/* __asm (
"ADD r0, %[input_i], %[input_j]" /* Assembler statement with parameter references */
: /* Output operand parameter */
: [input_i] "r" (i), [input_j] "r" (j) /* Input operand parameter */
);
*/
/* Mixing C code is not supported inside naked functions: */
/* int res = 0;
return res;
*/
}
Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers of your data.