blob: 564e9aa4df2613685f464bef1f7a4fa747c0a63d [file] [log] [blame]
<html lang="en">
<head>
<title>i386-Bugs - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="i386_002dDependent.html#i386_002dDependent" title="i386-Dependent">
<link rel="prev" href="i386_002dArch.html#i386_002dArch" title="i386-Arch">
<link rel="next" href="i386_002dNotes.html#i386_002dNotes" title="i386-Notes">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU Assembler "as".
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts. A copy of the license is included in the
section entitled ``GNU Free Documentation License''.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="i386-Bugs"></a>
<a name="i386_002dBugs"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="i386_002dNotes.html#i386_002dNotes">i386-Notes</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="i386_002dArch.html#i386_002dArch">i386-Arch</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="i386_002dDependent.html#i386_002dDependent">i386-Dependent</a>
<hr>
</div>
<h4 class="subsection">9.13.14 AT&amp;T Syntax bugs</h4>
<p>The UnixWare assembler, and probably other AT&amp;T derived ix86 Unix
assemblers, generate floating point instructions with reversed source
and destination registers in certain cases. Unfortunately, gcc and
possibly many other programs use this reversed syntax, so we're stuck
with it.
<p>For example
<pre class="smallexample"> fsub %st,%st(3)
</pre>
<p class="noindent">results in &lsquo;<samp><span class="samp">%st(3)</span></samp>&rsquo; being updated to &lsquo;<samp><span class="samp">%st - %st(3)</span></samp>&rsquo; rather
than the expected &lsquo;<samp><span class="samp">%st(3) - %st</span></samp>&rsquo;. This happens with all the
non-commutative arithmetic floating point operations with two register
operands where the source register is &lsquo;<samp><span class="samp">%st</span></samp>&rsquo; and the destination
register is &lsquo;<samp><span class="samp">%st(i)</span></samp>&rsquo;.
</body></html>