• 2017-2018-1 20155315 《信息安全系统设计基础》第5周学习总结


    2017-2018-1 20155315 《信息安全系统设计基础》第5周学习总结

    教材学习内容总结

    本周我学习的是第3章,程序的机器级表示。

    Intel处理器

    • IA32是x86-64的32位前身。
    • 8086是16位微处理器。
    • 从i386开始,体系结构扩展到32位。

    机器编程

    • ISA:指令集体系结构或指令集架构
    • 查看x86-64的机器代码:
      • 程序计数器:给出将要执行的下一条指令在内存中的地址
      • 整数寄存器:包含16个命名的位置,分别存储64位的值。
      • 条件码寄存器:保存最近执行的算术或逻辑指令的状态信息。用来实现条件语句。
      • 一组向量寄存器可以存放一个或多个整数或浮点数值。

    反汇编特性

    • 常用指令以及操作数较少的指令所需的字节数少。
    • 设计指令:从给定的位置开始,可以将字节唯一地解码成机器指令。pushq %rbx是以字节值53开头的。
    • 反汇编器使用的指令命名规则与GCC生成的汇编代码有所不同。

    数据格式

    GCC生成的汇编代码都带有一个字符后缀:

    • movb:传送字节
    • movw:传送字
    • movl:传送双字(后缀‘l’也用来表示4字节整数和8字节双精度浮点数
    • movq:传送四字

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

    这次学习中,很多知识都只是一知半解,暂时提的是表面的问题。

    • 问题1:反汇编器使用的指令命名规则与GCC生成的汇编代码有什么不同?
    • 问题1解决方案:
      • 两边列出的地址不同,链接器将这段代码的地址移到了一段不同的地址范围中。
      • 反汇编器中省略了很多指令的'q',这些后缀是大小指示符。

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

    • 问题1:将p114代码编译之后,用cat命令查看汇编代码的文件,显示乱码。
    • 问题1解决方案:用od -tx1 mstore.o查看

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    • 3.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
    • 6.多选:
      针对以上代码:gcc -c *.c 可以得到m.o,swap.o两个模块,哪些符号会出现在swap.o模块的.symtab条目中()
      • A .buf
      • B .temp
      • C .swap
      • D .buffp0
      • 解析:temp是局部变量,不出现在符号表中。
    • 11.gcc hello.c产生的a.out属于()
      • A .可重定位目标文件
      • B .可执行目标文件
      • C .共享目标文件
      • D .目标模块或目标文件
    • 17.链接器的重要性在于可以支持()
      • A .静态库
      • B .动态库
      • C .分离编译
      • D .调试

    结对及互评

    暂无

    其他(感悟、思考等,可选)

    这一章的内容是有关汇编的,看了书之后发现自己对汇编语言已经很陌生了,学习效率特别低。这一章我觉得知识点特别多,还要多敲代码能增进自己的理解。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 5/5 1/1 25/25
    第二周 236/241 3/4 30/55
    第三周 169/410 2/6 30/85
    • 计划学习时间:20小时

    • 实际学习时间:30小时

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    auto_ptr的VC版本源码剖析
    在VS2017中配置VLD(Visual Leak Detector)内存泄漏检测工具
    QT+VS中使用qDebug()打印调试信息无法显示
    QT+VS后中文字符乱码问题
    外观模式
    装饰模式(包装模式)
    组合模式
    桥接模式
    适配器模式
    单例模式
  • 原文地址:https://www.cnblogs.com/-zyl/p/7709717.html
Copyright © 2020-2023  润新知