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

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

    教材学习内容总结

    1. 寻址方式历史

    (1)DOS时代的平坦模式

    不区分用户空间和内核空间,很不安全

    (2)8086的分段模式

    (3)IA32的带保护模式的平坦模式

    2. 程序编码

    (1)编译

    gcc -01 -o p p1.c
    
    • 01:表示使用第一级优化。通常提高优化级别会使最终程序运行得更快,但是编译时间可能会变长,用调试工具对代码进行调试会更困难。(实际中,第二级优化-02被认为是较好的选择)

      gcc命令调用一系列程序将源代码转换成可执行代码:
      - C预处理器 扩展源代码,插入#include命令指定的文件,扩展#define声明指定的宏。(.i)
      - 编译器 产生两个源代码的汇编代码。(.s)
      - 汇编器 将汇编代码转化成二进制目标代码(.o)
      - 连接器 将两个目标代码与实现库函数的代码合并,并产生最终的可执行代码文件。

    (2)两种抽象

    计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节。对于机器级编程来说,两种抽象尤为重要:

    • 机器级程序的格式和行为,定义为 ISA :指令集体系结构。

        ISA,定义了处理器状态,指令格式,以及每条指令对状态的影响。
        处理器的硬件并发的执行许多指令,但是可以采取措施保证整体行为与ISA指定的顺序整形完全一致。
      
        解决的问题:
        	指令的编码方式(即如何编码)
        	操作数和操作结构的存放位置
        	数据的类型和大小
        	支持哪些操作
        	下一条指令的地址
      
    • 机器级程序使用的存储器地址是虚拟地址,提供的存储器模型看上去是一个非常大的字节数组。

    (3)IA32机器代码

    一些通常对C语言程序员隐藏的机器代码在IA32中是可见的:

    • 程序计数器(在IA32中,通常称为“PC”,用%eip表示)

    指示将要执行的下一条指令在存储器中的地址。

    • 整数寄存器

    包含8个命名的位置,分别存储32位的数值,这些寄存器可以存储地址(对应C语言的指针)或整数数据,有的寄存器被用来记录某些重要的程序状态,其他的寄存器用来保存临时数据,例如过程的局部变量和函数的返回值。

    • 条码寄存器

    保存着最近执行的算术或逻辑指令的状态信息,他们用来实现控制或数据流中的条件变化。

    • 浮点寄存器

    一组浮点寄存器存放浮点数据

    一条机器指令只执行一个非常基本的操作
    

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

    • 这周主要问题在实验中遇到,已在实验博客中详述。

    代码托管

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

    上周考试错题总结

    没有进行考试。

    感想

    本章的内容很多,由于自己预留的时间不太充裕导致看书时间较短,对课本上的理解不足,博客写的不充分,要好好计划好时间。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 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
    • 计划学习时间:10小时

    • 实际学习时间:6小时

  • 相关阅读:
    Python的正则表达式
    Python的异常处理
    Python的类和对象
    Python乘法口诀表
    Python的文件操作
    三层架构介绍和MVC设计模型介绍
    spring的组件使用
    IDEA使用maven搭建spring项目
    Java集合——Collection接口
    Java集合——概述
  • 原文地址:https://www.cnblogs.com/rhl20155319/p/7711371.html
Copyright © 2011-2022 走看看