This is the mail archive of the gdb@sourceware.cygnus.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: none



> > For register views, yes, we can do anything we please.  However, when
> > the compiler places a register in an MMX register value, we still get
> > an old-fashioned symbol with a LOC_REGISTER.  Register views don't
> > come into it.  As long as we only have a LOC_REGISTER, we don't have
> > enough information to do the job right.
> 
> I probably don't understand how this works.  How is the LOC_REGISTER
> thing different from the case where the user specifies a certain
> register (e.g., when the user wants to change its value)?  At any
> given point in a debugging session, GDB knows what is the current TOS,
> and therefore can map any MMX register to the corresponding ST(i),
> right?

If a symbol's address class (`aclass') is LOC_REGISTER and its value
is N, then GDB assumes the variable's value occupies register N.  It
uses REGISTER_BYTE(N), REGISTER_RAW_SIZE(N), etc. to access that
symbol's value.

We can't assign distinct register numbers to %st(0) and %mm0, for
reasons discussed previously: GDB can't cope with two distinct
register numbers referring to the same bits in the register file.

We can't use the same register numbers for %st(0) and %mm0, since
they're only the same bits when TOS is zero.

So there is no possible register numbering which allows us to refer to
both %st(0) and %mm0.  Therefore, %st(0) and %mm0 cannot both be
`registers', as far as GDB is concerned.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]