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

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

    教材学习内容总结

    • X86 寻址方式经历三代:
    1、 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全
    2、 8086的分段模式
    3、 IA32的带保护模式的平坦模式
    
    • ISA(指令集体系结构)定义了处理器状态指令的格式,以及每条指令对状态的影响
    • PC(程序计数器)指示将要执行的下一条指令在存储器中的地址
    • Ubuntu中 gcc -S code.c (不带-O1) 产生的代码更接近教材中代码
    • 对于寄存器,特别是通用寄存器中的eax,ebx,ecx,edx, 32位的eax,16位的ax,8位的ah,al都是独立的
    • 有效地址的计算方式 Imm(Eb,Ei,s) = Imm + R[Eb] + R[Ei]*s
    • MOV相当于C语言的赋值”=“,注意ATT格式中的方向, 另外注意不能从内存地址直接MOV到另一个内存地址,要用寄存器中转一下
    • CMP指令根据他们的两个操作数之差来设置条件码。除了只设置条件码而不更新目标寄存器之外,CMP与SUB行为是一样的
    • call指令的效果是将返回地址入栈,并跳转到被调用过程的起始处。返回地址是在程序中紧跟在call后面的那条指令的地址

    作业

    1.使用gcc –S –o main.s main.c -m32

    int g(int x)
    {
      return x + 3;
    }
    
    int f(int x)
    {
      return g(x);
    }
    
    int main(void)
    {
      return f(8) + 1;
    }
    
    a.s文件

    a.s文件去点

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

    • 问题1:作业编译出错
    • 问题1解决方案:因为我在C文件中加入了printf()语句,所以之后又加入了头文件
      #include <stdio.h>至于为什么加入头文件语句后反汇编会出现错误,这个还没有查到还需要继续学习。

    代码托管

    结对及互评

    本周结对学习情况

    - 结对学习内容
    
        - 一起做实验,一起写实验报告(每次写结对学习内容感觉像在汇报谈恋爱的情况)
    

    学习进度条

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 1/1 6/6
    第三周 156/388 2/3 15/21 这周除课堂实践外,大多数都是知识性的学习内容,代码量确实太少从下周起就要抓紧了
    第三周 156/388 3/6 15/36 每天100行好难啊,不过感觉找到了学习的一些动力。在调试代码上花的时间太多,都要没时间看书了,还要继续改进
    • 计划学习时间:15小时

    • 实际学习时间:15小时

    • 改进情况:

    对于很多根本不会的东西现在敢于下手了,虽然不是吃螃蟹的第一个人,也要做吃螃蟹的人!

    参考资料

  • 相关阅读:
    抓老鼠啊~亏了还是赚了?
    币值转换
    打印沙漏
    秋季学习总结
    对我影响最大的三位老师
    自我介绍
    第三周作业
    第二周作业
    求最大值及其下标
    PTA编程总结3
  • 原文地址:https://www.cnblogs.com/xhwh/p/7711946.html
Copyright © 2011-2022 走看看