如何在64位中替換_asm nop
指令。編譯和工作在32位。在64位,VS2008,C++中替換_asm nop
回答
我相信你可以使用__nop內在函數。這應該編譯爲您正在構建的處理器的相應機器指令。
http://msdn.microsoft.com/en-us/library/aa983381(VS.80).aspx
UPDATE:
下面是我剛和VS2008創建一個實例。它編譯爲Win32和x64的配置:
#include "stdafx.h"
#include <intrin.h>
int _tmain(int argc, _TCHAR* argv[])
{
// The intrinsic function below will compile to a NOP machine instruction.
// This is the same as _asm nop in the 32-bit compiler.
__nop();
return 0;
}
在你想知道的情況下,我拆開上面的例子和x64的輸出是:
wmain proc near
db 66h
nop
nop
xor eax, eax
retn
wmain endp
在Win32輸出是:
_main proc near
nop
xor eax, eax
retn
_main endp
不能在64位程序中使用_asm。替換是內在的,指令列表是available here。 NOP不是其中之一,當您安裝了64位編譯器時,您必須使用MASM64,可用作vc \ bin \ x86_amd64 \ ml64.exe。
好吧,但它是在C++內部,它在VC++ 2008中編譯,我不明白我想如何使用MASAM64爲此,.. – ra170 2010-02-23 21:53:46
我將以另一種方式說明:如果要編譯爲x64,則不能使用_asm的內聯彙編。發佈您的_asm代碼以幫助我們爲您提供幫助。 – 2010-02-23 23:08:10
- 1. VS2008親+七親64位
- 2. FREAD失敗,VS2008 64位
- 3. 如何將__asm jno no_oflow替換爲VS2008 64位版本中的內置函數?
- 4. 在VS2008中創建64位CLR C++項目
- 5. 查找替換VS2008
- 6. NOP的替代品
- 7. C# - 在32位和64位
- 8. VS2008開始頁面替換
- 9. 如何在VS2008中指定一個64位的unsigned int const 0x8000000000000000?
- 10. 在64位Windows 7中替換Vern Buerg的list.com
- 11. 替換vs2008中的文本塊
- 12. 搜索和替換VS2008 - 換行符
- 13. INT_PTR在64位轉換
- 14. 在64位機器上調用64位Dephi DLL從C#在64位機器上
- 15. 64位替代linq excel
- 16. va_list的在C++ 64位
- 17. sizeof(長)在64位C++
- 18. 如何轉換爲32位整數爲64位值在C
- 19. VS2008中的64位調試版本的並行配置錯誤
- 20. 大廈在64位Windows上VS2008給人C2632錯誤
- 21. VS2008鏈接錯誤使用SafeInt3.hpp在64位模式
- 22. C++ 64位問題
- 23. 64位使用C#
- 24. C++/CLI 64位COM
- 25. 如何在C中寫入64位?
- 26. MSVC彙編函數參數C++ vs _asm
- 27. 在64位.net應用程序通過c + + 64位DLL pInvoke
- 28. 如何在64位機器上將64位C++程序編譯?
- 29. VS2008 - 用推斷的類型替換var
- 30. 從C#中加載C++類庫(64位)
我認爲我們大多數人需要一點點上下文... – 2010-02-23 19:51:48