linux – 了解C程序中的汇编语言_start标签
我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容:
进入时 push %ebp mov %esp,%ebp 退出时 leave ret 然后我在_start上尝试了gdb,得到了以下内容 xor %ebp,%ebp pop %esi mov %esp,%ecx and $0xfffffff0,%esp push %eax push %esp push %edx push $0x80484d0 push $0x8048470 push %ecx push %esi push $0x8048414 call 0x8048328 <__libc_start_main@plt> hlt nop nop nop nop 我无法理解这些线条以及这背后的逻辑. 有人可以提供任何指导来帮助解释_start的代码吗? 解决方法
以下是您发布的代码
assembly source的评论.
总结一下,它做了以下事情: >建立一个ebp = 0的哨兵堆栈帧,这样走遍堆栈的代码就可以轻松找到它的结尾 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |