On 28/09/2024 09:34, Pierre Muller via fpc-devel wrote:
I think that the big endian version (see grep below)
would suffer if you would use packed
because the high field of size 2,
would put the low field of size 8 at offset 2,
which would trigger unaligned access to this field.

For the little endian definition,
it doesn't change anything, does it?

It's not to important (for my case ).
I have a case where the data comes from another process (just 10 bytes, that are an extended in a 32bit process (Win), and get loaded by a 64bit process into the softfloat.)

I was comparing; SizeOf(MyVAr) = 10
and that failed.
So now I had to hardcode everywhere that a floatx80 can take those 10 bytes.

If I had wanted to put that in a generic and specialize with floatx80, double and single, then I had a problem because sizeOf would not work. I don't currently need it as generic.


About the big endian issue: That means it is not memory compatible with a native "extended" because it has a gap. So if you load data from a file/stream that has been written with native (gap free) extended, then it wont work.

I don't know if floatx80 promises such compatibility. But it would be very useful if it did.
On little endian, tests have shown that it can be used that way.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to