根据反汇编程序,有一些函数看起来像
sub esp, 0x20
push some registers
do some stuffs
pop the registers
add esp, 0x20
ret
起初我以为是为局部变量分配内存,但我意识到其他功能看起来就像只是
push some registers
do stuffs
pop some registers
ret
不会手动减去esp。
我做了一些搜索,显然push命令已经自动减去esp的值,推送值的大小;如果是这种情况,那么为什么在第一个函数中我们还需要在函数开头手动减去esp?或换句话说,这两个函数之间的目的究竟是什么?