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
  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/zym0728/p/5967914.html
Copyright © 2011-2022 走看看