ESP做栈基址?
反汇编一个程序,发现里面全是用ESP做的栈基地址,找调用栈都不好找。在调用的API里面是用的正常的EBP,请问这是怎么回事啊?
[解决办法]
用 esp 而不是 ebp, 这个是些高级语言的做法吧. 目的应该是为了增加 ebp 作为寄存器类变量. 由于在函数/子程用会有不少的堆栈操作, 所以, 汇编程序以 esp 来作为指针访问参数或局部变换都不是很合适, 计算当前 esp 和原始值是个比较头痛的事儿. 但这个如果由编译器来做的话, 就很简单了, 它只要设置一个变量, 遇到 push/pop 操作就对其进行调整, 最后再引用参数或局部变量时进行校正就可以了