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

    20145318 《信息安全系统设计基础》第5周学习总结

    教材学习内容总结

    寻址方式历史

    • DOS时代的平坦模式:不区分用户空间和内核空间,很不安全。

    • 8086的分段模式

    • IA32的带保护模式的平坦模式

    程序编码

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

    • 两种抽象:

      • 指令集结构ISA:是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。

      • 机器级程序使用的存储器地址是虚拟地址,看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。

    机器级代码

    • 指令集体系结构(ISA):机器级程序的格式和行为,定义了处理器状态、指令的格式以及每条指令对状态的影响

    • 虚拟地址:使用的存储器地址

    • 程序计数器(PC):指示下一条指令在存储器中的地址

    • 寄存器文件:8个命名的位置,分别存储32位的值,可以存储地址或整数数据

    • 条件码寄存器:实现控制或数据流中的条件变化

    • 浮点寄存器

    栈帧结构

    • IA32用程序栈支持过程调用

    • 机器用栈来传递过程参数、存储返回信息、保存寄存器用于以后恢复

    • 栈帧:为单个过程分配的栈

    • %ebp为帧指针、%esp为栈指针,栈指针可以移动,大多数信息访问相对于帧指针

    访问信息

    • 一个IA32的中央处理器单元包含一组8个存储32位数值的寄存器。所有八个寄存器都可以作为16位(字)或32位(双字)来访问:

      • %esi,%edi可以用来操纵数组

      • %esp,%ebp用来操纵栈帧

      • 可以独立访问前四个寄存器的两个低位字节(后向兼容)

      • 32位的%eax,16位的%ax,8位的%ah,%al都是独立的

    操作数三种类型:

    • 立即数,即常数值

    • 寄存器,表示某个寄存器的内容

    • 存储器,根据计算出来的地址(有效地址)访问某个存储器位置

    条件码

    • CF进位标志,检查无符号数的溢出

    • ZF零标志

    • SF符号标志

    • OF溢出标志

    • 除了只设置条件码而不更新目标寄存器外,CMP与SUB行为相同,TEST与ADD行为相同

    访问条件码

    • 条件码使用方法:

      • 根据条件码的组合,设置字节为0或1
      • 条件跳转到程序其他部分
      • 条件传送数据
    • SET指令的目的操作数是8个单字节寄存器元素之一或是存储一个字节的存储器位置

    问题和解决过程

    • case的序号对应跳转表中的序号,从0开始。

    本周代码托管截图

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

    • 这一周是汇编语言,之前学过感觉比较熟悉。汇编是最接近计算机硬件的语言,了解后对掌握计算机程序运行等方面有提高。
    • 也该多花时间学习了,学习带来的充实感是非常好的。

    参考资料

  • 相关阅读:
    全局变量 static变量
    【Qt学习笔记】04_单选复选框
    【Qt学习笔记】03_特殊标签
    【Qt学习笔记】02_颜色对话框
    【Qt学习笔记】01_模态和非模态
    ThinkPad_E570 拆机
    VMware 共享文件夹
    【安装Flutter遇到的问题】 Android license status unknown
    VLC 外挂字幕乱码
    IE(IE6/IE7/IE8)支持HTML5标签--20150216
  • 原文地址:https://www.cnblogs.com/zy1111/p/5967771.html
Copyright © 2011-2022 走看看