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

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

教材学习内容总结

  • 使用命令gcc -Og -o p p1.c p2.c编译相关代码(此处以main.cadd.c为例)。

  • 使用命令gcc -Og -S mstore.c产生汇编代码

    再用gcc -Og -c mstore.c产生目标代码文件,利用反汇编器命令objump -d xx.c命令查看机器代码文件内容。

  • movabsq指令能够以任意64位立即数值作为源操作数,并且只能以寄存器作为目的。

  • MOV,MOVZ,MOVS

    • MOV
    指令 效果 描述
    MOV S,D D←S 传送
    movb 传送字节
    movw 传送字
    movl 传送双字
    movq 传送四字
    movabsq I,R R←I 传送绝对的四字
    • MOVZ
    指令 效果 描述
    MOVZ S,R R←零扩展(S) 以零扩展进行传送
    movzbw 将做了零扩展的字节传送到字
    movzbl 将做了零扩展的字节传送到双字
    movzwl 将做了零扩展的字传送到字
    movzbq 将做了零扩展的字节传送到四字
    movzwq 将做了零扩展的字传送到四字
    • MOV
    指令 效果 描述
    MOVS S,R R←符号扩展(S) 传送符号扩展的字节
    movsbw 将做了符号扩展的字节传送到字
    movsbl 将做了符号扩展的字节传送到双字
    movswl 将做了符号扩展的字送到双字
    movsbq 将做了符号扩展的字节传送到四字
    movswq 将做了符号扩展的字传送到四字
    movslq 将做了符号扩展的双字传送到四字
    cltq 把%eax符号扩展到%rax

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

  • 问题1:gcc -Og优化原理是什么?该过程产生了什么?是否能够查看优化过程?

  • 问题1解决方案:

    -Og

    该标识会精心挑选部分与-g选项不冲突的优化选项,当然就能提供合理的优化水平,同时产生较好的可调试信息和对语言标准的遵循程度。

    优化过程同样产生可执行代码文件(例中的p文件),不具体显示优化过程。

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

代码托管

上周考试错题总结

  • 错题1:
    针对以上代码:gcc -c *.c 可以得到m.o,swap.o两个模块,哪些符号会出现在swap.o模块的.symtab条目中()
    A. buf
    B. temp
    C. swap
    D. buffp0

  • 理解情况:temp是局部变量,不出现在符号表中。

  • 错题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

  • 理解情况:-lxxx用于链接生成的库,而生成的库的文件名必须形如 libxxx.a。

  • 错题3:gcc hello.c产生的a.out属于()
    A.可重定位目标文件

    B.可执行目标文件

    C.共享目标文件

    D.目标模块或目标文件

  • 理解情况:gcc -c生成可重定位目标文件

  • 错题4:无论什么样的操作系统,ISA或者目标文件格式,基本的链接概念是通用的。

    A.正确 B.错误

结对及互评

本周结对学习情况

  • 20155321
  • 结对学习内容
    - 第3章 程序的机器级表示
    - 实验一 开发环境的熟悉

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 10/10
第二周 63/63 1/2 8/18
第三周 31/94 1/3 18/36
第四周 265/329 1/4 17/53
第五周 106/435 2/6 18/71

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:15小时

  • 实际学习时间:18小时

参考资料

原文地址:https://www.cnblogs.com/ashin-kl/p/7710037.html