Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Nov 2007 17:20:02 +1100
From:      Peter Jeremy <peterjeremy@optushome.com.au>
To:        Pete French <petefrench@ticketswitch.com>
Cc:        stable@freebsd.org
Subject:   Re: Float problen running i386 inary on amd64
Message-ID:  <20071115062002.GK89746@server.vk2pj.dyndns.org>
In-Reply-To: <E1Io4dE-0001eQ-8X@dilbert.ticketswitch.com>
References:  <E1Io4dE-0001eQ-8X@dilbert.ticketswitch.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--liOOAslEiF7prFVr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Nov 02, 2007 at 10:04:48PM +0000, Pete French wrote:
>	int
>	main(int argc, char *argv[])
>	{
>        	if(atof("3.2") =3D=3D atof("3.200"))
>                	puts("They are equal");
>        	else
>                	puts("They are NOT equal!");
>        	return 0;
>	}

Since the program as defined above does not include any prototype for
atof(), its return value is assumed to be int.  The i386 code for the
comparison is therefore:

        movl    $.LC0, (%esp)
        call    atof
        movl    $.LC1, (%esp)
        movl    %eax, %ebx
        call    atof
        cmpl    %eax, %ebx
        je      .L7

Note that this is comparing the %eax returned by each atof().  Since
atof() actually returns a double in %st(0) and %eax is a scratch
register, the results are completely undefined.  Unfortunately, I
can't explain why an i386 would be different to an amd64 in i386 mode.

--=20
Peter Jeremy
Please excuse any delays as the result of my ISP's inability to implement
an MTA that is either RFC2821-compliant or matches their claimed behaviour.

--liOOAslEiF7prFVr
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4 (FreeBSD)

iD8DBQFHO+US/opHv/APuIcRAqtpAJ9ZxueKvs5Vs9UlwTIT1SBe1RzAsgCgiYTD
q5pX6Hcxx6U1EVJn6VphecU=
=PcA5
-----END PGP SIGNATURE-----

--liOOAslEiF7prFVr--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071115062002.GK89746>