在x86(32位)Linux上启动x86_64代码,在x86_64 CPU上运行

?是否可以在i686 Linux(x86,32位)上启动x86_64代码? 我的CPU是现代Core 2,它本身可以运行x86_64 64位代码,但操作系统是32位。

开始的代码是纯math的,它几乎不需要与操作系统交互。

我想测量,与32位模式相比,我的程序在64位模式下速度有多快。 该scheme是解决巨大的组合问题,全尺寸运行几十个小时。

我可以用qemu启动64位代码,但是它不会在本机执行,而且在qemu中的速度与真实的cpu速度无关。

Solutions Collecting From Web of "在x86(32位)Linux上启动x86_64代码,在x86_64 CPU上运行"

没有某种形式的模拟,您将无法在32位内核上运行x86_64程序。 (另一种方式工作得很好,但没有模拟。)

为了能够在x86_64上运行64位代码,你必须进入“长模式”,这需要设置合适的页表(除此之外)。 一个32位内核不会做任何64位页表或映射。 所以用户空间代码不能进入64位模式。 可能有一些内核的帮助,但32位内核根本就没有准备好这样的事情。

而且由于你可以用64位内核运行32位代码,所以现在没有理由不使用64位内核, 特别是如果你有一些可以从64位模式(特别是更多寄存器)中受益的代码。

为什么不从64位live-cd启动? 或者在一个单独的磁盘或分区上安装64位分发?

使用vmware; 如果CPU支持的话,在32位主机操作系统上运行64位虚拟机就可以工作得很好。

x86 / x86_64有一个周期精确的模拟器。 默认情况下,它将模拟AMD的K8

PTLsim是用于x86和x86-64指令集的最先进的周期精确微处理器仿真器和虚拟机。 PTLsim模型完全无序处理器核心,具有广泛的内存和分支推测与重放,一个高度可配置的集群微体系结构与各种问题队列设计,一个完整的缓存层次和内存子系统和支持硬件。

不幸的是,它不能在32位x86上运行x86_64代码(引自FAQ)

当然,32位版本的PTLsim将缺少x86-64支持

但速度应与实际运行相关联,并提供大量信息。