原文链接: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相关推荐

  1. linux 64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32

    -m32选项将int,long和指针设置为32位,并生成在任何i386系统上运行的代码. -m64选项将int设置为32位和long,指针设置为64位,并为AMD的x86-64体系结构生成代码. -m ...

  2. 64位Ubuntu上编译32位程序

    1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...

  3. linux 64 32 编译支持,在64位linux上编译32位程序 for i386 intel

    编辑中 # ld -V GNU ld version 2.15.92.0.2 20040927 Supported emulations: elf_x86_64 elf_i386 i386linux ...

  4. 64位Ubuntu上编译32位程序操作步骤

    1.      确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.      确认打开了多架构支持功能,应该输出为i386,执行: ...

  5. 在64位Ubuntu上编译32位程序常见错误

    问       题1: 找不到头文件 asm/errno.h 解决办法 : [/usr/lib/gcc$ ]sudo ln -s x86_64-linux-gnu/asm asm 问题2:找不到gcc ...

  6. linux编译32位的参数,几个Ubuntu 64上编译32位程序碰到的问题

    原本以为直接把源代码弄到Ubuntu 64bit的系统上直接编译就可以了.结果还很碰到了几个问题.这里总结一下,也当做个备份. 1. Vmware模拟64位系统的问题.在默认情况下,即使cpu支持64 ...

  7. linux64下编译32位程序,报错

    linux64下编译32位程序 gcc -o xxx -m32 xxx.c 遇到问题 /usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件 ...

  8. 在64位linux下编译32位程序

    一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序. 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM ...

  9. 64位的GCC 编译32位程序

    64位的GCC 编译32位程序 编译32的程序,只需要加上-m32就可以了 gcc -m32 llong.c 但是提示下面的错误 /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86 ...

最新文章

  1. linux java内存分析_Java内存分析利器MAT使用详解
  2. python3 sys.stdout.write print 区别
  3. hibernate入门
  4. 分析log及校准学习总结
  5. 站在物联网风口,如何抢滩千亿级智能家居市场?
  6. angular 9.2升级10.2.2
  7. Alpha-Beta剪枝算法原理
  8. 根据单词列表通过网络下载单词发音
  9. google搜索语法与技巧
  10. Java实现按分数排名,同分同名次
  11. bde oracle 商友的流程_怎么用BDE连接Oracle?(100分)
  12. 【报告分享】2021年度小红书高效种草营销手册-标记我的生活-小红书(附下载)
  13. 【算法学习】快包算法
  14. Vue2源码的学习日记(3)
  15. python基础选择题库_智慧树题库Python基础期末答案2020年免费
  16. Executor及Executors
  17. 如何查阅NLP资料 转自https://blog.csdn.net/qq_27009517/article/details/80841146
  18. 十大最佳 Linux 服务器发行版
  19. 关于微信小程序跳转页面后不刷新问题,和页面跳转后左上角还保留了之前的页面,和存在返回按钮的解决方法
  20. 校花美美(C语言代码解析)

热门文章

  1. react复习总结(1)--react组件开发基础
  2. ORACLE数据库,数据量大,转移数据到备份表语句
  3. oracle操作字符串:拼接、替换、截取、查找
  4. web访问 FastDFS 方法思路
  5. Agent Job相关的系统表
  6. 大型网站技术架构:核心原理与案例分析阅读笔记二
  7. Codeforces Gym 100676G Training Camp 状压dp
  8. 关于文字邮件日文乱码的问题
  9. 桌面应用程序员简单尝试Rich JavaScript Application
  10. .NET 框架与多线程 (转载)