Thread (20 messages) 20 messages, 6 authors, 2002-12-02

Re: asm inline

flat view

From: Samuel Rydh <hidden>
Date: 2002-12-02 17:00:17

On Mon, Dec 02, 2002 at 04:12:27PM +0100, Franz Sirl wrote:
quoted
The compiler does the right thing if -fno-strict-aliasing is used or
if 'int b' is replaced by 'ulong b'.
Well, the compiler was right before and as Andreas said, you are wrong. In
C *(ulong*)&B and *&B are different unrelated objects and the compiler
optimizes accordingly.
Indeed. A quick check of the ISO C99 standard revealed that the compiler is
allowed to distinguish between int and long even though they share the
same representation on a particular arch.
Besides the fact that it's almost always right in low-level inline assembly
to use __asm__ __volatile__ (because without the __volatile__ the __asm__
maybe hoisted out of loops if the compiler thinks it's a loop invariant),
...which is desirable in this case. The st_le32 inline is just an efficient
way to flip the endian and is not supposted to have any undeclared
side effects (like touching hardware).

/Samuel


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help