Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

regs コマンドの使用

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

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


regs [-f][-F]

-f には、浮動小数点レジスタ (単精度) が含まれます。-F には、浮動小数点レジスタ (倍精度) が含まれます。

詳細については、regs コマンド」を参照してください。

SPARC システムの場合:


dbx[13] 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
...

x64 システムの場合:


(dbx) regs
current frame:  [1]
r15     0x0000000000000000
r14     0x0000000000000000
r13     0x0000000000000000
r12     0x0000000000000000
r11     0x0000000000401b58
r10     0x0000000000000000
r9      0x0000000000401c30
r8      0x0000000000416cf0
rdi     0x0000000000416cf0
rsi     0x0000000000401c18
rbp     0xfffffd7fffdff820
rbx     0xfffffd7fff3fb190
rdx     0x0000000000401b50
rcx     0x0000000000401b54
rax     0x0000000000416cf0
trapno  0x0000000000000003
err     0x0000000000000000
rip     0x0000000000401709:main+0xf9    movl $0x0000000000000000,0xfffffffffffffffc(%rbp)
cs      0x000000000000004b
eflags  0x0000000000000206
rsp     0xfffffd7fffdff7b0
ss      0x0000000000000043
fs      0x00000000000001bb
gs      0x0000000000000000
es      0x0000000000000000
ds      0x0000000000000000
fsbase  0xfffffd7fff3a2000
gsbase  0xffffffff80000000
(dbx) regs -F
current frame:  [1]
r15     0x0000000000000000
r14     0x0000000000000000
r13     0x0000000000000000
r12     0x0000000000000000
r11     0x0000000000401b58
r10     0x0000000000000000
r9      0x0000000000401c30
r8      0x0000000000416cf0
rdi     0x0000000000416cf0
rsi     0x0000000000401c18
rbp     0xfffffd7fffdff820
rbx     0xfffffd7fff3fb190
rdx     0x0000000000401b50
rcx     0x0000000000401b54
rax     0x0000000000416cf0
trapno  0x0000000000000003
err     0x0000000000000000
rip     0x0000000000401709:main+0xf9    movl     $0x0000000000000000,0xfffffffffffffffc(%rbp)
cs      0x000000000000004b
eflags  0x0000000000000206
rsp     0xfffffd7fffdff7b0
ss      0x0000000000000043
fs      0x00000000000001bb
gs      0x0000000000000000
es      0x0000000000000000
ds      0x0000000000000000
fsbase  0xfffffd7fff3a2000
gsbase  0xffffffff80000000
st0     +0.00000000000000000000e+00
st1     +0.00000000000000000000e+00
st2     +0.00000000000000000000e+00
st3     +0.00000000000000000000e+00
st4     +0.00000000000000000000e+00
st5     +0.00000000000000000000e+00
st6     +0.00000000000000000000e+00
st7     +NaN
xmm0a-xmm0d     0x00000000 0xfff80000 0x00000000 0x00000000
xmm1a-xmm1d     0x00000000 0x00000000 0x00000000 0x00000000
xmm2a-xmm2d     0x00000000 0x00000000 0x00000000 0x00000000
xmm3a-xmm3d     0x00000000 0x00000000 0x00000000 0x00000000
xmm4a-xmm4d     0x00000000 0x00000000 0x00000000 0x00000000
xmm5a-xmm5d     0x00000000 0x00000000 0x00000000 0x00000000
xmm6a-xmm6d     0x00000000 0x00000000 0x00000000 0x00000000
xmm7a-xmm7d     0x00000000 0x00000000 0x00000000 0x00000000
xmm8a-xmm8d     0x00000000 0x00000000 0x00000000 0x00000000
xmm9a-xmm9d     0x00000000 0x00000000 0x00000000 0x00000000
xmm10a-xmm10d   0x00000000 0x00000000 0x00000000 0x00000000
xmm11a-xmm11d   0x00000000 0x00000000 0x00000000 0x00000000
xmm12a-xmm12d   0x00000000 0x00000000 0x00000000 0x00000000
xmm13a-xmm13d   0x00000000 0x00000000 0x00000000 0x00000000
xmm14a-xmm14d   0x00000000 0x00000000 0x00000000 0x00000000
xmm15a-xmm15d   0x00000000 0x00000000 0x00000000 0x00000000
fcw-fsw  0x137f 0x0000
fctw-fop        0x0000 0x0000
frip     0x0000000000000000
frdp     0x0000000000000000
mxcsr    0x00001f80
mxcr_mask       0x0000ffff
(dbx)

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

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

SPARC レジスタ情報

SPARC アーキテクチャーのレジスタ情報は次のとおりです。

レジスタ  

内容の説明  

$g0 through $g7

「大域」レジスタ 

$o0 through $o7

「出力」レジスタ 

$l0 through $l7

「局所」レジスタ 

$i0 through $i7

「入力」レジスタ 

$fp

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

$sp

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

$y

Y レジスタ 

$psr

プロセッサ状態レジスタ 

$wim

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

$tbr

トラップベースレジスタ 

$pc

プログラムカウンタ 

$npc

次のプログラムカウンタ 

$f0 through $f31

FPU "f" レジスタ 

$fsr

FPU 状態レジスタ 

$fq

FPU キュー 

$f0f1 $f2f3 ... $f30f31 のような浮動小数点レジスタのペアは、C の「double」型とみなされます (通常、$fN レジスタは C の「float」型とみなされます)。これらのペアは、$d0 ... $d30 とも呼ばれます。

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


$g0g1 through $g6g7
$o0o1 through $o6o7
$xfsr $tstate $gsr
$f32f33 $f34f35 through $f62f63 ($d32 ... $$d62)

SPARC のレジスタとアドレッシングの詳細については、『SPARC アーキテクチャーマニュアル バージョン 8』(トッパン刊) および『SPARC 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 through $st7

データレジスタ 

AMD64 レジスタ情報

AMD64 アーキテクチャーのレジスタ情報は次のとおりです。

レジスタ  

内容の説明  

rax

汎用レジスタ - 関数呼び出しの引数の引き渡し 

rbx

汎用レジスタ - 呼び出し先保存 

rcx

汎用レジスタ - 関数呼び出しの引数の引き渡し 

rdx

汎用レジスタ - 関数呼び出しの引数の引き渡し 

rbp

汎用レジスタ - スタック管理/フレームポインタ 

rsi

汎用レジスタ - 関数呼び出しの引数の引き渡し 

rdi

汎用レジスタ - 関数呼び出しの引数の引き渡し 

rsp

汎用レジスタ - スタック管理/スタックポインタ 

r8

汎用レジスタ - 関数呼び出しの引数の引き渡し 

r9

汎用レジスタ - 関数呼び出しの引数の引き渡し 

r10

汎用レジスタ - 一時レジスタ 

r11

汎用レジスタ - 一時レジスタ 

r12

汎用レジスタ - 呼び出し先保存 

r13

汎用レジスタ - 呼び出し先保存 

r14

汎用レジスタ - 呼び出し先保存 

r15

汎用レジスタ - 呼び出し先保存 

rflags

フラグレジスタ 

rip

命令ポインタ 

mmx0/st0

64 ビットメディアおよび浮動小数点レジスタ 

mmx1/st1

64 ビットメディアおよび浮動小数点レジスタ 

mmx2/st2

64 ビットメディアおよび浮動小数点レジスタ 

mmx3/st3

64 ビットメディアおよび浮動小数点レジスタ 

mmx4/st4

64 ビットメディアおよび浮動小数点レジスタ 

mmx5/st5

64 ビットメディアおよび浮動小数点レジスタ 

mmx6/st6

64 ビットメディアおよび浮動小数点レジスタ 

mmx7/st7

64 ビットメディアおよび浮動小数点レジスタ 

xmm0

128 ビットメディアレジスタ 

xmm1

128 ビットメディアレジスタ 

xmm2

128 ビットメディアレジスタ 

xmm3

128 ビットメディアレジスタ 

xmm4

128 ビットメディアレジスタ 

xmm5

128 ビットメディアレジスタ 

xmm6

128 ビットメディアレジスタ 

xmm7

128 ビットメディアレジスタ 

xmm8

128 ビットメディアレジスタ 

xmm9

128 ビットメディアレジスタ 

xmm10

128 ビットメディアレジスタ 

xmm11

128 ビットメディアレジスタ 

xmm12

128 ビットメディアレジスタ 

xmm13

128 ビットメディアレジスタ 

xmm14

128 ビットメディアレジスタ 

xmm15

128 ビットメディアレジスタ 

cs

セグメントレジスタ 

os

セグメントレジスタ 

es

セグメントレジスタ 

fs

セグメントレジスタ 

gs

セグメントレジスタ 

ss

セグメントレジスタ 

fcw

fxsave および fxstor メモリーイメージ制御ワード

fsw

fxsave および fxstor メモリーイメージステータスワード

ftw

fxsave および fxstor メモリーイメージタグワード

fop

fxsave および fxstor メモリーイメージ最終 x87 オペコード

frip

fxsave および fxstor メモリーイメージ 64 ビットオフセットからコードセグメントへ

frdp

fxsave および fxstor メモリーイメージ 64 ビットオフセットからデータセグメントへ

mxcsr

fxsave および fxstor メモリーイメージ 128 メディア命令制御およびステータスレジスタ

mxcsr_mask

mxcsr_mask のビットを設定し、mxcsr でサポートされる機能ビットを示す