• 信息安全系统设计基础第四周学习总结


    $3.1x86的发展历史

       1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全
       2 8086的分段模式
       3 IA32的带保护模式的平坦模式

    $3.2程序编码
      1、机器级代码:机器级编译的两种抽象:指令集体系结构和存储地址是虚拟地址。一条指令只执行一个非常基本的操作。
      2、关于格式的注解:所有以“.”开头的行都是知道汇编器和链接器的命令
           gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用objdump -d xxx 反汇编; 注意函数前两条和后两条汇编代码,所有函数都有,建立函         数调用栈帧,应该理解、熟记。 
           注意: 64位机器上想要得到32代码:gcc -m32 -S xxx.c MAC OS中没有objdump, 有个基本等价的命令otool  Ubuntu中 gcc -S code.c (不带-O1) 产生的代码更接近教材中代码(删除"."开头的语句)
           
    $3.3数据格式
      1、字表示16位数据类型。浮点数有三种形式:单精度,双精度,扩展精度。
      2、传送指令的三个变种:movb(传送字节)movw(传送字)movl(传送双字)
    $3.4访问信息
      1、操作数指示符:执行一个操作中要引用的源数据值已经防止结果的目标位置。
            操作数分为三类:立即数,寄存器和存储器。(汇编学过的三种寻址方式)
            
      2、数据传送指令:MOV:源操作数复制到目的操作数。两个操作数不能都指向寄存器
            栈是一个数据结构,可以添加或删除值,遵循后进先出的原则。
            push压入栈,pop删除数据。可以插入和删除元素的一端称为栈顶。栈顶元素的地址是最低的
            
     
            
    $3.5算术和逻辑操作
      1、加载有效地址:从存储器读数据到寄存器。
            
      2、一元操作数和二元操作数:
           一元操作数,既是源又是目的。二元操作数:第二个数既是源又是目的。、
      3、移位操作:先给出移位量接着给出移位的数值。移位量可以是立即数,也可以是放在单字解寄存器元素中。
      4、以上指令既可以用于无符号数运算也可以用于补码运算。
      5、特殊的算术操作:
            
    $3.6控制
      1、要求有条件的执行根据数据测试的结果来决定操作执行的顺序。
      2、条件码:CF 进位标志。ZF 零标志。SF 符号标志。OF 溢出标志。
           
            使用方法:
            ①:根据条件码的某种组合将字节设置为1或0
            ②:条件跳转到程序的某个其他部分
            ③:有条件的传送数据
            
      3、跳转指令及其编码:jump无条件跳转
           直接跳转:跳转目标作为指令的一部分编码,给出一个标号作为跳转目标
           间接跳转:跳转目标是从寄存器或存储器读出的,‘*’跟一个操作数指示符。
           其他有条件指令可以参考书上128页
      4、翻译条件分支
          将条件表达式和语句从C语言翻译成机器代码最常用的方法结合有条件和无条件跳转
          
      5、循环
          汇编中循环可以用条件测试和跳转组合起来实现
      6、条件传送指令
         实现条件操作的传统方法是利用控制的条件转移。实际利用数据的控制转移 
         基于条件数据传送的代码比基于条件控制转移的代码性能好。
      7、switch语句
          可以根据一整个引索值进行多重分支。提高代码可读性
          Switch语句是多重分支的典型,而且使用的是跳转表这种数据类型,是的搜索的更快更高效。
         所以这里的关键就是要领会使用跳转     表是一种非常有效的实现多重分支的方法。
    $3.7过程
       1、栈帧结构:机器用栈来传递过程参数、存储返回信息、保存寄存器用于以后恢复以及本地存储。为单个过程分配的部分栈称为栈帧
             %ebp为帧指针,%esp为栈指针
       2、转移控制:
           
            
     
     
     
  • 相关阅读:
    html页面原生video标签隐藏下载按钮
    css解决多行溢出显示省略号
    移动端轮播图vue-awesome-swiper
    日常踩坑 — 相邻元素之间的margin合并问题。
    (a ==1 && a== 2 && a==3) 有可能是 true 吗?
    如何生成SSH key及查看SSH key
    端口号被占用报错解决方法。
    基于vue开发的element-ui树形控件报错问题解决
    Win10 桌面 通知中心 无法打开
    SolidWorks 杂
  • 原文地址:https://www.cnblogs.com/javajy/p/4870192.html
Copyright © 2020-2023  润新知