80483a4: 8d 4c 24 04 lea 0x4(%esp),%ecx /*这是原esp的有效地址即为偏移地址esp为了使esp入栈,因为没有指令可以让esp直接入栈。入栈出栈,esp只是辅助操作的*/
80483a8: 83 e4 f0 and $0xfffffff0,%esp
80483ab: ff 71 fc pushl 0xfffffffc(%ecx) /*出入ecx之后就是前一个esp的偏移值,那么- 4 就是esp的值*/
80483ae: 55 push %ebp
80483af: 89 e5 mov %esp,%ebp
80483b1: 51 push %ecx
80483b2: 83 ec 24 sub $0x24,%esp
80483b5: c7 45 f4 02 00 00 00 movl $0x2,0xfffffff4(%ebp)
80483bc: 8b 45 f4 mov 0xfffffff4(%ebp),%eax
80483bf: 0f b6 80 c3 84 04 08 movzbl 0x80484c3(%eax),%eax
80483c6: 0f be c0 movsbl %al,%eax
80483c9: 89 45 f8 mov %eax,0xfffffff8(%ebp)
80483cc: 8b 45 f8 mov 0xfffffff8(%ebp),%eax
80483cf: 89 44 24 04 mov %eax,0x4(%esp)
80483d3: c7 04 24 c0 84 04 08 movl $0x80484c0,(%esp)
80483da: e8 d9 fe ff ff call 80482b8
80483df: 83 c4 24 add $0x24,%esp
80483e2: 59 pop %ecx
80483e3: 5d pop %ebp
80483e4: 8d 61 fc lea 0xfffffffc(%ecx),%esp
总结:这里我认为pushl可能不用也行吧。如果没有pushl仍然可以用ecx来恢复原esp的啊。