Smpeg MMX asm compilation (problem)

Pedro Alves pedro_alves@portugalmail.pt
Tue Aug 22 03:05:00 GMT 2006


Soul Studios wrote:
> Thanks all-
> how do you call macros in GNU as?- I've tried copying examples from the 
> net but gas complains about the syntax.
> Or do I need to be running the file through GCC instead to use the 
> #define's?
> 

Macros and defines are different things. I may have lead you
to believe they are the same. Macros are handled by gas, but
the #defines need to be ran through by a preprocessor.
Since the file you are porting already has some #defines in it,
the build system that project is using must be already taking care
of that.
But yes, the easiest way is to call the gcc driver on it. If the
file extension is ".S" (uppercase), it knows it has to call
the preprocessor, and then call the assembler.


> A few more questions:
> from mmxflags_asm.S:
> What is .Lfe1?
> Is it a register, a function call?

A local label. If I remember correctly, i386 mingw/cygwin
uses "L" as local label prefix, while elf usually uses ".L" prefix.
I suggest using a define for this too:

#ifdef __ELF__
# define LSYM(S) . ## S
#else
# define LSYM(S) S
#endif

Cheers,
Pedro Alves


> 
> Is there a table somewhere for all the different "@" types and their 
> respective int's (ie @object, @function, etc)?
> 
> 
> 
> And I'm now looking at 
> http://cvs.icculus.org/*checkout*/cvs/smpeg/video/mmxidct_asm.S?rev=1.7
> which's even more complicated. How do I go about converting something 
> like this?
> 
> I am absolutely astounded at the lack of documentation on this stuff, on 
> the web- usually when I'm researching something I can google it in about 
> 15 minutes, even when it's relatively obscure-
> but pages on differences between COFF/PE & ELF syntax are naught, and 
> COFF pages seem scarce- any useful URL's you have would be... useful?
> Thanks again,
> M@
> 
> 
> 
>> Simplified example, from code found in some places in gnu sources:
>>
>> #ifdef __ELF__
>> # define TYPE(x) .type x,@function
>> # define SIZE(x) .size x, . - x
>> #else
>> # define TYPE(x) .def x; .scl 2; .type 32; .endef
>> # define SIZE(x)
>> #endif
>>



More information about the Binutils mailing list