在32位应用程序中使用64位功能

64 bit features in a 32 bit application?

本文关键字:64位 功能 32位 应用程序      更新时间:2023-10-16

我有一个32位的应用程序,我计划在64位的Windows 7上运行。

由于对第三方功能的依赖,目前我无法将整个应用程序转换为64位。

但是,我希望在SSE优化中访问xmm9-xmm15寄存器,并在执行应用程序时使用64位cpu通常提供的额外寄存器。

这是可能实现与一些编译器标志?

在我看来,最好的方法是将您的程序划分为多个可执行。编译为64位的EXE可以与使用32位第三方DLL的另一个32位EXE通信。你将在通信上有一些开销,并且必须实现依赖进程的启动/停止,但是你将有一个清晰的程序架构。

如果你开发本地c++应用程序,你可以实现第二个EXE,例如作为c++进程外对象(LocalServer甚至LocalService)。你可以考虑用c#实现COM服务器的方法(见这里)。有时这种方法可以简化实现,并且可以同时利用。net和本机编程的优点。

可以。

正如Christopher指出的那样,这种技术并不总是有效,但是为了这个明确的目的,跳入几行手工制作的汇编并使用更多的寄存器,然后将结果放在某个地方,然后跳转到32位模式,它应该工作得很好。