レジスタの表示
プログラムがクラッシュしたり、ユーザーが Stop-A で中止したり、あるいはブレークポイントに遭遇した結果、プログラムの実行途中でユーザーインタフェースに入ってしまうことがあります。(ブレークポイントについては、「ブレークポイント」 で説明します。) 上記の場合には、ユーザーインタフェースは自動的にすべての CPU データレジスタの値をバッファー領域に保存します。デバッグの目的のためにそれらの値を調べたり、変更することができます。
表 6-2 に SPARC のレジスタ操作コマンドを示します。
表 6-2 SPARC レジスタコマンド
コマンド
|
スタックダイアグラム
|
説明
|
%f0 〜 %f31 |
( -- value )
|
指定された浮動小数点レジスタの値を返します。
|
%fsr |
( -- value )
|
浮動小数点ステータスレジスタの値を返します。
|
%g0 〜 %g7 |
( -- value )
|
指定されたグローバルレジスタの値を返します。
|
%i0 〜 %i7 |
( -- value )
|
指定された入力レジスタの値を返します。
|
%l0 〜 %l7 |
( -- value )
|
指定されたローカルレジスタの値を返します。
|
%o0 〜 %o7 |
( -- value )
|
指定された出力レジスタの値を返します。
|
%pc %npc %psr
%y %wim %tbr |
( -- value )
|
指定されたレジスタの値を返します。
|
.fregisters |
( -- )
|
%f0 から %f31までの値を表示します。
|
.locals |
( -- )
|
i、l 、 o レジスタの値を表示します。
|
.psr |
( -- )
|
プログラムステータスレジスタの書式付きで表示します。
|
.registers .registers |
( -- )
|
%g0 から %g7
までのほかに、%pc、%npc、%psr、%y、%wim、%tbr の値を表示します。
|
.window |
( window# -- )
|
w .localsと同じ。指定されたウィンドウを表示します。
|
ctrace |
( -- )
|
C サブルーチンを示す復帰スタックを表示します。
|
set-pc |
( new-value -- )
|
%pc に new-value を、%npc に (new-value+4)をそれぞれ設定します。
|
to regname |
( new-value -- )
|
上記のうちの任意のレジスタの格納値を変更します。 new-value to regname の形式で使用してください。
|
w |
( window# -- )
|
現在のウィンドウを、%ix、%Lx、または %ox を表示するために設定します。
|
値の確認や変更が終わったら、go コマンドを使用してプログラムの実行を継続できます。保存したレジスタの値 (変更したものを含めて) は、(コピーして) CPU に戻され、保存されたプログラムカウンタによって指定された位置から実行が再開されます。
to を使用して %pc を変更する場合は、%npc も同時に変更する必要があります。(set-pc の方が両レジスタを自動的に変更するので簡単です。)
w および .window コマンドについては、ウィンドウ値 0 は通常、現在のウィンドウを指定します。つまり、プログラムが中断されたときのサブルーチンのアクティブウィンドウです。ウィンドウ値が 1 の場合は、そのサブルーチンの呼び出し元のウィンドウであり、2 の場合はその呼び出し元の呼び出し元を指定します。以下同様に、有効なスタックフレーム数までこの関係が繰り返されます。デフォルトの開始値は 0 です。