繁体   English   中英

ASM 在 c++ 项目中......这个小 asm 代码将如何在 c++ 中

[英]ASM In c++ project …How this little asm code will be in c++

你好,我找到了一个 asm 代码......它集成在 c++ 项目中

template <class T>
T returned; 

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

所以我不知道 asm 很难理解这段代码的含义......任何人都可以在 c++ 中完全转换这个 ASM 代码并在此处发布:) Ttanks...

看起来它正在执行放置在缓冲区中的代码并返回 EAX 寄存器的内容。 你可以试试这个:

typedef T (*pfn)();

returned = ((pfn) buffer)();

汇编代码本质上是将 tem 视为 function 指针并调用它。 然后将退货放入退货中。

mov eax, tem;

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

call eax

eax的内容用于进行 function 调用。 eax保存的地址开始的代码将被执行。 function调用返回后返回值会在寄存器eax

mov returned, eax

eax中的返回值被转移到一个returned的变量中

这基本上是代码所做的。 你应该看一下call指令,以了解它是如何工作的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM