是否可以在 i686 Linux(x86,32 位)上启动 x86_64 代码?我的 CPU 是现代 Core 2,它本身可以运行 x86_64 64 位代码,但操作系统是 32 位。
启动的代码是纯数学的,几乎不需要与操作系统交互。
我想测量一下,与 32 位模式相比,我的程序在 64 位模式下的速度有多快。该程序是为了解决巨大的组合问题,完整的运行时间是几十个小时。
我可以使用 qemu 启动 64 位代码,但它不是本机执行,并且 qemu 中的速度与实际 CPU 速度无关。
如果没有某种形式的模拟,您将无法在 32 位内核上运行 x86_64 程序。 (相反的方式也可以正常工作,无需模拟。)
为了能够在 x86_64 上运行 64 位代码,您必须进入“长模式”,这需要设置适当的页表(除其他外)。 32 位内核不会执行任何 64 位页表或映射。所以用户空间代码无法进入64位模式。在一些内核帮助下也许可以实现这一点,但 32 位内核根本没有为这种事情做好准备。
由于您可以在 64 位内核上运行 32 位代码,因此现在没有真正的理由不使用 64 位内核,尤其如果您有一些可以从 64 位模式受益的代码(特别是更多寄存器)。
为什么不直接从 64 位 live-cd 启动呢?或者在单独的磁盘或分区上安装 64 位发行版?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)