我的环境是64位win7,VC2010。
当然,内部的intel是64位CPU。
我可以在32位应用程序中使用64位指令/本地机器字(64位)吗?由于我的大部分代码都是32位,我不想将其移植到64位。
对于一些性能关键的热门代码,我想通过编译器内部或内联汇编手动优化它(另外64位VC编译器不支持内联汇编),是否可以运行64位代码fox示例mov rax,在32位模式应用程序中的rbx?
答案 0 :(得分:10)
实际上,你可以。用于从32位模式切换到64位模式的机制(显然必须存在于能够运行32位代码的64位操作系统上)不受任何方式保护,并且可以从用户代码中使用。在Windows上,它被称为Heaven's Gate,它非常简单:只需要一个33h的段选择器进行远程调用。
那么,如何运行64位代码?
call 33h:your64bitcode
...
your64bitcode:
; do something
retf
当然,对于以这种方式输入的64位代码可以做些什么有一些限制,因为你不是真正的64位进程。
答案 1 :(得分:4)
如果您的应用程序使用32位指令集,那么不,您不能选择在同一应用程序中“有时”使用64位指令。但是有一些选择: