petdance/scratch — Issue #192: handle ARM mixed-endian doubles
Author: petdance
Created: 2011-11-01 04:25:11+00:00
State: open

This ticket moves discussion into Trac from [http://rt.perl.org/rt3/Ticket/Display.html?id=37461 RT #37461].

Leopold Toetsch opened the ticket in October 2005:

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.

And Nicholas Clark commented:

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.

... and that's where things stand.