zoukankan      html  css  js  c++  java
  • 2.3.1测试

    2.3.1测试

    作者:20191322wyl

    本次实验在OpenEuler系统进行,安装教程参考我的博客

    任务详情

    1. 推荐在OpenEuler系统中实现
    2. 编辑并运行2.3.1中的代码,要求在不修改t2.c 和 t1.c中main函数中的代码的情况下,程序运行结果是你的后四位学号。提交代码和运行结果截图
    3. 网上学习objdump命令,提交不少于5篇博客链接和微信读书上的图书链接,并给出你认为最好的讲解资源的链接或图书名及章节
    4. 用objdump分析第1步中的可执行文件和目标文件,提交你的分析截图以及如何和教材讲解内容对应的,比如obj文件的文件头,代码段,数据段等,可执行文件如何链接mysum的

    代码实现

    1322 - 1 - 2 = 1319

    所以只用把g的值改为1319即可

    objdump命令学习

    博客1

    博客2

    博客3

    博客4

    博客5

    我认为最好的一篇博客是第5篇,排版工整,讲解清晰,并且提供了一个附带源代码的程序做演示,让人一目了然。

    objdump命令实践

    实践

    1. 首先使用objdimp -f a.out显示文件头信息

    可以看到,在Linux系统中默认的可执行文件格式为ELF,并且程序的起始地址不是0x00。

    1. 使用objdump -h a.out查看a.out文件的各个section的头部摘要信息,可以看到每节的大小

      !

    2. 使用objdump -S a.out 反汇编源代码

      发现了.init段和.plt等其他段,在书上没有发现对应内容

      百度找到了答案:

      • .init段:程序初始化段,动态库的构建函数
      • .plt段:动态库链接的跳转表
    3. 根据命令objdump -t a.out查看a.out符号表

    4. objdump -f t1.o查看目标文件的文件头

      发现.o文件起始地址是0x0,但是ELF文件起始地址不是

    5. 使用`objdump -h t1.o查看a.out文件的各个section的头部摘要信息,可以看到每节的大小

    6. objdump -S t1.o反汇编目标文件

    7. 根据命令objdump -t t1.o查看t1.o符号表

    执行文件如何链接mysum

    使用callq调用

  • 相关阅读:
    SpringBoot实现原理
    常见Http状态码大全
    forward(转发)和redirect(重定向)有什么区别
    1094. Car Pooling (M)
    0980. Unique Paths III (H)
    1291. Sequential Digits (M)
    0121. Best Time to Buy and Sell Stock (E)
    1041. Robot Bounded In Circle (M)
    0421. Maximum XOR of Two Numbers in an Array (M)
    0216. Combination Sum III (M)
  • 原文地址:https://www.cnblogs.com/BillGreen/p/15484942.html
Copyright © 2011-2022 走看看