linux64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32
原文鏈接:https://blog.csdn.net/yyywill/article/details/54426900
x86-64 與 IA-64
x86-64一般稱為AMD x86-64,難道x86-64不是Intel首先搞出來的指令集么?這回的確是AMD干的,但是用的是Intel 16bits升到32bits向下兼容的套路。大致是這樣的:
- x86:從1978年來的8086處理器開始,就已經出現了x86架構CPU,即32位處理器。
- x86-64:又簡稱為x64,最初開發為1999年AMD,為了擴充IA64。當時的x86-64架構誕生頗有時代意義,處理器的發展遇到了瓶頸,內存尋址空間由于受到32位CPU的限制而只能最大到約4G。于是就有了x86-64。后被INTEL所采用。
- ia-64:其實ia64的歷史早于x86-64x,最初由INTEL和惠普聯合推出。由于ia-64不與32位兼容,所以沒有受到重視。直到INTEL采用了AMD的x86-64架構,才正式的批量生產。而后為了日益擴張的計算需求,INTEL重新將IA-64拿出來,發布了安騰系列服務器CPU。
??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.
- The -m32 option sets int, long and pointer to 32 bits and generates code that runs on any i386 system.
- The -m64 option sets int to 32bits and long and pointer to 64 bits and generates code for AMD’s x86-64 architecture.
- The -mx32 option sets int, long and pointer to 32 bits and generates code for?AMD’s x86-64 architecture.
For darwin only the -m64 option turns off the -fno-pic and -mdynamic-no-pic options.
?
-mx32選項編譯出的程序只能在x86-64上運行。
?
?
總結
以上是生活随笔為你收集整理的linux64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 去除字符串中指定字符
- 下一篇: crackme之018