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

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

    教材学习内容总结

    一、处理器体系结构

    1. Y86-64指令集体系结构

      1. ISA(Instruction-Set Architecture)指令集体系结构:一个处理器支持的指令和指令的字节集编码。

      2. 内存的理解:一个很大的字节数组,保存着程序和数据。Y86-64用虚拟地址来引用内存位置。硬件和操作系统软件联合起来将虚拟地址翻译成实际或物理地址,指明数据实际存在内存中哪个地方。虚拟内存系统向Y86-64程序提供了一个单一的字节数组映像。

      3. 异常:遇到异常时,处理器停止执行指令;异常处理程序可以被配置成不同的结果。

      4. Y86-8需要将常数加载到寄存器,算术指令中不能使用立即数。

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

      1. 实现一个数字系统的三个主要的组成部分:计算对位进行操作的函数的组合逻辑、存储位的存储器单元,以及控制存储器单元更新的时钟信号。

      2. AND&&表示,OR||表示,NOT!表示。不要与%|~混淆,逻辑门只对单个位的数进行操作,而不是整个字。

      3. 情况表达式示例:选择表达式顺序求值,第一个求值为1的情况会被选中。

      int Out=[
          s: A;    //s为1时Out=A,s为0时,顺序求下一表达式值。
          1: B;    //s为0时,Out=B。一种指定默认情况的方法。几乎所有情况表达式以此结尾。
      ]
      
      1. 为了产生时序电路(有状态并且在这个状态上进行计算的系统),引入按位存储信息的设备。时钟寄存器:存储单个位或字,时钟信号控制寄存器加载输入值。随机访问存储器:存储多个字,用地址来选择该读或该写哪个字,包括处理器的虚拟存储器系统,寄存器文件比如%eax等。
    3. Y86的顺序实现
      1.取指:取指阶段从存储器读取指令字节,地址为程序计数器(PC)的值。译码:译码阶段从寄存器文件读入最多两个操作数,得到值valA和/或valB。(有些指令读寄存器%esp)。执行:算数/逻辑单元(ALU)要么执行指令指明的操作(依据ifun),计算存储器引用的有效地址,要么增加或减少栈指针,得到valE。访存:将数据写入存储器,或者从存储器读出数据,读出的值为valM。写回:(最多)写两个结果到寄存器文件。更新PC:将PC设置成下一条指令的地址。
      2.

      1. SEQ抽象视图

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

    • 问题1:写出xor(异或)信号的HCL表达式,输入为a和b。

    • 问题1解决方案:当a和b全为0或者1时,(a || b)(!a || !b)中必有一个为0,xor的值必为0;当a和b一个为0,一个为1时,(a || b)(!a || !b)的值均为1,xor为1。表达式:bool xor=(a || b) && (!a || !b)

    • 问题2:如何理解irmovl指令的处理情况?

    • 问题2解决方案:(对比跟踪subl指令的执行)

    • 问题3:如何理解Y86—64指令?

    • 问题3解决方案:

      • 立即数(i)、寄存器(r)、内存(m)
        【指令 修改】

    练习确定下列指令序列的字节编码:

    .pos 0x100
        irmovl $15,%ebx
        rrmovl %ebx,%ecx
    loop:
        rmmovl %ecx,-3(%ebx)
        addl %ebx,%ecx
        jmp loop
    

    贴出两个示例,一个是irmovl v,rB;另一个是jmp Dest

    0x100:30f30f00000000000000//f:00 00 00 00 00 00 00 0f->0f 00 00 00 00 00 00 00 
    0x10a:2031//0x100->0x10a是因为上一条指令共10字节
    0x10c:
    0x10c:4013fdffffffffffffff//十进制的-3补码转换16进制fffffffffffffffd
    0x116:6031
    0x118:700c01000000000000//0x10c->0c 10 00 00 00 00 00 00 
    
    

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

    • 问题1:如何搭建Y86编译环境?
    • 问题1解决方法:由于没有使用Ubuntu,我在实验楼中完成本次试验。
    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
    

    cd y86-code
    make asuml.yo
    make clean
    make all
    

    cat asuml.yo
    

    代码托管

    本周y86模拟均在实验楼环境进行

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 195/195 1/1 10/10
    第三周 314/706 1/2 15/25
    第五周 254/960 1/3 10/35
    第七周 24/1759 1/4 15/50
    • 计划学习时间:12小时

    • 实际学习时间:15小时

    参考资料

  • 相关阅读:
    java忽略安全警告注解@SuppressWarnings
    spring data jpa 报for input String "id"错误解决
    spring Data Jpa 报错 failed to lazily initialize a collection of role: com.itheim.pojo.Role.users, could not initialize proxy
    记一次Content type 'application/json;charset=UTF-8' not supported解决方案
    包冲突异常 loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFacto
    Java运算符(&)、(|)、(^)、(~)
    Java中的原码、补码、反码
    vim编辑器
    Linux yum、tar、rpm、zip、gzip命令的使用
    error Couldn't find a package.json file in
  • 原文地址:https://www.cnblogs.com/jhs888/p/9827447.html
Copyright © 2011-2022 走看看