Home / µVision4 User's Guide (Japanese)


プログラム変数(シンボル)
Home » デバッグ » 式 » プログラム変数(シンボル)
µVision4
では、名前を入力するだけで、ターゲットプログラムの変数やシンボルにアクセスできます。変数名やシンボル名は、数値やアドレスを表します。シンボルは、プログラムで使用する名前と同じ名前をデバッガで使用できるようにすることで、デバッグプロセスを簡略化します。
ターゲットプログラムモジュールをロードすると、シンボル情報がデバッガにロードされます。シンボルには、ローカル変数(関数内で宣言されたもの)、関数名、行番号情報が含まれます。[ターゲットのオプション](Options
for Target)→[出力](Output)→[デバッグ情報](Debug
Information)を有効にする必要があります。デバッグ情報がないと、µVision4
はソースレベルのシンボリックデバッグを実行できません。
モジュール名
モジュール名とは、ターゲットプログラムのすべてまたは一部を構成するオブジェクトモジュールの名前です。各モジュールには、ソースレベルのデバッグ情報とシンボリック情報が保存されます。
モジュール名は、ソースファイル名から派生します。ターゲットプログラムが MCOMMAND.C
という名前のソースファイルで構成され、C コンパイラが MCOMMAND.OBJ
というオブジェクトファイルを生成する場合、モジュール名は MCOMMAND となります。
シンボル命名規則
シンボルには次の規則が適用されます。
- シンボルの大文字と小文字は区別されません。つまり、SYMBOL は Symbol と等しく処理されます。
- シンボル名の先頭の文字は 'A' ~ 'Z'、'a' ~ 'z'、'_'、または '?' でなければなりません。
- 後続の文字には 'A' ~ 'Z'、'a' ~ 'z'、'0' ~ '9'、'_'、または '?' を使用できます。
Note
-
µVision4
で疑問符("?")で始まるシンボルを持つ三項演算子("?:")を使用する場合、三項演算子とシンボル名の間にスペースを挿入する必要があります。例えば、R5
= R6 ? ?symbol : R7 のようになります。
完全修飾シンボル
シンボルが定義されているモジュールの名前や関数の名前を含む完全修飾名を使用して、シンボルを入力できます。完全修飾シンボル名は、次のコンポーネントで構成されます。
- ModuleName:シンボルが定義されているモジュールを指定します。
- LineNumber:モジュールの特定の行のために生成されたコードのアドレスを指定します。
- FunctionName:ローカルシンボルが定義されているモジュールの関数を指定します。
- SymbolName:シンボル名を指定します。
このコンポ-ネントは、次の表のように連結できます。
シンボルコンポーネント |
完全修飾シンボル名が指定するもの |
\ModuleName\LineNumber |
... ModuleName の行番号 LineNumber。 |
\ModuleName\FunctionName |
... ModuleName の FunctionName 関数。 |
\ModuleName\SymbolName |
... ModuleName のグローバルシンボル SymbolName。 |
\ModuleName\FunctionName\SymbolName |
... ModuleName の FunctionName 関数のローカルシンボル
SymbolName。 |
次に、完全修飾シンボル名の例を示します。
完全修飾シンボル名 |
指定するもの |
\MEASURE\clear_records\idx |
... MEASURE モジュールの clear_records 関数のローカルシンボル
idx。 |
\MEASURE\MAIN\cmdbuf |
... MEASURE モジュールの MAIN 関数のローカルシンボル cmdbuf。 |
\MEASURE\sindx |
... MEASURE モジュールの sindex シンボル。 |
\MEASURE\225 |
... MEASURE モジュールの行番号 225。 |
\MCOMMAND\82 |
... MCOMMAND モジュールの行番号 82。 |
\MEASURE\TIMER0 |
... MEASURE モジュールの TIMER0
シンボル。このシンボルには関数またはグローバル変数を使用できます。 |
非修飾シンボル
シンボルは、参照する変数または関数の名前のみを使用して入力できます。これらのシンボルは、完全に修飾されておらず、一致するシンボル名が見つかるまで多数のテーブルで検索されます。この検索は、次のように実行されます。
- CPU のレジスタシンボル(R0 – R15、RL0 – RH7、DPP0 – DPP3)。
- ターゲットプログラムの現在の関数のローカル変数。現在の関数は、プログラムカウンタの値によって決定されます。
- 現在のモジュールの静的変数。現在の関数と同様に、現在のモジュールはプログラムカウンタの値によって決定されます。現在のモジュールのシンボルは、モジュール内(ただし関数の外)で宣言された変数を表します。
-
ターゲットプログラムのグローバルまたはパブリックシンボル。µVision4
によって定義されたペリフェラルレジスタシンボルは、パブリックシンボルと見なされ、検索対象になります。
-
µVision4 DEFINE
コマンドを使用して作成されたシンボル。これらのシンボルは、デバッグで使用され、ターゲットプログラムには含まれません。
- デバッガの特性を監視および変更するシステム変数。これらはターゲットプログラムの一部ではありません。詳細については、「システム変数」を参照して下さい。
-
CPU ドライバによって定義された CPU ドライバシンボル(VTREG)。VTREG
シンボルの説明については、「ペリフェラル変数」を参照して下さい。
Note
-
ユーザ関数またはシグナル関数を作成すると、シンボルの検索順序は変更されます。µVision4
では、まずユーザ関数またはシグナル関数で定義されたシンボルのテーブルが検索されます。次に、上のリストが検索されます。ユーザ関数とシグナル関数の詳細については、「デバッグ関数」を参照して下さい。
-
逆引用符(‘)が先頭に付いたリテラルシンボルによって、検索順序が変更されます。CPU レジスタシンボルの代わりに
CPU ドライバシンボル(VTREG)が検索されます。
リテラルシンボル
逆引用符(‘)を使用してリテラルシンボル名を取得します。次の項目にアクセスする際はリテラルシンボルを使用する必要があります。
-
定義済みの予約されているワードと同一のプログラム変数またはシンボル。予約されているワードとは、µVision4
デバッグコマンドとオプション、データ型名、CPU レジスタ名、アセンブラニーモニックです。
- プログラム変数名と同一である CPU ドライバシンボル(VTREG)。
リテラルシンボル名が指定されると、前述の非修飾シンボルの検索順序は変更されます。リテラルシンボルの場合、CPU
レジスタシンボルの代わりに CPU ドライバシンボル(VTREG)が検索されます。
リテラルシンボルの使用例
プログラムで R5 という変数を定義し、これにアクセスしようとする場合、実際は R5 CPU
レジスタにアクセスすることになります。R5
変数にアクセスするには、変数名に逆引用符の接頭文字を使用する必要があります。
R5 レジスタへのアクセス |
R5 変数へのアクセス |
>R5 = 121
|
>‘R5 = 212
|
プログラムに clock という関数が含まれ、VTREG をクロックしようとする場合、clock
関数のアドレスを取得することになります。clock VTREG
にアクセスするには、変数名に逆引用符の接頭文字を使用する必要があります。
clock 関数へのアクセス |
clock VTREG へのアクセス |
>clock
0x00000DB2
|
>‘clock
20000000
|