我的环境是64位win7,VC2010。是否有可能在intel/64位win7上的32位应用程序中使用64位指令
当然,intel里面是64位的CPU。
我可以在32位应用程序中使用64位指令/本机机器字(64位)吗?由于我的大部分代码都是32位的,我不想将它移植到64位。我想通过编译器内部或内联汇编(也是64位VC编译器不支持内联汇编)手动优化它,是否有可能运行64位代码fox示例mov rax ,在32位模式应用程序中的rbx?
我的环境是64位win7,VC2010。是否有可能在intel/64位win7上的32位应用程序中使用64位指令
当然,intel里面是64位的CPU。
我可以在32位应用程序中使用64位指令/本机机器字(64位)吗?由于我的大部分代码都是32位的,我不想将它移植到64位。我想通过编译器内部或内联汇编(也是64位VC编译器不支持内联汇编)手动优化它,是否有可能运行64位代码fox示例mov rax ,在32位模式应用程序中的rbx?
如果您的应用程序使用32位指令集,则不可以选择在同一应用程序中“有时”使用64位指令。有一些选择,但是:
其实你可以。用于从32位切换到64位模式(显然必须存在于64位操作系统上才能运行32位代码)的机制不受任何保护,可以从用户代码中使用。在Windows上,它被称为Heaven's Gate,它非常简单:只需要一个33h段选择器就可以进行远程调用。
那么,如何运行64位代码呢?
call 33h:your64bitcode
...
your64bitcode:
; do something
retf
有,当然,一些限制,你可以以这种方式进入的,因为你在一个64位的过程确实不是64位的代码做什么。
可能的重复[在32位Windows下使用Amd64指令的轻量级方法?](http://stackoverflow.com/questions/7133078/lightweight-method-to-use-amd64-instructions-under-32bit -windows) –
@John Zwinck:不,它不是重复的。这里的操作系统是64位。 –
顺便说一下,当使用MSVC定位64位时,您仍可以链接分别汇编的代码。 – harold