C and C++


LANG.ASM.MIXED : 分離されていないアセンブリ言語

要旨

関数内にソースコードとアセンブリ言語が混在しています。

プロパティ

クラス名 Mixed Assembly and Code
日本語クラス名 分離されていないアセンブリ言語
クラス分類 スタイル (style)
ニーモニック LANG.ASM.MIXED
カテゴリー
MisraC2023 MisraC2023:D.4.3 Assembly language shall be encapsulated and isolated
Misra2012 Misra2012:D.4.3 Assembly language shall be encapsulated and isolated
Misra2004 Misra2004:2.1 Assembly language shall be encapsulated and isolated
AUTOSARC++14 AUTOSARC++14:M7-4-3 Assembly language shall be encapsulated and isolated.
MisraC++2008 MisraC++2008:7-4-3 Assembly language shall be encapsulated and isolated.
MisraC++2023 MisraC++2023:10.4.1 The asm declaration shall not be used
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Mixed Assembly and Code"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

void do_something(void);

void use_asm(void){
    asm("CLI"); /* 'Mixed Assembly and Code' warning issued here (covers both occurrences in this function) */
                               /* ('Inline Assembly' warning also issued if enabled) */
    do_something();
    asm("STI");
}

void only_asm(){
    asm("CLI");  /* procedure contains no source, so no 'Mixed Assembly and Code' warning */
                               /* ('Inline Assembly' warning issued if enabled)  */
    asm("STI");
}

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。