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设置成下一条指令的地址。

    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 0x100irmovl $15,%ebxrrmovl %ebx,%ecx
loop:rmmovl %ecx,-3(%ebx)addl %ebx,%ecxjmp 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小时

参考资料

  • 《深入理解计算机系统V3》学习指导

转载于:https://www.cnblogs.com/jhs888/p/9827447.html

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

  1. 20135219洪韶武——信息安全系统设计基础第四周学习总结

    信息安全系统设计基础第四周学习总结 学习任务:教材第三章 学习时间:10小时 学习内容 一.教材知识梳理 1.程序编码与机器级代码 程序编码: gcc编译器,将源代码转化成可执行代码,C预处理器-汇编 ...

  2. 20135203齐岳 信息安全系统设计基础第四周学习总结

    20135203齐岳 信息安全系统设计基础第四周学习总结 学习计时:共17小时 读书:10 代码:1 作业:3 博客:3 一.学习目标 理解逆向的概念以及 掌握X86汇编基础,能够阅读(反)汇编代码 ...

  3. 信息安全系统设计基础第四周学习总结—20135227黄晓妍

    二进制数字系统和标准字符码 无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数字. 补码(two's-complement)编码是表示有符号整数的最常见的方式,有符号整数就是 ...

  4. 信息安全系统设计基础第一周学习总结

    学习计时:共15小时 读书:1 代码:10 作业:13 博客:1 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令 ...

  5. 信息安全系统设计基础第二周学习总结

    信息安全系统设计基础第二周学习总结 学习目标 1. 熟悉Linux系统下的开发环境    2. 熟悉vi的基本操作    3. 熟悉gcc编译器的基本原理    4. 熟练使用gcc编译器的常用选项 ...

  6. 20135219洪韶武——信息安全系统设计基础第九周学习总结

    信息安全系统设计基础第九周学习总结 学习时间:7小时 学习内容:课本第十章 一.第十章知识点(1~6) 第一部分:文件的概念及相关操作 1.每个unix文件都是一个m字节的序列:所有I/O设备如网络. ...

  7. 信息安全系统设计基础第九周学习总结

    第十章 系统级I/O的实践 学习目标: 代码阅读理解: 1.编译运行代码 2.使用man学习理解相关系统调用, 理解参数.返回值的含义 3.会用grep -nr xxx /usr/include 查宏 ...

  8. 20135323符运锦---信息安全系统设计基础第一周学习总结

    学习计时:共15小时 读书:1小时 代码:8小时 作业:4小时 博客:2小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用Li ...

  9. 20135304刘世鹏——信息安全系统设计基础第一周学习总结

    第一节 Linux系统简介 一.Linux是一个操作系统 1. Linux 本身只是操作系统的内核.内核是使其他程序能够运行的基础. 它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序 实 ...

  10. LINUX信息安全系统设计基础第一周学习总结

     Linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 二.Linux 与 Window ...

最新文章

  1. 2018-3-25论文(Grey Wolf Optimizer )以及(The Whale Optimizer Algorithm)笔记一 -----作者网站+两论文摘要比对比
  2. AD5933不同频率下的转换结果
  3. 【总结整理】关于IE6的兼容性
  4. 【转载】IP网络位,主机位,广播地址及掩码
  5. Redhat5.4 系统上部署 MooseFS分布式文件系统的部署
  6. oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数
  7. DDD理论学习系列(13)-- 模块
  8. 对象失去焦点时自己动提交数据
  9. Prefer rather than 喜欢 Prefer to
  10. Xml中SelectSingleNode方法,xpath查找某节点用法
  11. cors java 安全问题_使用CORS实现JavaWeb跨域请求问题的方法
  12. 电子信息系统机房设计规范
  13. 如何通过注册表修改默认程序
  14. 导出包含富文本内容和图片的word和pdf
  15. 联想 sl 400 无线网卡驱动
  16. 微信浏览器唤起微信登录
  17. Deepin 安装Postman
  18. 不允许一个用户使用一个以上用户名域一个服务器或共享
  19. 清华大学计算机系女生人数,2013年清华大学在各省市录取人数及男女比例
  20. HTTP Status code(状态码)和 Status text(状态文本)

热门文章

  1. 电子科大计算机学院硕士培养方案,电子科技大学制订全日制硕士专业学位研究生培养方案基本要求.doc...
  2. android linker 浅析
  3. Android开发架构规范
  4. python接口测试类型_python 接口测试字符类型转换
  5. JZOJ 3597. 【CQOI2014】危桥
  6. JZOJ 3693. 【NOI2014模拟6.20】慎二的随机数列
  7. turtlebot机器人模拟平台
  8. jprofiler分析dump文件_内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)...
  9. DM中一个热门问题的解惑
  10. windows bat 设置ip_A6v5.1网络版安装与防火墙设置