测试-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的更多相关文章

  1. 20165223《信息安全系统设计基础》第九周学习总结 & 第八周课上测试

    目录 [第九周学习总结] 教材内容总结 [第八周课上测试] (一)求命令行传入整数参数的和 (二)练习Y86-64模拟器汇编 (三)基于socket实现daytime(13)服务器和客户端 参考资料 ...

  2. 20165305 苏振龙《Java程序设计》第八周课上测试补做

    1. 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql,提交导入成功截图 2. ...

  3. 第六周课上测试-1-ch02

    第六周课上测试-1-ch02 1. 要求: 1.参考附图代码,编写一个程序 "week0601学号.c",判断一下你的电脑是大端还是小端. 2. 提交运行结果"学号XXX ...

  4. 第六周课上测试-3-ch02补充作业

    实验要求: 编写一个程序 "week0603学号.c",运行下面代码: short int v = -学号后四位 unsigned short uv = (unsigned sho ...

  5. 2018-2019-1 20165330 《信息安全系统设计基础》第六周课上测试ch02&课下作业

    课上测试 测试-3-ch02 任务详情 编写一个程序 "week0203学号.c",运行下面代码: 1 short int v = -学号后四位 2 unsigned short ...

  6. 第八周课上额外项目:pwd的实现

    项目要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 并且上交博客链接. 实验步骤 我首先不懂pwd到底是个 ...

  7. 20162328蔡文琛 大二 十二周课上测试 hash

  8. 20155325 2017-2018 1 课上测试、课下作业、实验——码云&博客链接汇总 《信息安全系统设计基础》

    第二周-课上 码云 https://gitee.com/bestiisjava2017/XinXiAnQuanXiTongSheJiJiChu20155325thl/tree/master/0927 ...

  9. # 第五周课下测试(ch03)补交

    第五周课下测试(ch03)补交 1.( 多选题 | 1 分) 有关gdb调试汇编,下面说法正确的是() A . 可以用disas反汇编当前函数 B . 以16进制形式打印%rax中内容的命令是 pri ...

随机推荐

  1. DB2中如何取得随机数

    转自:http://blog.csdn.net/jionghan3855/article/details/2246738 在DB2数据库自定义产生指定位数的随机数函数. DB2产生随机数的函数:RAN ...

  2. makefile之strip函数

    #$(strip <string> ) #名称:去空格函数--strip. #功能:去掉<string>字串中开头和结尾的空字符,并将中间的多个连续空字符(如果有的话)合并为一 ...

  3. 总结iOS9中的新的方法

    iOS平台在快速的发展,各种接口正在不断的更新.随着iOS9的发布,又有一批老方法不推荐使用了,你若调用这些方法,运行的结果是没有问题的,但是会出现警告“***is deprecated :first ...

  4. JDK默认使用的垃圾回收器

    查看方法java -XX:+PrintCommandLineFlags -version 引用<深入理解Java虚拟机:JVM高级特性与最佳实践>的介绍: 所以,jdk8环境下,默认使用 ...

  5. 跟着百度学PHP[8]-setcookie的其他参数学习

    setcookie(name,value,time,path,domain,secure) 第四个参数是cookie的有效路径.顾名思义就是在那个路径下是有效的.当然了其子目录下也是有效的.比如 /h ...

  6. love2d教程30--文件系统

    在游戏里少不了文件操作,在love2d里我们可以直接用lua自带的io函数,如果不熟悉可以先读一下我的lua文件读写. 相对lua,love2d提供了更多的函数, 方便我们操作文件.不过可能处于安全考 ...

  7. Redis学习笔记——数据类型及操作

    数据操作 redis是key-value的数据,所以每个数据都是一个键值对 键的类型是字符串 值的类型分为五种: 字符串string 哈希hash 列表list 集合set 有序集合zset 数据操作 ...

  8. 数据库 Navicat_Premium_11.0.10 破解版下载安装

    下载地址:http://www.liangchan.net/soft/download.asp?softid=4785&downid=8&id=4804 破解说明:安装之后不要立即启动 ...

  9. 010杰信-创建购销合同Excel报表系列-3-新增合同货物:这里涉及到子表的新增(合同货物表是购销合同表的子表)

    效果说明: 前面分析过购销合同的Excel报表需要四张表,这篇讲的是合同货物表. 这个合同货物表是购销合同的子表,是一个购销合同有多个合同货物的关系.在合同货物表中有购销合同的主键作为外键.所以这张表 ...

  10. imx6 android SD卡启动

    工作中需要将imx6的android系统从SD卡启动,所以就分析了MfgTool中的脚本,分析android的分区情况,并尝试自己操作,竟然成功了,记录于此. 参考文档 http://www.kanc ...