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

时间:2013-11-11 14:47:05

标签: variables assembly x86 disassembly

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

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

LOCAL是什么意思?

1 个答案:

答案 0 :(得分:5)

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