Re: Default 32 bit output

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

 



Domen Vrankar wrote:
--target=i386-elf
regards
kanishk

What about if I want to make target=i686 to output 32 bit executables?
Is this even possible? Are there any benefits if you use target i686
instead of i386?


I'm sure I use:

CFLAGS="-m32" LDFLAGS="-m32" ./configure


There are two issues here. The issue of ABI, there is one 32bit ABI and one 64bit ABI on linux Intel IA32. The above flags will change that and maybe the suggested --target=i386-elf does too.


The i386 and i686 issue is more to do with code generation and optimization. Affecting load/store ordering, alignment, etc... but the ABI is the same.

I don't think there are any new instructions used when compiling for i686 on GCC, it just optimizes the code and generation for the execution flow and pipelines for that CPU better than a 386/486.

Which means the code won't SIGABORT on you and fail, it will just perform a little bit faster or slower.



AFAIK there is no way to mark the resulting executable by way of ELF magic numbers to only be usable on i686 onwards because the code makes use of new instructions.

Most applications which use say MMX perform an auto-detect on the CPU to decide the best routines to use and falling back to non-MMX versions.


Darryl

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux