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

    2017-2018-1 20155205 《信息安全系统设计基础》第七周学习总结

    教材学习内容总结

    1.Y86指令集及其应用

    下图列出了Y86指令集中包含的所有指令,以及每个指令的编码。

    可以看到,各个指令的长度从1字节到6字节不等,这样编码可以减少程序代码占用的空间。第1个字节的高4位作为指令编码,用来区分不同的指令,低4位要么是0,要么是fn。fn称为功能代码,用来区分不同的操作。如下图所示,不同的功能码在不同的指令中有不同的含义。在运算指令中,分别代表加、减、与和异或;在分支跳转指令中,分别代表不同的跳转条件;在条件转移指令中,分别代表不同的转移条件。

    第2个字节,对于大部分指令来说存放的是寄存器标识符,请看下图:

    2.指令的分阶段执行

    在Y86架构中,我们将每个指令的执行分为6个阶段。

    取指:从PC中取出当前要执行的指令,并按照指令编码对其分解,得到icode、ifun、rA、rB、valC等值。

    译码:根据rA、rB取出对应寄存器的值valA、valB。

    执行:ALU在不同指令下执行不同的操作,包括简单运算、地址加减等等,运算结果为valE,运算时会对条件码产生影响。

    访存:从存储器读取数据或向存储器写入数据。读出的值为valM。

    写回:将前面生成的结果写回寄存器文件。

    更新PC:将PC设置成下一条指令的地址。

    教材学习中的问题和解决过程

    • 问题1:对于4.11习题中的 irmovl $128,%esp指令取指阶段行情况不理解,不知道为啥是答案里那样写。

    • 问题1解决方案:

      A、取指阶段从存储器读取指令字节,地址为程序计数器(PC) 的值。从指令中抽取出指令指示符字节的两个四位部分,称为icode(指令代码)和ifun(指令功能)。

      irmovl rA,rB
      指令,它的字节编码是3 0 rA rB,那么icode:ifun就是3:0。

      B、它可能取出一个寄存器指示符字符,指明一个或两个寄存器操作数指示符rA和rB,这里的rA和rB与上面例子中的rA、rB位置相同。

      题中$128是立即数,所以那么 rA表示为f;%esp为4。

      C、它还可能取出一个四字节常数字valC。 这个valC就是128

      D、还有计算当前指令的下一指令的地址 valP,valP等于PC的值加上已取出指令的长度。(PC值在执行上一条指令后为0x00e)

      这样一来,我就清楚取指阶段该怎么写了:

      icode:ifun←M1[0x00e] =3:0
      rA:rB←M1[0x00f] =f:4
      valC←M4[0x010] =128
      valP←0x00e+6=0x014 
      

    代码调试中的问题和解决过程

    • 问题1:如何使用y86模拟器汇编并查看代码?

    • 问题1解决方案:

      1.课程QQ群中,或官网下载Y86模拟器,验证教材上不少于三个HCL代码

      2.构建YIS环境:

      cd ~/Code/shiyanlou_cs413
      wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar
      tar -xvf sim.tar
      cd sim
      sudo apt-get install bison flex tk
      sudo ln -s  /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtk.so
      sudo ln -s  /usr/lib/x86_64-linux-gnu/libtcl8.6.so /usr/lib/libtcl.so
      make
      

      3.YIS手册下载

      4.YIS测试:

      cd y86-code
      
      make asuml.yo
      

      进行汇编,asuml.yo就是汇编后的结果。

      make all
      

      可以汇编运行所有代码结果。

      结果:

    代码托管

    上周考试错题总结

    • 错题结果暂未出,今晚过后才能看到错题和解析。

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      • 详细地记录了学习过程

    本周结对学习情况

    - [20155218](http://www.cnblogs.com/xzh1996/p/7668839.html)
    

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

    这周学习了ISA中一个例子Y86,在学习时我们总结,一个ISA包含以下这些部分:

    • 指令集
    • 指令集编码
    • 基本数据类型
    • 一组编程规范
    • 寄存器
    • 寻址模式
    • 存储体系
    • 异常事件处理
    • 中断
    • 外部I/O
      今后若学习其他的指令集,也要掌握这些部分。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 65/65 1/1 10/10
    第三周 120/185 2/3 15/15
    第五周 375/560 3/6 14/29
    第六周 287/847 1/7 14/43
    七六周 575/1422 2/8 13/56

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程估计方法

    • 计划学习时间:13小时

    • 实际学习时间:13小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    实例属性 类属性 实例域 类域
    研究数据集
    static 静态域 类域 静态方法 工厂方法 he use of the static keyword to create fields and methods that belong to the class, rather than to an instance of the class 非访问修饰符
    accessor mothod mutator mothod 更改器方法 访问器方法 类的方法可以访问类的任何一个对象的私有域!
    上钻 下钻 切片 转轴 降采样
    识别会话
    Performance Tuning Using Linux Process Management Commands
    Secure Hash Algorithm 3
    grouped differently across partitions
    spark 划分stage Wide vs Narrow Dependencies 窄依赖 宽依赖 解析 作业 job stage 阶段 RDD有向无环图拆分 任务 Task 网络传输和计算开销 任务集 taskset
  • 原文地址:https://www.cnblogs.com/haoliberale/p/7613748.html
Copyright © 2011-2022 走看看