[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

The i386 ABI?



Hello.

I'm just an ignorant debian user, but I was wondering, is there some
reason for the C calling conventions used in current Debian/x86? To my
eyes, at least, it would seem that compiling everything with a slightly
different ABI, namely -freg-struct-return -mregparm=3, would make
everything a little faster, as well as a little smaller. Whatever ABI
choices are made in the base libraries pretty much force the user code
to use the same calling conventions, essentially preventing it from
being optimal.

The gcc info pages say that -freg-struct-return should be the standard
for systems where gcc is the primary compiler. However, I haven't seen a
Linux system where this would be the case.

Are there any plans to do something about this at some point in the
future (maybe when the next major incompatibility after ELF, Linux 2.0
and glibc2 arises)? Or is there some reason why registers are not used
much in function calls by default? (Other than compatibility issues,
that is)

It would be optimal, of course, if there were some compiler magic that
allowed libraries with different ABIs to be used simultaneously (maybe
some guessing based on the location of header files), but I don't think
egcs is that advanced yet...

I hope someone can clarify on this. Thanks,


Lauri Alanko
la@iki.fi


Reply to: