本人小菜,有一个简单c程序,转成汇编后有一句不懂,求大大解释下,x86。


看不懂的是汇编的第28行,我知道它的目的是为了传递fun的参数,但是%esp是保存的栈顶指针,它在这里向里面写数据了,却没有加%esp的值,那么下次执行push的时候不就会覆盖这个值了么?本人很菜,求不喷啊。。
汇编
------解决方案--------------------
按照堆栈的特性,手工压入数据的话,应该是先减 esp 然后再将参数存在 [esp] 吧,而不是加 esp 的值;所以,看 25 行,esp 减了 $20 ,即是为三个局部变量 a,b,c 的空间,也有这个参数所需要的空间。
看上面的 11 行,那个象是 3 的应该是 8 吧?你着截图是自己拼接过的?如果是 3 的话,就很费解了。
------解决方案--------------------
涨知识