Debugging a Program With dbx

Using the regs Command

The regs command lets you print the value of all the registers.

Here is the syntax for the regs command:


regs [-f][-F]

--f includes floating point registers (single precision). --F includes floating point registers (double precision); this is a SPARC only option.

For 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
... 

Platform-specific Registers

The following tables list platform-specific register names for SPARC and Intel that can be used in expressions.

SPARC Register Information

The following register information is for SPARC systems.

Register 

Description 

$g0 through $g7

Global registers 

$o0 through $o7

"out" registers 

$l0 through $l7

"local" registers 

$i0 through $i7

"in" registers 

$fp

Frame pointer, equivalent to register $i6  

$sp

Stack pointer, equivalent to register $o6 

$y

Y register 

$psr

Processor state register  

$wim

Window invalid mask register 

$tbr

Trap base register 

$pc

Program counter  

$npc

Next program counter 

$f0 through $f31

FPU "f" registers 

$fsr

FPU status register 

$fq

FPU queue 

The $f0f1 $f2f3 ... $f30f31 pairs of floating point registers are treated as having C "double" type (normally $fN registers are treated as C "float" type). These pairs can also be referred to as $d0 ... $d30.

The following additional registers are available on SPARC V9 and V8+ hardware:


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

See the SPARC Architecture Reference Manual and the Sun-4 Assembly Language Reference Manual for more information on SPARC registers and addressing.

Intel Register Information

The following register information is for Intel systems.

Register 

Description 

$gs

Alternate data segment register 

$fs

Alternate data segment register 

$es

Alternate data segment register 

$ds

Data segment register 

$edi

Destination index register 

$esi

Source index register 

$ebp

Frame pointer 

$esp

Stack pointer 

$ebx

General register 

$edx

General register 

$ecx

General register 

$eax

General register 

$trapno 

Exception vector number 

$err 

Error code for exception 

$eip

Instruction pointer 

$cs

Code segment register 

$eflags

Flags 

$es

Alternate data segment register 

$uesp

User stack pointer 

$ss

Stack segment register 

Commonly used registers are also aliased to their machine independent names:

$sp

Stack pointer; equivalent of $uesp

$pc

Program counter; equivalent of $eip

$fp

Frame pointer; equivalent of $ebp

Registers for the 80386 lower halves (16 bits) are:

$ax

General register 

$cx

General register 

$dx

General register 

$bx

General register 

$si

Source index register 

$di

Destination index register 

$ip

Instruction pointer, lower 16 bits 

$flags

Flags, lower 16 bits 

The first four 80386 16-bit registers can be split into 8-bit parts:

$al

Lower (right) half of register  

$ax

$ah

Higher (left) half of register  

$ax

$cl

Lower (right) half of register 

$cx

$ch

Higher (left) half of register 

$cx

$dl

Lower (right) half of register 

$dx

$dh

Higher (left) half of register 

$dx

$bl

Lower (right) half of register

$bx

$bh

Higher (left) half of register 

$bx

Registers for the 80387 are:

$fctrl

Control register 

$fstat

Status register 

$ftag

Tag register 

$fip

Instruction pointer offset 

$fcs

Code segment selector 

$fopoff

Operand pointer offset 

$fopsel

Operand pointer selector 

$st0 through $st7

Data registers