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

    2018-2019-1 20165237 《信息安全系统设计基础》第四周学习总结

    处理器体系结构

    Y86指令集体系结构

    • 内容:定义一个指令集体系结构,包括定义各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理

    程序员可见状态:

    • Y86程序中的每条指令都会读取或修改处理器状态的某些部分。
    • Y86具体包括:8个程序寄存器、3个条件码ZFSFOF、程序计数器(PC)。
    • Y86用虚拟地址引用存储器位置。 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态。
      Y86指令

    Y86指令

    • 指令介绍:
      • halt:这个指令将会终止指令的执行
      • nop:这是一个占位指令,他不做任何事,后续为了实现流水线,它有一定的作用
      • xxmovl:这是一系列的数据传送指令,其中r代表寄存器,m代表存储器,i代表立即数.比如rrmov指令,则代表将一个寄存器的值,赋给另外一个寄存器
      • opl:操作指令,比如加法,减法等等
      • jxx:条件跳转指令,根据后面的条件进行跳转
      • cmovxx:条件传送指令,后面的xx代表的是条件.特别的是,条件传送只发生在两个寄存器之间,不会将数据传送到存储器.
      • call与ret:方法的调用和返回指令.一个将返回地址入栈,并跳到目标地址.一个将返回地址入PC,并跳到返回地址.
      • push和pop:入栈和出栈操作

    指令编码

    • 在上图的右边,是指令所占的字节数或者说编码.一般两个寄存器占用一个字节,存储器则占用四个字街,指令的编码和功能占用一个字节.因此可以看到,比如rrmovl指令,它的字长长度是2,其中第一个字节代表了指令rrmovl,第二个字节代表了两个寄存器.
    • 对于opl,jxx,cmovxx指令来说,都有一个fn标致,占用4个二进制位(半个字节).这个便是指令的功能部分,这个是由于他们的指令编码一样,但功能有所不同所造成的.比如对于opl,就有加,减,与,异或等操作,那么它们的指令编码第一个字节就分别为十六进制的60,61,62,63.
    • 对于寄存器的表示,是使用4个二进制位表示的,这是一个ID标志.所有的寄存器可以看做是一个寄存器文件,其中的ID标志就类似于它们的地址.对于一些只需要一个寄存器的指令来说,另一个寄存器标志位使用0xF表示.
    • 还有的指令需要一个字的常数,比如irmovl指令,call指令等等.这种指令,将会把常数放在最后的四个字节当中,顺序按照大端法或小端法表示(与机器和OS有关).对于call指令来说,这四个字节就是一个地址,这个地址就是绝对地址,指向了存储器当中的某一个位置,这个位置存储着代码.采用绝对地址是为了描述简单,真实当中,时采取的基于PC的相对地址.

    Y86异常

    • 对Y86来说,程序员可见的状态中就有stat状态码,它标志了程序执行的状态.Y86需要有能力根据stat去做一些处理.捕获为了简单起见,这里除了正常执行之外,都将停止指令的执行.真实当中,会有专门的异常处理程序.
    • Y86有四种不同的状态码:AOK(正常),HTL(执行halt指令),ADR(非法地址)和INS(非法指令).

    Y86程序

    • Y86指令和IA32代码的主要区别在于,它可能需要多条指令来执行一条IA32指令能完成的所有功能。
    • Y86没有伸缩寻址模式。
    • 以“.”开头的词是汇编器命令,命令.pos0告诉汇编器应该从地址0处开始产生代码。
    • 创建Y86代码的唯一工具是汇编器。
    • YIS:指令集模拟器
    • Y86和X86的区别在于,有的时候Y86需要两条指令来达到X86一条指令就可以达成的目的.
      • 比如对于X86指令中的addl $4,%ecx这样的指令,由于Y86当中的addl指令不包含立即数,所以Y86需要先将立即数存如寄存器,即使用irmovl指令,然后再使用addl来处理加法运算.
      • 总的来说,Y86就是X86的一个缩减版,他的目的就是以简单的结构来实现一个处理器,帮助我们了解处理器的设计和实现.

    一些Y86指令的详情

    • 大多数Y86指令是以一种直接的方式修改程序状态的。
    • 执行pushl和popl指令时,处理器的行为是不确定的,因为要入栈的寄存器会被同一条指令修改。通常有两种约定:
      • 压入/弹出%esp的原始值
      • 压入/弹出%esp-/+4后的值

    逻辑设计和硬件控制语言HCL

    逻辑门

    • 逻辑门是数字电路的基本计算元素,它们的输出,等于它们输入位值的某个布尔函数。
    • 逻辑门总是活动的,一旦一个门的输入变化,在短时间内,输出就会跟着变化。。

    组合电路和HCL布尔表达式

    • 组合电路:将很多的逻辑门组合成一个网,能构建计算块。
    • 多路复用:根据输入控制信号的值,从一组不同的数据信号中选出一个。
    • 构建这些网有2条限制:
      • (1)两个或多个逻辑门的输出不能连接在一起
      • (2)这个网必须是无环的。
    • HCL表达式和C语言中逻辑表达式的区别:
      • (1)组合逻辑电路的输出会持续地响应输入的变化;C表达式只有在程序执行过程中被遇到时才会求值。
      • (2)C的逻辑表达式允许参数是任意整数,0表示FLASE,其他任何值都表示TRUE;逻辑门只对位值0和1进行操作。
      • (3)C的逻辑表达式可能只被部分求值;组合逻辑没有部分求值的规则,逻辑门只是简单地响应输入的变化。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 20篇 400小时
    第一周 61/61 1/1 10/10 了解vim,gcc,gdb基本操作
    第二周 0/61 1/2 10/20 了解信息的表示和处理
    第三周 21/81 1/3 10/30 更深层次了解信息处理
    第四周 29/100 2/5 10/40 Y86处理器
  • 相关阅读:
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(1)
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(2)
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(2)
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之完成登录功能
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之登录窗口调试
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(1)
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建输出验证码图片的控制器
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之调整首页显示
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之登录窗口
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(3)
  • 原文地址:https://www.cnblogs.com/Miss-moon/p/9827092.html
Copyright © 2011-2022 走看看