用64位处理器用32位系统运行32位的应用软件甚至操作系统有什么好处

计算机系统
32位和64位的概念:
32位和64位是指CPU通用寄存器的位宽。32位的内存可寻址范围为4G,而64位理论支持的最大内存寻找范围为1600TB(实际无法达到)
与操作系统、驱动的关系:
操作系统和驱动应该和CPU位数保持一致,32位硬件需要安装32位操作系统和驱动程序,64位的CPU可安装32位和64位操作系统,安装64位操作系统,可支持32位的运算。
操作系统与应用程序的关系:
32位的操作系统只能运行32位的应用程序。
64位操作系统上可以运行32位的应用程序(是通过WOW64来实现的,如果发系统发现32位的程序,系统将32位的指令转换成64位的指令执行),也可以运行64的应用程序;但驱动程序例外,必须和操作系统的位数相同.
VS可以都是32位的,没有64位的但32位的VS可以开发x64和x86的程序。
应用程序和所调用的库的平台要一致,不能混用64位和32位的代码,比如不能在64位的应用程序上调用32位的动态链接库,反之亦然。可以用depends来查看dll的调用,以及(0xc000007错误)
在VS中如何判断编译环境是64位还是32位(用于跨平台应用)
在 Win32 配置下,_WIN32 有定义,_WIN64 没有定义。在 x64 配置下,两者都有定义。即在 VC 下,_WIN32 一定有定义。
因此,WIN32/_WIN32 可以用来判断是否 Windows 系统(对于跨平台程序),而 _WIN64 用来判断编译环境是 x86 还是 x64
#include &json/json.h&
#ifdef _DEBUG
#ifndef _WIN64
#pragma comment(lib,&json/json_mtd.lib&)
#pragma comment(lib,&json/json_mtd_x64.lib&)
#ifndef _WIN64
#pragma comment(lib,&json/json_mt.lib&)
#pragma comment(lib,&json/json_mt_x64.lib&)
using namespace J
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:258次
排名:千里之外2015年9月 VC/MFC大版内专家分月排行榜第二2015年7月 硬件/嵌入开发大版内专家分月排行榜第二2014年5月 VC/MFC大版内专家分月排行榜第二2014年3月 VC/MFC大版内专家分月排行榜第二2013年10月 VB大版内专家分月排行榜第二2013年7月 VB大版内专家分月排行榜第二2012年5月 VB大版内专家分月排行榜第二2012年4月 VB大版内专家分月排行榜第二2012年2月 VB大版内专家分月排行榜第二2011年11月 VB大版内专家分月排行榜第二
2015年11月 VC/MFC大版内专家分月排行榜第三2015年6月 VC/MFC大版内专家分月排行榜第三2015年2月 VC/MFC大版内专家分月排行榜第三2014年1月 VC/MFC大版内专家分月排行榜第三2012年3月 VB大版内专家分月排行榜第三2011年12月 VB大版内专家分月排行榜第三2011年10月 VB大版内专家分月排行榜第三
2009年7月 总版技术专家分月排行榜第二2009年3月 总版技术专家分月排行榜第二2009年1月 总版技术专家分月排行榜第二2005年7月 总版技术专家分月排行榜第二2005年5月 总版技术专家分月排行榜第二2005年3月 总版技术专家分月排行榜第二
优秀小版主2015年8月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2015年2月论坛优秀版主
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2016年11月 Oracle大版内专家分月排行榜第一2016年10月 Oracle大版内专家分月排行榜第一2016年7月 Oracle大版内专家分月排行榜第一2016年6月 Oracle大版内专家分月排行榜第一2016年5月 Oracle大版内专家分月排行榜第一2016年4月 Oracle大版内专家分月排行榜第一2016年3月 Oracle大版内专家分月排行榜第一2016年2月 Oracle大版内专家分月排行榜第一2015年12月 Oracle大版内专家分月排行榜第一2015年11月 Oracle大版内专家分月排行榜第一2015年10月 Oracle大版内专家分月排行榜第一2015年9月 Oracle大版内专家分月排行榜第一2015年8月 Oracle大版内专家分月排行榜第一2015年7月 Oracle大版内专家分月排行榜第一2015年5月 Oracle大版内专家分月排行榜第一
2016年11月 MS-SQL Server大版内专家分月排行榜第二2016年10月 MS-SQL Server大版内专家分月排行榜第二2016年9月 Oracle大版内专家分月排行榜第二2016年9月 MS-SQL Server大版内专家分月排行榜第二2016年8月 Oracle大版内专家分月排行榜第二2016年6月 MS-SQL Server大版内专家分月排行榜第二2016年5月 MS-SQL Server大版内专家分月排行榜第二2016年2月 MS-SQL Server大版内专家分月排行榜第二2016年1月 Oracle大版内专家分月排行榜第二2015年9月 MS-SQL Server大版内专家分月排行榜第二2015年4月 Oracle大版内专家分月排行榜第二
2013年5月 总版技术专家分月排行榜第一
2016年7月 总版技术专家分月排行榜第二2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。32位与64位 CPU、编译器、操作系统与应用程序的区别 - 推酷
32位与64位 CPU、编译器、操作系统与应用程序的区别
1.64b的操作系统和64b的CPU是如何诞生的?
我们都知道,制造多少位的CPU是相对独立的,但是,操作系统呢?我们能在32b的机器上编写一个64b的操作系统吗?想一想,如果我需要用C语言编写一个64b的操作系统,那么需要哪些条件?
2.32b应用程序是否可以运行在64b机器上?64位系统是否可以运行在32b机器上?
前者可以,后者不可以。
3.应用程序、编译器、操作系统、CPU的关系是什么样的?
答:CPU的位数是固定的,64b和32b系统的CPU指令集和操作数位数等都不相同,但是是不是64b的CPU就没法运行32b的指令集呢?不是!!!但是CPU在设计初始,往往考虑到了兼容性,就是说,用户更新了CPU之后,如果发现原来的程序或者操作系统无法运行,这样的CPU市场肯定是不好的。所以我们可以在64b的CPU上装32b的操作系统—— 既然如此,OS封装了硬件细节,那么编译器和上层软件就都可以是32b的了。
反过来,32b的CPU能够运行64b的os呢(实际上是运行64b的指令集),很显然,操作系统运行在硬件之上,操作系统本身也是一个软件,实际上可以看作一系列64b的指令流,很显然,32b的CPU是没法运行64b的操作系统的。这就相当于火车可以跑到驴车的速度,但反过来却是不行的。
那么应用程序呢?首先思考一下,什么是32b或者64b的应用程序?如果我们将应用程序理解为目标文件(在linux上是ELF格式),也就是一堆机器指令,那么恨显然,64b的应用程序没法在32b的机器上运行。但是,如果是64b CPU,装上32b OS,然后安装64位相关的库,可以运行64位的应用程序—— 这样当然很鸡肋。总结一下,就是下面一副图。有一点可以概括—— 上小下大。
4.解答1中的疑问:
首先,我需要一个编译器,能够将C程序编译成64bELF文件,而且这个编译器要运行在32b的os之上。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 32位基于64位处理器 的文章

 

随机推荐