zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155316 《信息安全系统设计基础》第5周学习总结

    教材学习内容总结

    学习梗概:

    了解C语言、汇编代码、机器代码之间的关系;

    了解X86-64的相关知识点(实现细节) 越界、溢出攻击等问题

    GDB调试技巧

    1. 程序编码
    2. 数据格式
    3. 访问信息
    4. 算术和逻辑操作
    5. 控制
    6. 过程
    7. 数组的分配和访问
    8. 异质的数据结构
    9. 浮点代码

    教材学习中的问题和解决过程

    • 问题1:在教材中有提及“后向兼容”这个名词,按字面意思上理解,这个指的是前面的东西可以向后面兼容?不太懂是什么意思,说成“前向兼容”,即后面的东西可以兼容前面的东西,是不是更容易理解一点?
    • 问题1解决方案:对“后向兼容”这个名词可以这么理解,“较早版本上编译的代码可以在较新的处理器上运行”,这样理解可以比较容易消化。

    代码调试中的问题和解决过程

    • 问题1:教材上说用编译选项-Og编译程序是在告诉编译器使用会生成符合原始C代码整体结构的及其代码的优化等级,而越高级别的代码得到的及其代码越难理解。那么不同优化等级得出的代码究竟有什么区别呢?

    • 问题1解决方案:我编译了如下代码:

    • 我分别用优化等级Og和优化等级O2进行比较,发现结果如下:

    除去上图中划红圈的地方是多出来的模块以外,在main函数里的.LFB23中,编写的代码也是有不同之处的。

    代码托管

    上周考试错题总结

    • 1.Linux中()可以列出一个可执行文件在运行时所需的共享库
    • A. nm
    • B. objdump
    • C. strip
    • D. ldd
    • 选D
    • 2.main.c 调用了静态库libmath.a中的函数,编译main.c的命令是()
    • A. gcc -static main.c ./libmath.a -o main
    • B. gcc -static main.c -L. -lmath -o main
    • C. gcc -static main.c -L. -llibmath.a -o main
    • D. gcc -static main.o ./libmath.a -o main
    • 选BD 我的答案 AB 错误原因:没看清.o 和 .c
    • 3.Linux中,目标文件XXX.o中的代码和数据节是从地址0开始的。
    • A. 正确
    • B. 错误
    • 选A 我的答案 B 错误原因:错认为ELF头不属于节

    结对及互评

    本周结对学习情况

    - [20155308](博客链接)
    

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60
    第四周 300/1300 2/9 30/90
    • 计划学习时间:5小时

    • 实际学习时间:5小时

    参考资料

  • 相关阅读:
    Qt的网络通信(以一对一聊天室为例)
    C/C++中的const ,static
    Qt的认识与相关问题的解决
    Qt的简单介绍,发展和由来
    STL模板的基础与了解
    malloc与new,C++中的指针与引用,C++struct与class的区别
    Qt的常用控件及控件的使用
    Qt的环境与工具、信号与槽
    学习Qt前你需要知道的
    模板与STL小结--vector、list、map等各类容器
  • 原文地址:https://www.cnblogs.com/protectmonarch/p/7712041.html
Copyright © 2011-2022 走看看