gpt4 book ai didi

c++ - 为什么 assembly 对我来说似乎不一致?

转载 作者:行者123 更新时间:2023-11-28 01:10:01 24 4
gpt4 key购买 nike

从 Visual Studio 转储:

    CheckPointer(pReceivePin,E_POINTER);
017D616D cmp dword ptr [ebp+0Ch],0
017D6171 jne CBasePin::Connect+4Dh (17D617Dh)
017D6173 mov eax,80004003h
017D6178 jmp CBasePin::Connect+1A7h (17D62D7h)

但实际定义是:

#define CheckPointer(p,ret) {if((p)==NULL) return (ret);}

虽然我的汇编不是很好,但我看不出源代码和汇编之间的关系。

最佳答案

您遗漏的内容已经够多了,很难确定,但可以整理的部分看起来很合理。 NULL == 0,所以:

017D616D  cmp         dword ptr [ebp+0Ch],0               ; if [ebp+0ch] == 0
017D6171 jne CBasePin::Connect+4Dh (17D617Dh) ; goto 172617dh
017D6173 mov eax,80004003h ; else load 'ret'
017D6178 jmp CBasePin::Connect+1A7h (17D62D7h) ; and return it.

明显的问题是您没有向我们展示 17D617Dh 或 17D62D7h 中的内容,因此我们无法真正猜测这些值真正做了什么。

关于c++ - 为什么 assembly 对我来说似乎不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3915269/

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