MISRA-C 2021. Dir 4.3 when a static function contains only variable declaration, asm and return statement
This function contains a mix of in-line assembler statements and C statements.
코드 라인에 C 코드와 어셈블리어가 함께 포함되어 있을 때 발생한다.
HELIX-QAC.QAC 3006
In-line assembler code has been encountered in a context where it is interspersed with C statements.
Message 3006 will be generated on any function which is defined with a mixture of assembler code and executable C statements, unless the assembler code is encapsulated in a macro.
예시)
* 정상적인 구문
#define ASM asm { ... }
extern int sia;
extern int sib;
extern void foo1(void)
{
int x;
ASM;
asm ( Some assembler code );
return;
}
* 3006 에러예시들
extern void foo2(void) /* Message 3006 */
{
int x = 100 ;
asm( Some assembler code );
return;
}
extern void foo3(void) /* Message 3006 */
{
char *msg = "hello";
asm { Some assembler code }
return;
}
extern void foo4(void) /* Message 3006 */
{
__asm { Some assembler code }
sia = sib;
return;
}
extern void foo5(void) /* Message 3006 */
{
asm ( Some assembler code );
sia += sib;
return;
}
* 해결방법 : C언어 사이에 에셈블리 코드가 있는 코드들은 별도의 함수 등으로 분리하고, 함수를 호출하는 방식으로 수정해야 한다.
'개발' 카테고리의 다른 글
퀄컴(Qualcomm)의 개발 도구(QXDM, QPST, QCAT, QACT, QDART, QSDK, QCMAP) (0) | 2023.06.06 |
---|---|
Helix QAC 문제 수정하기 (0) | 2022.08.17 |
[vscode] 한번에 여러 단어 검색하기 (0) | 2022.05.17 |
[vscode] 키보드 단축키(shortcut) 바로가기 (0) | 2022.04.14 |
[자바스크립트. Javascript] append, prepend, after, before (0) | 2022.04.04 |
댓글