Variables 为什么我的调试器显示[LOCAL.8]而不是[EBP-20]

Variables 为什么我的调试器显示[LOCAL.8]而不是[EBP-20],variables,assembly,x86,disassembly,Variables,Assembly,X86,Disassembly,我的调试器中有一行代码如下:CMP DWORD PTR SS:[LOCAL.8],0D 我或多或少了解到两个值之间存在比较,我知道本例中的LOCAL.8表示EBP-20(我知道这一点,因为双击该行会显示CMP DWORD PTR SS:[EBP-20],0D) LOCAL是什么意思?局部变量通常相对于ebp引用(在保留帧指针的标准调用约定中)。由于堆栈向下生长,局部变量存储在帧的开头下方,从常规内存的角度来看,帧的开头是“向下”的,从堆栈的角度来看,帧的开头是“向上”的。您的调试器试图通过假设来

我的调试器中有一行代码如下:
CMP DWORD PTR SS:[LOCAL.8],0D

我或多或少了解到两个值之间存在比较,我知道本例中的
LOCAL.8
表示EBP-20(我知道这一点,因为双击该行会显示
CMP DWORD PTR SS:[EBP-20],0D


LOCAL
是什么意思?

局部变量通常相对于ebp引用(在保留帧指针的标准调用约定中)。由于堆栈向下生长,局部变量存储在帧的开头下方,从常规内存的角度来看,帧的开头是“向下”的,从堆栈的角度来看,帧的开头是“向上”的。您的调试器试图通过假设来自ebp的任何2次方偏移量都是对局部变量的引用来提供帮助。点后的数字表示它是哪个局部变量,假设在32位环境中是4字节的局部变量。

可能是局部变量。这是哪个调试器?OllyDbg。我想我只是不明白为什么它不只是显示EBP-20。也许我需要学习更多关于局部变量的知识-我对汇编非常陌生。谢谢。我需要做更多的学习来完全理解这里发生的事情——但我现在对方向有了更好的想法。