linux64平台上编译32位程序: GCC编译选项 -m64

2021-05-18  本文已影响0人  googoler

x86-64 与 IA-64

x86-64一般称为AMD x86-64,难道x86-64不是Intel首先搞出来的指令集么?这回的确是AMD干的,但是用的是Intel 16bits升到32bits向下兼容的套路。大致是这样的:

x86-64架构基于x86,是为了让x86架构CPU兼容64位计算而产生的技术。X86-64架构的设计是采用直接简单的方法将目前的x86指令集扩展。这个方法与当初的由16位扩展至32位的情形很相似。优点在于用户可以自行选择x86平台或x64平台,兼容性高。

IA-64则是原生的纯64位计算处理器,并且与x86指令不兼容。如果想要执行x86指令需要硬件虚拟化支持,而且效率不高。优点在于IA-64架构体系将拥有64位内存寻址能力,能够支持更大的内存寻址空间。并且由于架构的改变,性能比起x86-64的64位兼容模式更高更强。
  所以,IA-64操作系统也是比较少见的,由于只能在INTEL安腾系列处理器及AMD部分服务器处理器运行,所以主流市场并不常见。而且,这些IA-64架构处理器也不能够使用x64操作系统。而x86-64处理器则可以自由选择x86或是x64操作系统。

编译选项

These `-m’ switches are supported in addition to the above on AMD x86-64 processors in 64-bit environments.
-m32
-m64
-mx32
Generate code for a 32-bit or 64-bit environment.

For darwin only the -m64 option turns off the -fno-pic and -mdynamic-no-pic options.


image.png
image.png
image.png

-mx32选项编译出的程序只能在x86-64上运行。

上一篇下一篇

猜你喜欢

热点阅读