[tremor] Support for ARM ASM with non GNU based tools

marc dukette dukette at adelphia.net
Tue Sep 10 17:51:37 PDT 2002



so basically if I understand correctly, without being able to inline the
assembly, there is little point in converting this to a .S or .ASM file for
use on other compilers.  Yes it is too bad that Microsoft does not support
inline assemblu for ARM platform.
----- Original Message -----
From: "Chris Gilbert" <chris at dokein.co.uk>
To: <tremor at xiph.org>
Sent: Tuesday, September 10, 2002 8:02 PM
Subject: Re: [tremor] Support for ARM ASM with non GNU based tools

<p>> It's to do with inlining the code, if you notice the functions are inlined
> it allows the compiler to not have to branch to them (saves a pipeline
> flush, and stacking r0-r3 on calling and unstacking on exit)  but it also
> allows the compiler to use any registers it has spare.
>
> Not sure what needs explaining, but I'll attempt to:
>
> // we need some temporary variables to get as outputs from the asm so we
> declare them
>   int lo,hi;
>
> // the actual asm we want to perform
>   asm volatile("smull  %0,%1,%2,%3;\n"
>
> // result variables
>                : "=&r"(lo),"=&r"(hi)
>
> // input variables  (note that I'm not sure what %r is needed for?
>                : "%r"(x),"r"(y));
>
> all the variables are numbered in order of output then input variables
from
> 0 upwards.  If you need to have a variable that's both input and output
> you'd use something like:
>
>                 : "=&r"(inout)
>                 : "0"(inout)
>
> where the number is the matching output variable.
>
> Note that if you actually update memory you should include a 3rd : with
the
> param "memory", if you update status flags you should also include "cc",
eg:
>
>     asm volatile(" some asm"
>             : "=&r"(out)
>             : "r"(arg0), "r"(arg1)
>             : "memory", "cc" );
>
> There are other issues relating to the platform you're running on, eg if
you
> did use real .S files there are issues for making function calls,
prologue,
> calling conventions etc etc.  eg I could happily write asm that meets the

> NetBSD ARM ABI, but may not work with linux's ABI.  Using asm hides all
> this.
>
> Chris
>
> ----- Original Message -----
> From: "marc dukette" <dukette at adelphia.net>
> To: <tremor at xiph.org>
> Sent: Wednesday, September 11, 2002 12:13 AM
> Subject: Re: [tremor] Support for ARM ASM with non GNU based tools
>
>
> > I take it no one has any interest in getting the ARM assembly to work on
> > Microsoft compiler, guess I will have to bone up on my GCC specific
> > assembly.  It would be nice if someone would at least explain why you
are
> > using GCC specific assembly syntax for the ARM assembly.  Is there some
> > benefeit to be gained, that can not be done with seperate ASM files, or
> > other compilers? Is it even possbile to port this code?
> >
> > ----- Original Message -----
> > From: "marc dukette" <dukette at adelphia.net>
> > To: <tremor at xiph.org>
> > Sent: Saturday, September 07, 2002 12:58 PM
> > Subject: [tremor] Support for ARM ASM with non GNU based tools
> >
> >
> > > Hi,
> > > I am looking at using Tremor on a PocketPC device, and actually I have
> it
> > > working, however the Microsoft ARM compiler does not support embedded
> ASM
> > > for the ARM platform.  What are the chances that as Tremor goes
forward
> > > someone could move the Assembly based routines into seperate .asm
files
> > > rather than using embedded asm.  I can and have been able to convert
> even
> > > GCC based ASM files for use with Microsoft ARM compiler, but have
never
> > > successfully been able to convert GCC based inline ASM.  There appears
> to
> > be
> > > some proprietary syntax used.  Does this buy you something over using
> > > seperate standard ASM.  I have had similar issues with the MAD MP3
> decoder
> > > and the original Fixed Point(Nicolas Pitre) version of this library.
> > Sorry
> > > if this is a stupid question, but I have only limited experience with
> the
> > > GNU toolset, and am by no means an expert in ARM assembly.
> > >
> > > BTW
> > >
> > > ARM assembly aside(since I am not using it with either version), I
must
> > > agree with Nicolas Pitre that his Fixed Point version is significantly
> > > faster on ARM and xscale than the current Tremor release.  I have also
> not
> > > found a single stream that his library has any problems playing.
> Granted,
> > > on PocketPCs it is much harder to hear distortions than on PC systems.
> > >
> > > --- >8 ----
> > > List archives:  http://www.xiph.org/archives/
> > > Ogg project homepage: http://www.xiph.org/ogg/
> > > To unsubscribe from this list, send a message to
> 'tremor-request at xiph.org'
> > > containing only the word 'unsubscribe' in the body.  No subject is
> needed.
> > > Unsubscribe messages sent to the list will be ignored/filtered.
> >
> > --- >8 ----
> > List archives:  http://www.xiph.org/archives/
> > Ogg project homepage: http://www.xiph.org/ogg/
> > To unsubscribe from this list, send a message to
'tremor-request at xiph.org'
> > containing only the word 'unsubscribe' in the body.  No subject is
needed.
> > Unsubscribe messages sent to the list will be ignored/filtered.
> >
>
> --- >8 ----
> List archives:  http://www.xiph.org/archives/
> Ogg project homepage: http://www.xiph.org/ogg/
> To unsubscribe from this list, send a message to 'tremor-request at xiph.org'
> containing only the word 'unsubscribe' in the body.  No subject is needed.
> Unsubscribe messages sent to the list will be ignored/filtered.

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'tremor-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Tremor mailing list