FPU stack and XMM registers in ddbg

Jascha Wetzel "[firstname]" at mainia.de
Sun Apr 29 05:38:47 PDT 2007


yeah, i was going the lazy way of always printing them in all possible
types, but i guess for XMM regs there are too many.
imho, the right way to do this is to allow registers in expressions.
then they can be cast to the desired type.
->= cast(float[4])xmm0
That should also come in handy if you want to do something like
->= cast(MyClass*)eax

Daniel Keep wrote:
> Jascha Wetzel wrote:
>> that's right. Ddbg doesn't support debugging non-D code, though.
>> on the other hand SSE2 only means new registers on AMD cpus and 3dnow is
>> just a reinterpretation of the mmx registers.
>> i added all the interpretations of the XMM and MM registers but didn't
>> bother to get the AMD specific SSE2 extensions.
>>
>> therefore it's going to be MMX, 3DNOW!, SSE and SSE2 intel.
>> the switches will be cpu, fpu, mmx, sse.
>> here is what the new full register dump looks like:
>>
>> EAX = 00000002  EBX = 00000004  ECX = 00000004  EDX = 0012ff20
>> EDI = 00000001  ESI = 00000001  EBP = 0012ff30  ESP = 0012fedc
>> EIP = 004020ea  EFL = 00000302
>>  CS = 0000001b   DS = 00000023   ES = 00000023   FS = 0000003b
>>  GS = 00000000   SS = 00000023
>>
>> FCW = 137f      FSW = 2100      FTW = 00ff      FOP = 0014
>> IP = 00000000   CS = 0000       DP = 00000000   DS = 0000
>> ST0 =  1.0300000000000000e+01
>> ST1 =  3.8000000000000000e+00
>> ST2 =  2.4000000000000000e+00
>> ST3 =  5.6000000000000000e+00
>> ST4 =  4.6891198690254339e-4932
>> ST5 =  3.6451995318824746e-4951
>> ST6 =  8.1918522314966046e+4456
>> ST7 =  0.0000000000000000e+00
>>
>> MM0 = a4cccccccccccccd
>>     = [-1.07374e+08, -8.88178e-17]
>> MM1 = f333333333333333
>>     = [4.17233e-08, -1.41977e+31]
>> MM2 = 999999999999999a
>>     = [-1.58819e-23, -1.58819e-23]
>> MM3 = b333333333333333
>>     = [4.17233e-08, -4.17233e-08]
>> MM4 = b2857a24805b09dd
>>     = [-8.36057e-39, -1.55388e-08]
>> MM5 = 0000000000000001
>>     = [1.4013e-45, 0]
>> MM6 = badb0d00804fd645
>>     = [-7.33187e-39, -0.00167122]
>> MM7 = 00000017e62a9390
>>     = [-2.01381e+23, 3.22299e-44]
>>
>> MXCSR = 00001f80
>> XMM0 = 406d5224dd2f1aa0405edd2f1a9fbe77
>>      = [6.60686e-23, 3.48225, -7.88598e+17, 3.70814]
>>      = [123.456, 234.567]
>> XMM1 = 406d5224dd2f1aa0405edd2f1a9fbe77
>>      = [6.60686e-23, 3.48225, -7.88598e+17, 3.70814]
>>      = [123.456, 234.567]
>> XMM2 = 43e464fe43acd6c9436a912742f6e979
>>      = [123.456, 234.567, 345.678, 456.789]
>>      = [5.98235776617e+16, 1.17566315604e+19]
>> XMM3 = 43e464fe43acd6c9436a912742f6e979
>>      = [123.456, 234.567, 345.678, 456.789]
>>      = [5.98235776617e+16, 1.17566315604e+19]
>> XMM4 = 43e464fe43acd6c9436a912742f6e979
>>      = [123.456, 234.567, 345.678, 456.789]
>>      = [5.98235776617e+16, 1.17566315604e+19]
>> XMM5 = 43e464fe43acd6c9436a912742f6e979
>>      = [123.456, 234.567, 345.678, 456.789]
>>      = [5.98235776617e+16, 1.17566315604e+19]
>> XMM6 = 43e464fe43acd6c9436a912742f6e979
>>      = [123.456, 234.567, 345.678, 456.789]
>>      = [5.98235776617e+16, 1.17566315604e+19]
>> XMM7 = 43e464fe43acd6c9436a912742f6e979
>>      = [123.456, 234.567, 345.678, 456.789]
>>      = [5.98235776617e+16, 1.17566315604e+19]
>>
>> Frits van Bommel wrote:
>>> Jascha Wetzel wrote:
>>>> oh ok, forget SSE2 and 3DNOW! - makes little sense as long D inline asm
>>>> doesn't support them...
>>> That doesn't mean they won't be used in (mostly-)D programs. You can
>>> still use a separate assembler and link the output in.
>>>
>>> (And for the really perverse, db and friends can emit any code you like
>>> from within the inline assembler :P)
> 
> Many thanks for this.  The only thing is that the MM and XMM registers
> can store quite a few different types.  For instance, IIRC, all the
> original MMX instructions dealt with integers, whilst 3DNow! added
> floats.  SSE2 also adds integer types for the XMM registers, so being
> able to say "dump the XMM registers as, oh let's call them uint's" would
> be handy :)
> 
> Other than that, looks perfect :)
> 
> 	-- Daniel
> 


More information about the Digitalmars-d-debugger mailing list