Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 May 1998 01:40:39 -0500 (CDT)
From:      Tony Kimball <alk@pobox.com>
To:        bde@zeta.org.au
Cc:        current@FreeBSD.ORG, luoqi@watermarkgroup.com
Subject:   Re:  as chokes on cc output
Message-ID:  <199805180640.BAA11981@pobox.com>
References:  <199805161532.BAA28755@godzilla.zeta.org.au>

next in thread | previous in thread | raw e-mail | index | archive | help
Quoth Bruce Evans on Sun, 17 May:
: >> I'm getting messages like so:
: >>  /var/tmp/ccro2473.s:26621: Error: operands given don't match any known 386 instruction
: >> from asm lines like so:
: >>  #APP
: >> 	fldln2; fxch; fyl2x
: >>  #NO_APP
: >> in gcc-generated code.  I'm clueless w.r.t. intel asm code and binutils.  What's
: >> the deal?  It's a bug, anyhow.
: >
: >These are i387 instructions. The problem is that gas doesn't know fxch is
: >a shorthand for fxch %st(1). Just add the parameter %st(1), like
: >	__asm__("fldln2; fxch %st(1); fyl2x");
: 
: I think I understand why gcc is generating this.  #APP is generated for
: inline asm, and someone who doesn't know gas syntax wrote the asm :-).

There are two interesting points to be made here:

There is a comment in binutils/include/opcode/ChangeLog:
 Tue Nov  2 12:41:30 1993  Ken Raeburn  (raeburn@rover.cygnus.com)
	* i386.h: Add "fxch" without operand.
and text in i386.h:
 {"fxch", 0, 0xd9c9, _, NoModrm, { 0, 0, 0} }, /* alias for fxch %st, %st(1) */
so that it seems gas *should* be accepting this syntax, by design.

Also, this code does compile correctly at lower optimization levels.

Anyhow, inserting the %st(1) operands into the asm code solved the
problem at all optimization levels, so that, while it remains a bug,
I'm content.

Thanks!

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



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