Posts: 13
Threads: 5
Joined: Feb 2019
Reputation:
0
Could anyone help clarify it? thanks
<t></t>
Posts: 13
Threads: 5
Joined: Feb 2019
Reputation:
0
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.
<t></t>
Posts: 632
Threads: 18
Joined: Jan 2006
Reputation:
1
Thank you for your question. The MISRA-C Working Group will consider this question at their next meeting in October
Posted by and on behalf of the MISRA C Working Group
Posts: 13
Threads: 5
Joined: Feb 2019
Reputation:
0
Any update on this question? thanks
<t></t>
Posts: 13
Threads: 5
Joined: Feb 2019
Reputation:
0
Hi there, may i know if there is any conclusions for this issue? Thanks
<t></t>
Posts: 632
Threads: 18
Joined: Jan 2006
Reputation:
1
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.
Posted by and on behalf of the MISRA C Working Group
Posts: 632
Threads: 18
Joined: Jan 2006
Reputation:
1
The whole point of the Directive is to encapsulate the assembly language... therefore any additional code (including a +1) is no longer encapsulating the assembler.
While this may be considered a trivial matter, any other position results in salami-slicing - if X is OK what about X+Y - and makes diagnosis less decidable.
You may, of course, choose to deviate, with the support of your assessor
Posted by and on behalf of the MISRA C Working Group