Hellow我找到了一个asm代码...它集成在c ++项目中
template <class T>
T returned;
BYTE *tem = buffer;
__asm
{
mov eax, tem
call eax
mov returned, eax
}
所以我不知道asm很难理解这段代码意味着什么...... 任何人都可以完全转换这个ASM代码在c ++中发布在这里:) Ttanks ...
答案 0 :(得分:8)
看起来它正在执行放在缓冲区中的代码并返回EAX寄存器的内容。你可以试试这个:
typedef T (*pfn)();
returned = ((pfn) buffer)();
答案 1 :(得分:3)
汇编代码基本上将tem视为函数指针并调用它。然后它将返回返回。
答案 2 :(得分:3)
mov eax, tem;
tem
的内容是转移者进入处理器内部寄存器eax
call eax
eax
的内容用于进行函数调用。将执行从eax
保持的地址开始的代码。函数调用返回后,返回值将在寄存器eax
mov returned, eax
eax
中的返回值会转移到变量returned
这基本上就是代码所做的。你应该看一下call
的表现,知道它是如何运作的。