免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2690 | 回复: 6
打印 上一主题 下一主题

弱问一下64位OS和app的初级问题,希望大家给扫盲。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-05 08:20 |只看该作者 |倒序浏览
1,那些标明 amd64的OS 使用的是 64位模式 还是 兼容模式 啊?ps,我觉得是 64位模式。
2,如果是 64位模式,32位的app 怎么运行的啊?不是 兼容模式 可以运行 32位的OS和app吗?ps,比如那个flashplugin要装什么nsplugin什么的,怎么回事啊?

论坛徽章:
0
2 [报告]
发表于 2008-06-05 10:25 |只看该作者
1, 64

2, 64位,统称long mode。 CPU也还分成两个模式, 一个叫64-bit mode,跑纯64位的程序; 另一个叫compatible mode, 用来给64位OS跑32位的应用程序。

论坛徽章:
0
3 [报告]
发表于 2008-06-05 10:42 |只看该作者
既然是64-bit mode(需要64位OS和工具链),32位的app怎么运行的?32位flashplayer可以用,的据说32位的Adobe Reager也可以用

论坛徽章:
0
4 [报告]
发表于 2008-06-06 00:18 |只看该作者
CPU 处于 64 位下, OS 是 64 位。

64 位代码运行在 Long Mode 的 64 bit 环境。 32 位代码则运行中 Long Mode 的 compatibility mode 下。

其实现原理是很简单的:
1、64 位模式下,address 缺省是 64 位,操作数缺省是 32 位,CS/DS descriptor 是无效的,除了 CS 几个特殊标志外。

2、long mode 的 cs 的 L 指示代码运行在64位模式还是兼容模式。CS.L 标志在 32 位传统模式下是保留未用的。
   基于32位OS的应用程序,其 CS.L 为 0。

3、当 32 位程序无修改地直接在 64 位OS下运行时,CPU 读取 CS.L 为 0,那么判断这个程序是在兼容下模式下运行。
   此时,兼容模式下的 CS/DS descriptor 是有效的。 操作数大小与及 address 大小则取决 CS.D 标志。

3、兼容模式下的程序 address 缺省为 32/16 位, 操作数为 32/16, 那么,processor 能就直接运行 32 位应用代码。

论坛徽章:
0
5 [报告]
发表于 2008-06-06 10:23 |只看该作者
原帖由 mik 于 2008-6-6 00:18 发表
CPU 处于 64 位下, OS 是 64 位。

64 位代码运行在 Long Mode 的 64 bit 环境。 32 位代码则运行中 Long Mode 的 compatibility mode 下。

其实现原理是很简单的:
1、64 位模式下,address 缺省是 64  ...


老大你搞不搞Linux, BSD, Solaris之类的内核, 像arch代码或者PCI驱动什么的?

以你对x86/x64的研究, 不到Intel/Sun/AMD去赚点美钞实在太可惜了

论坛徽章:
0
6 [报告]
发表于 2008-06-06 13:02 |只看该作者

回复 #4 mik 的帖子

谢谢,你说的比AMD的文档清楚

论坛徽章:
0
7 [报告]
发表于 2008-06-07 13:15 |只看该作者

水在自己这里吧

1. ILP : int, long, 和 pointer 都是 64bit。
2. LP : int 是 32bit,long 和 pointer都是 64bit。
3. LLP: int 和 long 都是 32bit,pointer 和 long long 是 64bit。

VC 遵循 LLP 模式。大部分平臺上的GCC都使用 LP 模式,但是Windows平臺上的GCC(MinGW)遵循 VC,使用LLP。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP