Code: Select all
// zcc +zx -vn -a -clib=new crash.c
#include <math.h>
void *f;
main()
{
f = cos;
(f)(0.0);
// f = copysign;
// (f)(1.0,-1.0);
}
Code: Select all
// zcc +zx -vn -a -clib=new crash.c
#include <math.h>
void *f;
main()
{
f = cos;
(f)(0.0);
// f = copysign;
// (f)(1.0,-1.0);
}
Code: Select all
// zcc +zx -vn -clib=new test.c -o test -lm -create-app --list
// zcc +zx -vn -SO3 -clib=sdcc_ix --reserve-regs-iy --max-allocs-per-node200000 test.c -o test -lm -create-app --list
#pragma output CLIB_OPT_PRINTF = 0x4000000
#include <stdio.h>
#include <math.h>
#ifdef __SDCC
float (*f)(float);
#else
void *f;
#endif
main()
{
f = cos;
printf("cos 0.0 = %f\n", (float)((f)(0.0)));
}
Code: Select all
31 001A CD 00 00 call l_jphl
32 001D C1 pop bc
33 001E C1 pop bc
34 001F C1 pop bc
35 0020 CD 00 00 call float
36 0023 CD 00 00 call dpush
37 0026 3E 04 ld a,4
38 0028 CD 00 00 call printf
Code: Select all
double test(double d)
{
printf("%f\n",d);
return 3.0;
}
int main()
{
double (*fn)() = test;
double d;
d = fn(1.345);
printf("%lf\n",d);
}
Code: Select all
// zcc +zx -vn -clib=new test.c -o test -lm -create-app --list
// zcc +zx -vn -SO3 -clib=sdcc_ix --reserve-regs-iy --max-allocs-per-node200000 test.c -o test -lm -create-app --list
#pragma output CLIB_OPT_PRINTF = 0x4000000
#include <stdio.h>
#include <math.h>
#ifdef __SDCC
float (*f)(float);
#else
float (*f)();
#endif
main()
{
f = cos;
printf("cos 0.0 = %f\n", (f)(0.0));
}