c++ - 如何在 x64 Visual C++ 中执行裸函数和内联汇编程序

标签 c++ c visual-studio assembly

我正在使用裸函数和内联汇编程序代理方法调用。

__declspec(naked) void ProxyFunction()
{
    static const unsigned int addressofRealFunction = 0x0041b200;
    __asm
    {
        jmp [addressofRealFunction];
    }
}

如何将其转换为 x64?在 visual studio 中,x64 没有内联汇编器或裸函数。

Naked 删除了程序集序言和结尾。我需要它来确保堆栈帧对于调用保持等效。

你会怎么做?

最佳答案

尝试直接编译它:

void ProxyFunction()
{
    RealFunction();
}

查看编译器是否将其优化为裸跳转。可能吧。

关于c++ - 如何在 x64 Visual C++ 中执行裸函数和内联汇编程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26637755/

相关文章:

c++ - 返回迭代器的函数缺少分号错误

c++ - 一万个单位圆以上,如何画出高性能?

c - printf 和字符串存储优化

c - 在不使用 GtkDrawingArea 的 GtkBox 上使用 cairo 绘图

c++ - 与 Visual Studio 2008 一起使用需要哪个 Windows 驱动程序工具包

c++ - 使用 Visual Studio 2010 构建 Visual Studio 6 项目

C++ 基础、 vector 、析构函数

c++ - gcc中的初始化列表错误?

c - 我想了解 c 中 "printf"函数的工作原理。例如,对于下面代码中使用的打印语句,输出不同,为什么?

visual-studio - MFC 是否可以为 32 位和 64 位使用不同的应用程序名称?