32 位应用程序中的 64 位功能?

发布于 2024-11-03 07:13:56 字数 188 浏览 0 评论 0原文

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

现阶段,由于依赖第三方功能,我无法将整个应用程序转换为 64 位。

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

这可以通过一些编译器标志来实现吗?

I have a 32 bit application which I plan to run on 64bit Windows 7.

At this stage I cannot convert the entire application to 64 bit due to dependencies to thirdparty functionality.

However, I would like to have access to the xmm9-xmm15 registers in my SSE optimizations and also use the additional registers which 64 bit cpus provides in general while executing my application.

Is this possible to achieve with some compiler flag?

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

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

发布评论

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

评论(2

明月松间行 2024-11-10 07:13:56

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

如果您开发本机 C++ 应用程序,则可以将第二个 EXE 实现为 COM++ 进程外对象(LocalServer 甚至 LocalService)。您可以考虑用 C# 实现 COM 服务器的方式(请参见此处)。有时,这种方式可以简化实现,并且您可以利用 .NET 和本机编程的优点。

It seems to me that the best way would be to divide your program in more than one executable. The EXE compiled as 64bit can communicate with another 32-bit EXE used the 32-bit thirdparty DLL which you need. You will have some overhead in the communication and will have to implement Starting/Stopping of depended process, but you will have clear program architecture.

If you develop native C++ application you can implement the second EXE for example as the COM++ out-of-process object (LocalServer or even LocalService). You can consider the way to implement the COM server in C# (see here). Sometimes that way could simplify the implementation and you can use the advantages of both .NET and native programming.

月牙弯弯 2024-11-10 07:13:56

是的,你可以。请参阅此示例了解操作方法。

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

Yes, you can. See this example for how.

As Christopher pointed out, this technique will not always work, but for this express purpose, to jump into a few lines of handcrafted assembly and make use of more registers, then put the result somewhere and then jump back to 32 bit mode, it should work out just fine.

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