dbx コマンドによるデバッグ

regs コマンドの使用

regs コマンドを使用すると、すべてのレジスタの値を表示することができます。

次に、regs コマンドの構文を示します。


regs [-f] [-F]

-f には浮動小数点レジスタ (単精度)、-F には浮動小数点レジスタ (倍精度) が含まれます。これは、SPARC だけのオプションです。

SPARC の場合は次のようになります。


dbx   regs -F
current thread: t@1
current frame:  [1]
g0-g3    0x00000000 0x0011d000 0x00000000 0x00000000
g4-g7    0x00000000 0x00000000 0x00000000 0x00020c38
o0-o3    0x00000003 0x00000014 0xef7562b4 0xeffff420
o4-o7    0xef752f80 0x00000003 0xeffff3d8 0x000109b8
l0-l3    0x00000014 0x0000000a 0x0000000a 0x00010a88
l4-l7    0xeffff438 0x00000001 0x00000007 0xef74df54
i0-i3    0x00000001 0xeffff4a4 0xeffff4ac 0x00020c00
i4-i7    0x00000001 0x00000000 0xeffff440 0x000108c4
y        0x00000000
psr      0x40400086
pc       0x000109c0:main+0x4    mov     0x5, %l0
npc      0x000109c4:main+0x8    st      %l0, [%fp - 0x8]
f0f1     +0.00000000000000e+00
f2f3     +0.00000000000000e+00
f4f5     +0.00000000000000e+00
f6f7     +0.00000000000000e+00
... 

プラットフォーム固有のレジスタ

次の表は、式で使用できる SPARC および x86 のプラットフォームに固有のレジスタ名を示しています。

SPARC レジスタ情報

SPARC システムのレジスタ情報は次のとおりです。

レジスタ 

説明 

$g0-$g7

「大域」レジスタ 

$o0-$o7

「出力」レジスタ 

$l0-$17

「局所」レジスタ 

$i0-$i7

「入力」レジスタ 

$fp

フレームポインタ (レジスタ $i6 と等価) 

$sp

スタックポインタ (レジスタ $o6 と等価) 

$y

Y レジスタ 

$psr

プロセッサ状態レジスタ 

$wim

ウィンドウ無効マスクレジスタ 

$tbr

トラップベースレジスタ 

$pc

プログラムカウンタ 

$npc

次のプログラムカウンタ 

$f0-$f31

FPU “f” レジスタ 

$fsr

FPU 状態レジスタ 

$fq

FPU キュー 

$f0f1 $f2f3...$f30f31 のような浮動小数点レジスタのペアは、C の“doule”型とみなされます。通常、$fN レジスタは C の“float”型とみなされます。

次の追加レジスタは、SPARC V9 および V8+ ハードウェアで使用できます。


$xg0 $xg1 through $xg7
$xo0 $xo1 through $xo7
$xfsr $tstate $gsr
$f32f33 $f34f35 through $f62f63

SPARC のレジスタとアドレッシングの詳細については、『SPARC アーキテクチャマニュアルバージョン 8』(トッパン刊) および『Sun-4 Assembly Language Reference Manual』を参照してください。

x86 レジスタ情報

x86 システムのレジスタ情報は次のとおりです。

レジスタ 

説明 

$gs

代替データセグメントレジスタ 

$fs

代替データセグメントレジスタ 

$es

代替データセグメントレジスタ 

$ds

データセグメントレジスタ 

$edi

デスティネーションインデックスレジスタ 

$esi

ソースインデックスレジスタ 

$ebp

フレームポインタ 

$esp

スタックポインタ 

$ebx

汎用レジスタ 

$edx

汎用レジスタ 

$ecx

汎用レジスタ 

$eax

汎用レジスタ 

$trapno

例外ベクトル番号 

$err

例外を示すエラーコード 

$eip

命令ポインタ 

$cs

コードセグメントレジスタ 

$eflags

フラグ 

$uesp

ユーザースタックレジスタ 

$ss

スタックセグメントレジスタ 

一般的に使用されるレジスタには、マシンに依存しない名前が別名として指定されます。

$sp

スタックポインタ ($uesp と同じ)。

$pc

プログラムカウンタ ($eip と同じ)。

$fp

フレームポインタ ($ebp と同じ)。

80386 用の下位 16 ビットのレジスタは次のとおりです。

$ax

汎用レジスタ 

$cx

汎用レジスタ 

$dx

汎用レジスタ 

$bx

汎用レジスタ 

$si

ソースインデックスレジスタ 

$di

デスティネーションインデックスレジスタ 

$ip

命令ポインタ (下位 16 ビット) 

$flags

フラグ (下位 16 ビット) 

上記のうち最初の 4 つの 80386 用 16 ビットレジスタは、8 ビットずつに分割できます。

$al

レジスタの下位 (右) 部分 

$ax

$ah

レジスタの上位 (左) 部分 

$ax

$cl

レジスタの下位 (右) 部分 

$cx

$ch

レジスタの上位 (左) 部分 

$cx

$dl

レジスタの下位 (右) 部分 

$dx

$dh

レジスタの上位 (左) 部分 

$dx

$bl

レジスタの下位 (右) 部分 

$bx

$bh

レジスタの上位 (左) 部分 

$bx

80387 用レジスタは次のとおりです。

$fctrl

コントロールレジスタ 

$fstat

状態レジスタ 

$ftag

タグレジスタ 

$fip

命令ポインタオフセット 

$fcs

コードセグメントセレクタ 

$fopoff

オペランドポインタオフセット 

$fopsel

オペランドポインタセレクタ 

$st0 - $st7

データレジスタ