Parrot bytecode (PBC) is designed to be portable. Therefore we need
some code to convert ARM-generated PBCs to machine-native doubles and
ARM architectures must be able to read other already supported float
types.
A PBC header has a 'floattype' field, which identifies known FLOATVAL
layouts.
We have currently:
0 ... 8 byte IEEE double
1 ... 12 byte IEEE double (both according to endianess)
We need additionally (at least and AFAIK):
2 ... 8 byte (ARM) mixed-endian
which is according to Nicholas a LE double with 2 BE arranged words.
See also: src/packf*.c, pf/pf_items.c, t/native_pbc/number.t ...
Takers welcome,
leo
> 0 ... 8 byte IEEE double
> 1 ... 12 byte IEEE double (both according to endianess)
>
> We need additionally (at least and AFAIK):
>
> 2 ... 8 byte (ARM) mixed-endian
>
> which is according to Nicholas a LE double with 2 BE arranged words.
and totally legal IEEE.
(Mozilla thought that it could cheat. And it was wrong)
The mixed endian is the old soft float, as I understand it, and will be
replaced by something less surprising, but that's a C ABI change.
Nicholas Clark