汇编语言问题!
请问基址指针BP一般用来干什么的?我看书里面说它是表示堆栈段中的基地址,但SS不是已经表示堆栈段的基地址了吗?这就是多余了吗?请大哥们帮帮我解释一下! 我是小弟,在学汇编还没入门,不知下面的假释对你有用吗?EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:
push ebp;保存当前ebp
movebp,esp;EBP设为当前堆栈指针
sub esp, xxx;预留xxx字节给函数临时变量.
...
这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.
SS(STACK SEGMENT)指定当前堆栈段. ESP 则指出该段中当前的堆栈顶. 所有push/pop 系列指令都只对SS:ESP指出的地址进行操作. 原帖由 wzwgp 于 2006-1-15 00:49 发表
我是小弟,在学汇编还没入门,不知下面的假释对你有用吗?
EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一 ...
:D 解释得不错。 我是没基础的人 根本就没办法理解!~ 我学过单片机,但还是看不太懂!!
页:
[1]