Jav*_*Man 27 c++ windows 64-bit inline-assembly visual-c++
我正在使用Visual C++ 2010开发32位Windows应用程序.有一些我真的想要使用内联汇编.但我刚刚意识到Visual C++不支持64位应用程序中的内联汇编.因此,将来移植到64位是一个大问题.
我不知道64位应用程序与32位应用程序有何不同.是否有可能在未来将32位应用程序全部升级到64位?我听说64位CPU有更多的寄存器.由于性能不是我的应用程序的问题,使用这些额外的寄存器不是我的问题.32位应用程序是否需要升级到64位还有其他原因吗?与32位应用程序相比,64位应用程序处理的方式是否有所不同,除了64位应用程序可能使用64位CPU独有的寄存器或指令?
我的应用程序需要与其他操作系统组件进行交互,例如驱动程序,我知道它必须是64位窗口中的64位.我的32位应用程序是否与它们兼容?
Bil*_*eal 18
Visual C++不支持x64模式的内联汇编,因为通常使用内联汇编是个坏主意.
我想知道将来有可能将32位应用程序全部升级到64位.
这取决于您的目标受众.如果你的目标是服务器,那么是的,允许用户不安装WOW64子系统是合理的,因为它是一个服务器 - 你知道它可能不会运行太多的32位代码.我相信如果您将其安装为"服务器核心"实例,Windows Server 2008 R2已经允许此选项.
由于性能不是我的应用程序所关心的,因此使用额外的64位寄存器不是我所关心的问题.还有其他原因导致32位应用程序未来必须升级到64位吗?
64位与寄存器无关.它与可寻址虚拟内存的大小有关.
除了64位应用程序正在使用64位CPU独有的寄存器/指令之外,64位应用程序进程是否会与32位应用程序进程不同?
最有可能的.32位应用程序受到限制,因为它们不能同时将大于2GB的内容映射到内存中.64位应用程序没有这个问题.即使他们没有使用超过4GB的物理内存,能够处理超过4GB的虚拟内存也有助于将磁盘上的文件映射到内存等.
我的应用程序需要与其他操作系统组件进行交互,例如驱动程序,我知道它必须是64位窗口中的64位.我的32位应用程序是否与它们兼容?
这完全取决于你如何与这些司机沟通.如果它是通过类似"命名文件界面"的东西,那么你的应用程序可以保持32位.如果您尝试执行共享内存(Yikes!共享内存可从用户模式访问驱动程序?!?),那么您将不得不将应用程序构建为64位.