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

    教材学习内容总结

    部分知识点

    •ISA:定义了处理器状态,指令的格式,每条指令对状态的影响。

      gcc -O1 -S text.c

    •寻址方式经历的三代

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

    2 8086的分段模式

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

    寄存器

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

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

    •整数寄存器

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

    •条码寄存器

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

    •浮点寄存器

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

    •8位寄存器有: AH、AL、BH、BL、CH、CL、DH和DL等;

    •16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;

    •32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。

    内存中的变量存储的是其偏移地址

    •esi edi可以用来操纵数组,esp ebp用来操纵栈帧。

    寻址方式

    操作数:立即数($9)、寄存器(%eax)、存储器

    有效地址=立即数+基址寄存器的值+变址寄存器的值*比例因子

    CMP和SUB

    CMP是不会改变源操作数的减法,只是做比较之后改变标志位。

    SUB是会改变源操作数的减法。

    •64位机器上想要得到32代码:gcc -m32 -S xxx.c

    程序编码

    • 编译:gcc -01 -o p p1.c,-01:表示使用第一级优化。通常提高优化级别会使最终程序运行得更快,但是编译时间可能会变长,用调试工具对代码进行调试会更困难。(实际中,第二级优化-02被认为是较好的选择)
    • 两种抽象:
      • 指令集结构ISA:是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。
      • 机器级程序使用的存储器地址是虚拟地址,看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。
    • 一些通常对C语言程序员隐藏的机器代码在IA32中是可见的:
      • 程序计数器(在IA32中,通常称为“PC”,用%eip表示)指示将要执行的下一条指令在存储器中的地址。
      • 整数寄存器:包含8个命名的位置,分别存储32位的数值,这些寄存器可以存储地址(对应C语言的指针)或整数数据,有的寄存器被用来记录某些重要的程序状态,其他的寄存器用来保存临时数据,例如过程的局部变量和函数的返回值。
      • 条码寄存器:保存着最近执行的算术或逻辑指令的状态信息,他们用来实现控制或数据流中的条件变化。
      • 浮点寄存器:一组浮点寄存器存放浮点数据
      • 一条机器指令只执行一个非常基本的操作
      • 本周代码托管:
      • https://git.oschina.net/69M/LH20145309_Linux.git
  • 相关阅读:
    n皇后问题
    几种NFS系统对比,选型理由
    MooseFs集群故障恢复运维
    TB级NFS数据平滑迁移方案设计与实现
    NFS挂载各机显示用户不同的问题
    TB级NFS数据平滑迁移系列
    mysql备份和恢复
    Java基础赋值符号
    java 流程控制基础之if else
    Java基础赋值符号
  • 原文地址:https://www.cnblogs.com/zym0728/p/5967914.html
Copyright © 2011-2022 走看看