This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
pre-processor symbols and gcc -v
- From: kevin diggs <diggskevin38 at gmail dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Wed, 2 Mar 2011 14:24:24 -0600
- Subject: pre-processor symbols and gcc -v
Hi,
If a pre-processor macro, say __m68k__ is defined shouldn't it show up
in gcc -v? gcc version is 3.4.6.
int main(int argc, char **argv)
{
void *handle;
double (*cosine)(double),arg,res;
char *error,*msg="cos(%f)=%.7f\n";
handle = dlopen ("libm.so", RTLD_LAZY);
if (!handle)
{
fputs (dlerror(), stderr);
exit(1);
}
cosine = dlsym(handle, "cos");
if ((error = dlerror()) != NULL)
{
fprintf (stderr, "%s\n", error);
exit(1);
}
arg=2.0;
res=(*cosine)(arg);
printf(msg,arg,res);
dlclose(handle);
/*
* 680x0 constraints are:
* a address register
* d data register
* f floating point
* I integer [1,8]
* J 16-bit signed integer
* K signed number whose magnitude is > 0x80
* L integer [-1,-8]
* M signed number whose magnitude is > 0x100
* G non 68881 rom float constant
* '=' is used to indicate output, '&' means noclobber
* Some floating point examples are:
* ("fsincos" : "=t" (cos), "=u" (sin) : "0" (inp))
* ("fyl2xp1" : "=t" (result) : "0" (x), "u" (y) : "st(1)")
*/
#ifdef __i386__
__asm__ __volatile ("fldl (%%edi); fld %%st(0); fcos; "
"leal -8(%%esp),%%esp; fstpl (%%esp); leal -8(%%esp),%%esp; "
"fstpl (%%esp); pushl %%esi; call printf; leal 20(%%esp),%%esp"
:
:"D" (&arg), "S" (msg));
#elif defined(__m68k__)
#ifdef __HAVE_FPU__
#if defined(__mc68020__) || defined(__mc68030__)
__asm__ __volatile ("fcos.x %1,%0"
:"=f" (res)
:"f" (arg));
printf(msg,arg,res);
#elif defined(__mc68040__) || defined(__mc68060__)
__asm__ __volatile ("fcos.x %1,%0"
:"=f" (res)
:"f" (arg));
printf("Instruction implemented by trap: ");
printf(msg,arg,res);
#endif
#endif
#endif
#ifdef __m68k__
#error __m68k__ is defined!
#endif
return 0;
}
Thanks!
kevin
P.S.: Anyone point me to an example of how to use the 68k 'Q' constraint?
And while I'm here, anyway to see when an instruction causes an
unimplemented instruction trap (like fcos on a 68040)?