MISRA Discussion Forums

Full Version: Question about Dir 4.3 when a static function contains only variable declaration, asm and return statement
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,
Given the following case:
Code:
static inline uint32_t test(void)
{
    uint32_t tmp;

    __asm__ __volatile__(
        "mrc p15, 0, %0, c1, c0, 2\n\t"
        : "=r" (tmp)
        );

    return tmp;
}

i wonder if we could take the above case as compliant, as we cannot have variable declaration and return value in assembly. Thanks
Could anyone help clarify it? thanks
Not sure why this content was deledted and cannot be seen any longer, i just re-posted it here.
Could anyone help clarify it? thanks

static inline uint32_t test(void) {
uint32_t tmp;
__asm__ __volatile__( "mrc p15, 0, %0, c1, c0, 2\n\t" : "=r" (tmp) );
return tmp;
}


i wonder if we could take the above case as compliant, as we cannot have variable declaration and return value in assembly.
Thank you for your question. The MISRA-C Working Group will consider this question at their next meeting in October
Any update on this question? thanks
Hi there, may i know if there is any conclusions for this issue? Thanks
Directive 4.3 states that the assembly language instruction shall be "encapsulated and isolated". This guideline is a directive rather than a rule, which means that the phrase "isolated" should not be taken as fully defined and may be interpreted in different ways by different projects.

The intention is that there should be minimal C code within the enclosing macro or function. In particular, the intention is that there should be no C language statements which have effects in the abstract machine. For example:
* expression statements
* selection statements
* iteration statements

The MISRA-C working group would consider that a function that contains only declarations and a return statement in addition to the assembler code instructions is acceptable.