在C++项目中使用汇编语言...这段小的汇编代码在C++中应该如何实现?

4

你好,我发现了一段汇编代码...它被集成在C++项目中。

template <class T>
T returned; 

BYTE *tem = buffer;
__asm
{
    mov eax, tem
    call eax
    mov  returned, eax
}

由于我不懂汇编语言,因此很难理解这段代码的含义......有没有人能够将这段汇编代码完全转换成C++并在这里发布呢?谢谢。

3个回答

8

看起来它正在执行放置在缓冲区中的代码并返回EAX寄存器的内容。您可以尝试以下操作:

typedef T (*pfn)();

returned = ((pfn) buffer)();

1
你肯定是指 typedef T (*pfn)() 吧? - Nemo

3
汇编代码本质上将tem视为函数指针并调用它。然后将返回值放入returned中。

3
mov eax, tem;

tem的内容被传输到处理器内部寄存器eax中。

call eax
< p > < code > eax 的内容用于进行函数调用。从 < code > eax 所指向的地址开始的代码将被执行。函数调用返回后,返回值将存储在寄存器 < code > eax 中。

mov returned, eax

eax中的返回值传递给变量returned

这基本上是代码的作用。您应该查看call指令以了解它如何工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接