在32位应用程序中使用64位功能
64 bit features in a 32 bit application?
我有一个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位模式,它应该工作得很好。
相关文章:
- 将应用程序从32位移植到64位时出现问题
- 64位机器上的C++内存对齐
- qmake:检测目标位宽(32 位或 64 位)
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 在 64 位边界上对齐C++结构数组?
- 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?
- 在 64 位的 c++ 中运行 mstest 测试
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 浮点数为 32 位和 64 位二进制表示形式
- 是否有 64 位等效于 GetLastInputInfo / LASTINPUTINFO?
- 所有可能的链接生成器与64位密钥
- WinAPI C++如何从 64 位应用程序加载资源
- 在 c++ 中输出 64 位整数
- 如果在创建对象时创建了 VPTR,那么为什么具有虚拟功能的类的大小在 32 位系统上为 4,在 64 位机器上为 8
- 如何在64位QT应用中使用32位组装功能
- 对 64 位整数中的尾随零位进行计数的固有功能
- 如何在64位应用程序中使用InstallShield 2012试用版功能
- 通过自定义的 printf 功能跨平台打印 64 位交互器
- 在32位应用程序中使用64位功能