IDiaFrameData::get_program
检索在调用当前函数之前用于计算寄存器集的程序字符串。
语法
HRESULT get_program (
BSTR* pRetVal
);
参数
pRetVal
[out] 返回程序字符串。
返回值
如果成功,则返回 S_OK
。 如果不支持此属性,则返回 S_FALSE
。 否则,返回错误代码。
备注
程序字符串是一个宏序列,为了建立序言而进行解释。 例如,典型的堆栈帧可能使用程序字符串 "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + ="
。 格式为反向波兰语表示法,其中运算符遵循操作数。 T0
表示堆栈上的临时变量。 此示例执行以下步骤:
将寄存器
ebp
内容移动到T0
。将
4
添加到T0
中的值以生成地址,从该地址获取值,然后将值存储在寄存器eip
中。从存储在
T0
中的地址获取值,然后将该值存储在寄存器ebp
中。将
8
添加到T0
中的值,然后将该值存储在寄存器esp
中。请注意,程序字符串特定于 CPU 和为由当前堆栈帧表示的函数设置的调用约定。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈