ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS
【質問】
アセンブラで記述した関数の単体テストを行うことはできますか?
【回答】
はい、可能です。カバレッジマスターは、アセンブラで記述された関数の単体テストとC0カバレッジ計測を行う機能を持ちます。
C言語の関数は、関数名や{}で囲まれた範囲を関数と定義するような決まった構造がありますが、アセンブラ関数には決まった構造はなく、ユーザーが自由に任意のアドレスに命令(ニューモニック)を記述し、アセンブラ関数を作成することができます。
<アセンブラ関数の例>
開始位置ラベル→ SUB_ASM_FUNC: //アセンブラ処理↓例 SUBR: MOV R6, #12H MOV R7, #10H ADD R6, R7 MOV R0, R6 終了位置ラベル→ END_SUB_ASM_FUNC: NOP
このため、アセンブラ関数をカバレッジマスターでテストするためには、ユーザーが自分で関数の開始位置と関数の終了位置を指定して、アセンブラ関数の範囲を定義する必要があります。
上記の場合であれば、アセンブラ関数の先頭は SUB_ASM_FUNC のラベル関数の終了位置は、END_SUB_ASM_FUNC のラベルになります。
アセンブラ関数の単体テストを行う手順は以下の通りです。
1)「開始アドレス〜終了アドレス-テスト用CSV」を選択してCSV雛形作成画面を表示する
2)「スタートアドレスに飛んで実行」のチェックボックスをONにする。
(このオプションにより、指定したアセンブラ開始アドレスからテストが実行されます。OFFにした場合は、スタートアップコマンドファイルなどで、アセンブラ開始アドレスへpc(プログラムカウンタ)をセットする必要があります。)
3)「アセンブラのテスト」のチェックボックスをONにする
(このオプションにより、開始アドレスから終了アドレスまでのC0カバレッジが記録されます。)
4)「変数一覧」のタブを表示し、表示オプションの「アセンブラのラベルを含む」をチェックする
5)一覧から関数の先頭のラベルを選択して開始アドレスの「決定→」を押す
6)一覧から関数の終了アドレスを示すラベルを選択して、終了アドレスの「決定→」を押す。終了位置を示すラベルがない場合は、終了アドレスを直接入力する
7)テストに必要なINPUT/OUTPUTを指定する(アセンブラ関数のテストの場合は、内部レジスタを直接入出力に指定することができます。)
※ ただし、C関数の中に記述されたインラインアセンブラについては、実行は可能ですが、命令ごとのカバレッジを計測することはできません。