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

Chris Gilbert chris at dokein.co.uk
Tue Sep 10 17:56:18 PDT 2002



depends on the calling pattern for the function, eg if the function is
wrapping a loop then yes there is a gain, however macros would need to be
invented for the calling conventions.

What is the calling convention for asm on MS?  r0-r3 args? r0 is return
value? sp is a stack?

Chris

----- Original Message -----
From: "marc dukette" <dukette at adelphia.net>
To: <tremor at xiph.org>
Sent: Wednesday, September 11, 2002 1:51 AM
Subject: Re: [tremor] Support for ARM ASM with non GNU based tools

<p>> 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
>
>
> > 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.
>

--- >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