[Dwarf-discuss] Dwarf-discuss Digest, Vol 23, Issue 1

Bishop, John E john.e.bishop
Wed Oct 4 20:21:21 GMT 2006


> I understand that DW_OP_breg5 is the value of a register, right? But
> what is that register? (ebp? I am on Intel x86)

This is one of those things that each compiler gets to
decide, if I understand correctly.  DWARF just says how
to name a register, the compiler guys decide how to map
those names to actual registers, and the debugger must
follow suit.

I believe the Intel mapping is as follows, based on one
experiment with IDB internals:

 Register number 0 is eax
 Register number 1 is ecx
 Register number 2 is edx
 Register number 3 is ebx
 Register number 4 is esp
 Register number 5 is ebp
 Register number 6 is esi
 Register number 7 is edi
 Register number 8 is eip
 Register number 9 is eflags
 Register number 10 is cs
 Register number 11 is ss
 Register number 12 is ds
 Register number 13 is es
 Register number 14 is fs
 Register number 15 is gs
 Register number 16 is orig_eax
 Register number 17 is fctrl
 Register number 18 is fstat
 Register number 19 is ftag
 Register number 20 is fiseg
 Register number 21 is fioff
 Register number 22 is foseg
 Register number 23 is fooff
 Register number 24 is fop
 Register number 25 is f0
 Register number 26 is f1
 Register number 27 is f2
 Register number 28 is f3
 Register number 29 is f4
 Register number 30 is f5
 Register number 31 is f6
 Register number 32 is f7
 Register number 33 is xmm0
 Register number 34 is xmm1
 Register number 35 is xmm2
 Register number 36 is xmm3
 Register number 37 is xmm4
 Register number 38 is xmm5
 Register number 39 is xmm6
 Register number 40 is xmm7
 Register number 41 is mxcsr
 Register number 42 is vfp

Note that these don't exactly reflect any of
the structs the system returns to PTRACE calls
or the like.  And they may be IDB-internal rather
than the actual BREG mapping.  I'll try to 
chase that down and post another reply.

	-John





More information about the Dwarf-discuss mailing list