GDC release 0.20

Brad Roberts braddr at puremagic.com
Wed Dec 27 11:10:23 PST 2006


On Wed, 27 Dec 2006, Thomas Kuehne wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Frits van Bommel schrieb am 2006-12-25:
> > Thomas Kuehne wrote:
> >> Neither floating point nor MMX nor SSE instructions where the cause 
> >> but the "cpuid" feature tests.
> >> 
> >> I had to replace
> >> 
> >> 	asm{ cpuid; }
> >> 
> >> with
> >> 	asm{db 0x53; cpuid; db 0x5B;}
> >
> > Does GDC's asm not support a more clear
> > 	asm {push EBX; cpuid; pop EBX; }
> > ?
> 
> It does, however if I compile with "-fPIC" GDC errors with:
> error: PIC register `ebx' clobbered in `asm'
> 
> > Or for that matter, doesn't it know what registers are changed by 
> > instructions so it can save the ones it needs to preserve (DMD does that 
> > IIRC)?
> > (Or if it isn't sure, doesn't it at least make sure they get pushed & 
> > popped as a precaution?)
> 
> DMD preserves them via copying to the stack. GDC doesn't preserve them
> and apparently only knowns the clobbering rules for some instructions
> (e.g. pop EBX) but not others (e.g. push EBX).
> 
> Thomas
> 
> 
> -----BEGIN PGP SIGNATURE-----
> 
> iD8DBQFFkkZKLK5blCcjpWoRAnsHAJ4wH4Z6+SiJkllM6S48AXEJCRqWcwCfXUww
> sV5ZrY1kUPbnov5YXAkcTWc=
> =7zkJ
> -----END PGP SIGNATURE-----

I'm not sure which compiler is at 'fault' here, but having them behave 
differently with the same block of asm code on the same platform seems 
like a violation of the intent of having asm be part of the language spec.  
A bug needs to be filed against one of the two compilers.

Later,
Brad



More information about the Digitalmars-d-announce mailing list