DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(gdb.info) Registers

Info Catalog (gdb.info) Convenience Vars (gdb.info) Data (gdb.info) Floating Point Hardware
 
 Registers
 =========
 
    You can refer to machine register contents, in expressions, as
 variables with names starting with `$'.  The names of registers are
 different for each machine; use `info registers' to see the names used
 on your machine.
 
 `info registers'
      Print the names and values of all registers except floating-point
      registers (in the selected stack frame).
 
 `info all-registers'
      Print the names and values of all registers, including
      floating-point registers.
 
 `info registers REGNAME ...'
      Print the "relativized" value of each specified register REGNAME.
      As discussed in detail below, register values are normally
      relative to the selected stack frame.  REGNAME may be any register
      name valid on the machine you are using, with or without the
      initial `$'.
 
    GDB has four "standard" register names that are available (in
 expressions) on most machines--whenever they do not conflict with an
 architecture's canonical mnemonics for registers.  The register names
 `$pc' and `$sp' are used for the program counter register and the stack
 pointer.  `$fp' is used for a register that contains a pointer to the
 current stack frame, and `$ps' is used for a register that contains the
 processor status.  For example, you could print the program counter in
 hex with
 
      p/x $pc
 
 or print the instruction to be executed next with
 
      x/i $pc
 
 or add four to the stack pointer(1) with
 
      set $sp += 4
 
    Whenever possible, these four standard register names are available
 on your machine even though the machine has different canonical
 mnemonics, so long as there is no conflict.  The `info registers'
 command shows the canonical names.  For example, on the SPARC, `info
 registers' displays the processor status register as `$psr' but you can
 also refer to it as `$ps'; and on x86-based machines `$ps' is an alias
 for the EFLAGS register.
 
    GDB always considers the contents of an ordinary register as an
 integer when the register is examined in this way.  Some machines have
 special registers which can hold nothing but floating point; these
 registers are considered to have floating point values.  There is no way
 to refer to the contents of an ordinary register as floating point value
 (although you can _print_ it as a floating point value with `print/f
 $REGNAME').
 
    Some registers have distinct "raw" and "virtual" data formats.  This
 means that the data format in which the register contents are saved by
 the operating system is not the same one that your program normally
 sees.  For example, the registers of the 68881 floating point
 coprocessor are always saved in "extended" (raw) format, but all C
 programs expect to work with "double" (virtual) format.  In such cases,
 GDB normally works with the virtual format only (the format that makes
 sense for your program), but the `info registers' command prints the
 data in both formats.
 
    Normally, register values are relative to the selected stack frame
 ( Selecting a frame Selection.).  This means that you get the
 value that the register would contain if all stack frames farther in
 were exited and their saved registers restored.  In order to see the
 true contents of hardware registers, you must select the innermost
 frame (with `frame 0').
 
    However, GDB must deduce where registers are saved, from the machine
 code generated by your compiler.  If some registers are not saved, or if
 GDB is unable to locate the saved registers, the selected stack frame
 makes no difference.
 
    ---------- Footnotes ----------
 
    (1) This is a way of removing one word from the stack, on machines
 where stacks grow downward in memory (most machines, nowadays).  This
 assumes that the innermost stack frame is selected; setting `$sp' is
 not allowed when other stack frames are selected.  To pop entire frames
 off the stack, regardless of machine architecture, use `return'; see
  Returning from a function Returning.
 
Info Catalog (gdb.info) Convenience Vars (gdb.info) Data (gdb.info) Floating Point Hardware
automatically generated byinfo2html