Hi again !

I have some more informations, about the problem I have with the new floating 
point functions.

In fact, it seems that when I call _d_itod( val ), the function try to 
read/write at the location pointed to by val, as if it was a pointer !

I know it is a Int32 type, but if for exemple val=2, then I got the error 
message : 
"just wrote to memory location 0x00000002, which is in low memory".

And if val=0x7B589572, as in the previous email, I got the message :

"just read from memory location 0x7B589572, causing a bus error"

So, why is _d_itod function using the parameter as a pointer ?

Here is the generated code for the following C lines :

FlpDouble m;
m = _d_itod( 2 );

This generate :

pea 2.w
moveq #8, %d2
trap #15
dc.w 0xA306

And no, it's not due to the fact I'm using the value 2, directly : if I use a 
Int32 variable, the compiler just replace the pea 2.w by a move.l %d3, -(sp)
which give the same effect : it push the content of the value into the stack.
So, the problem seems to be really in the handling of the FP trap.

I remind that I'm using SDK 4.0 with prc-tools 2.0.92 on Linux.

I'm using multisegmented code, but I have tried to put the function doing 
this call this into a "normal" segment ( code ressource 1 ) and into an other 
section, but I get the same result. 

Any idea what's wrong ?

Thanks.

-- 
Daniel Morais

-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/tech/support/forums/

Reply via email to