码迷,mamicode.com
首页 > 其他好文 > 详细

第八周课上测试ch03

时间:2018-10-27 01:30:20      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:运行   恢复   log   gdb调试   call   结构   跟踪   inf   内存   

测试-1-ch03

  1. 任务详情
  • 通过输入gcc -S -o main.s main.c,将下面c程序“week04学号.c”编译成汇编代码
    int g(int x){ return x+3; } int f(int x){ int i = 学号后两位; return g(x)+i; } int main(void){ return f(8)+1; }
  • 删除汇编代码中 . 开头的代码,提交f函数的汇编代码截图,图中用矩形标出函数栈帧的形成和销毁的代码
  1. 知识点
  1. 测试截图
    技术分享图片

测试-2-ch03

  1. 任务详情
  • 通过输入gcc -S -o main.s main.c,将下面c程序“week04学号.c”编译成汇编代码
    int g(int x){ return x+3; } int f(int x){ int i = 学号后两位; return g(x)+i; } int main(void){ return f(8)+1; }
  • 参考http://www.cnblogs.com/lxm20145215----/p/5982554.html,使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况。提交照片,要有学号信息。
  1. 知识点
  • 参考GDB调试汇编堆栈过程分析,使用gcc - g XX.c -o XX -m32指令在64位的机器上产生32位汇编
  • 使用gdb XX指令进入gdb调试器
  • gdb相关指令
    • r:运行
    • b n:在n行设置断点
    • i r:查看各寄存器的值
    • disassemble:获取汇编代码
  1. 过程
    • 查看f函数的汇编代码、
      技术分享图片
    • 入栈
      技术分享图片
    • 将上一个函数的基址入栈,从当前%esp开始作为新基址
      技术分享图片
    • 为传参做准备
      技术分享图片
    • 实参入栈
      技术分享图片
    • 计算short+int
      技术分享图片
    • pop %ebp指令将栈顶弹到%ebp中,同时%esp增加4字节
      技术分享图片
    • ret指令将栈顶弹给%eip
      技术分享图片
    • 用leave指令恢复
      技术分享图片
  2. 变化情况
指令 eip ebp esp eax
push %ebp 0x80483e6 0xbfffef58 0xbfffef50 0xb7fbcdbc 0x8048411 0x8 0x0
mov %esp,%ebp 0x80483e7 0xbfffef58 0xbfffef4c 0xb7fbcdbc 0xbfffef58 0x8048411 0x8 0x0
sub $0x10,%esp 0x80483e9 0xbfffef4c 0xbfffef4c 0xb7fbcdbc 0xbfffef58 0x8048411 0x8 0x0
movl $0xc,-0x4(%ebp) 0x80483ec 0xbfffef4c 0xbfffef3c 0xb7fbcdbc 0x8048441 0xb7fbb3dc 0x80481ec 0x8048429
pushl 0x8(%ebp) 0x80483f3 0xbfffef4c 0xbfffef3c 0xb7fbcdbc 0x8048441 0xb7fbb3dc 0x80481ec 0x1e
call 0x80483db 0x80483f6 0xbfffef4c 0xbfffef38 0xb7fbcdbc 0x8 0x8048441 0xb7fbb3dc 0x80481ec
add $0x4,%esp 0x80483fb 0xbfffef4c 0xbfffef38 0xb 11 0x8 0x8048441 0xb7fbb3dc 0x80481ec
mov %eax,%edx 0x80483fe 0xbfffef4c 0xbfffef3c 0xb 11 0x8048441 0xb7fbb3dc 0x80481ec 0x1e
mov -0x4(%ebp),%eax 0x8048400 0xbfffef4c 0xbfffef3c 0xb 11 0x8048441 0xb7fbb3dc 0x80481ec 0x1e
add %edx,%eax 0x8048403 0xbfffef4c 0xbfffef3c 0x1e 30 0x8048441 0xb7fbb3dc 0x80481ec 0x1e
leave 0x8048406 0xbfffef58 0xbfffef50 0x29 41 0x8048411 0x8 0x0
ret 0x8048417 0xbfffef58 0xbfffef58 0x2a 42 0x0

第八周课上测试ch03

标签:运行   恢复   log   gdb调试   call   结构   跟踪   inf   内存   

原文地址:https://www.cnblogs.com/besty-zyx/p/9859360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!