弱问一下64位OS和app的初级问题,希望大家给扫盲。

发布于 2022-09-19 00:34:34 字数 150 浏览 10 评论 0

1,那些标明 amd64的OS 使用的是 64位模式 还是 兼容模式 啊?ps,我觉得是 64位模式。
2,如果是 64位模式,32位的app 怎么运行的啊?不是 兼容模式 可以运行 32位的OS和app吗?ps,比如那个flashplugin要装什么nsplugin什么的,怎么回事啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

晒暮凉 2022-09-26 00:34:34

1, 64

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

╄→承喏 2022-09-26 00:34:34

既然是64-bit mode(需要64位OS和工具链),32位的app怎么运行的?32位flashplayer可以用,的据说32位的Adobe Reager也可以用

孤蝉 2022-09-26 00:34:34

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 位应用代码。

等待圉鍢 2022-09-26 00:34:34

原帖由 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去赚点美钞实在太可惜了

桜花祭 2022-09-26 00:34:34

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

你的背包 2022-09-26 00:34:34

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。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文