gpt4 book ai didi

visual-c++ - 如何将汇编标记放入 C++ 代码 (x64)

转载 作者:行者123 更新时间:2023-12-04 04:30:50 25 4
gpt4 key购买 nike

我需要将标记放在 C++ 代码中,这些标记应该在汇编或二进制文件中可见。使用内联汇编为 32 做这件事似乎很简单:

__asm {
NOP
NOP
NOP
}

或使用数据库汇编语句:

__asm {
DB 0x00, 0xFF, 0x10
}

但 VisualStudio 2005 及更高版本不支持 x64 的内联汇编。有什么办法吗?也许我可以在单独的程序集模块中创建一个函数,但我如何确定链接器会在那里放置一个实际的程序集而不是 CALL?

最佳答案

在某处定义一个全局 volatile 变量,比如 volatile __int64 blah = 0;。然后,无论您想要什么标记,都可以使用 _InterlockedCompareExchange64(&blah, SOME_UNIQUE_CONSTANT1, SOME_UNIQUE_CONSTANT2);。您一定会找到使用 SOME_UNIQUE_CONSTANT1 加载 ECX:EBX 和使用 SOME_UNIQUE_CONSTANT2 加载 EDX:EAX 的指令,然后是LOCK CMPXCHG8B(0xF0、0x0F、0xC7 等——请参阅指令编码详细信息)。

关于visual-c++ - 如何将汇编标记放入 C++ 代码 (x64),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9925213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com