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 表示堆栈上的临时变量。 此示例执行以下步骤:

  1. 将寄存器 ebp 内容移动到 T0

  2. 4 添加到 T0 中的值以生成地址,从该地址获取值,然后将值存储在寄存器 eip 中。

  3. 从存储在 T0 中的地址获取值,然后将该值存储在寄存器 ebp 中。

  4. 8 添加到 T0 中的值,然后将该值存储在寄存器 esp 中。

    请注意,程序字符串特定于 CPU 和为由当前堆栈帧表示的函数设置的调用约定。

另请参阅