2018-2019-1 20165202 《信息安全系统设计基础》第四周学习总结
2018-2019-1 20165202 《信息安全系统设计基础》第四周学习总结
教材学习内容总结
一、处理器体系结构
- Y86-64指令集体系结构
- ISA(Instruction-Set Architecture)指令集体系结构:一个处理器支持的指令和指令的字节集编码。
- 内存的理解:一个很大的字节数组,保存着程序和数据。Y86-64用虚拟地址来引用内存位置。硬件和操作系统软件联合起来将虚拟地址翻译成实际或物理地址,指明数据实际存在内存中哪个地方。虚拟内存系统向Y86-64程序提供了一个单一的字节数组映像。
- 异常:遇到异常时,处理器停止执行指令;异常处理程序可以被配置成不同的结果。
- Y86-8需要将常数加载到寄存器,算术指令中不能使用立即数。
- 逻辑设计和硬件控制语言HCL
- 实现一个数字系统的三个主要的组成部分:计算对位进行操作的函数的组合逻辑、存储位的存储器单元,以及控制存储器单元更新的时钟信号。
AND
用&&
表示,OR
用||
表示,NOT
用!
表示。不要与%
、|
、~
混淆,逻辑门只对单个位的数进行操作,而不是整个字。情况表达式示例:选择表达式顺序求值,第一个求值为1的情况会被选中。
int Out=[s: A; //s为1时Out=A,s为0时,顺序求下一表达式值。1: B; //s为0时,Out=B。一种指定默认情况的方法。几乎所有情况表达式以此结尾。 ]
- 为了产生时序电路(有状态并且在这个状态上进行计算的系统),引入按位存储信息的设备。时钟寄存器:存储单个位或字,时钟信号控制寄存器加载输入值。随机访问存储器:存储多个字,用地址来选择该读或该写哪个字,包括处理器的虚拟存储器系统,寄存器文件比如%eax等。
- Y86的顺序实现
1.取指:取指阶段从存储器读取指令字节,地址为程序计数器(PC)的值。译码:译码阶段从寄存器文件读入最多两个操作数,得到值valA和/或valB。(有些指令读寄存器%esp)。执行:算数/逻辑单元(ALU)要么执行指令指明的操作(依据ifun),计算存储器引用的有效地址,要么增加或减少栈指针,得到valE。访存:将数据写入存储器,或者从存储器读出数据,读出的值为valM。写回:(最多)写两个结果到寄存器文件。更新PC:将PC设置成下一条指令的地址。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)
【指令 修改】
- 立即数(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 《信息安全系统设计基础》第四周学习总结相关推荐
- 20135219洪韶武——信息安全系统设计基础第四周学习总结
信息安全系统设计基础第四周学习总结 学习任务:教材第三章 学习时间:10小时 学习内容 一.教材知识梳理 1.程序编码与机器级代码 程序编码: gcc编译器,将源代码转化成可执行代码,C预处理器-汇编 ...
- 20135203齐岳 信息安全系统设计基础第四周学习总结
20135203齐岳 信息安全系统设计基础第四周学习总结 学习计时:共17小时 读书:10 代码:1 作业:3 博客:3 一.学习目标 理解逆向的概念以及 掌握X86汇编基础,能够阅读(反)汇编代码 ...
- 信息安全系统设计基础第四周学习总结—20135227黄晓妍
二进制数字系统和标准字符码 无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数字. 补码(two's-complement)编码是表示有符号整数的最常见的方式,有符号整数就是 ...
- 信息安全系统设计基础第一周学习总结
学习计时:共15小时 读书:1 代码:10 作业:13 博客:1 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令 ...
- 信息安全系统设计基础第二周学习总结
信息安全系统设计基础第二周学习总结 学习目标 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 ...
- 20135219洪韶武——信息安全系统设计基础第九周学习总结
信息安全系统设计基础第九周学习总结 学习时间:7小时 学习内容:课本第十章 一.第十章知识点(1~6) 第一部分:文件的概念及相关操作 1.每个unix文件都是一个m字节的序列:所有I/O设备如网络. ...
- 信息安全系统设计基础第九周学习总结
第十章 系统级I/O的实践 学习目标: 代码阅读理解: 1.编译运行代码 2.使用man学习理解相关系统调用, 理解参数.返回值的含义 3.会用grep -nr xxx /usr/include 查宏 ...
- 20135323符运锦---信息安全系统设计基础第一周学习总结
学习计时:共15小时 读书:1小时 代码:8小时 作业:4小时 博客:2小时 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Li ...
- 20135304刘世鹏——信息安全系统设计基础第一周学习总结
第一节 Linux系统简介 一.Linux是一个操作系统 1. Linux 本身只是操作系统的内核.内核是使其他程序能够运行的基础. 它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序 实 ...
- LINUX信息安全系统设计基础第一周学习总结
Linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 二.Linux 与 Window ...
最新文章
- 2018-3-25论文(Grey Wolf Optimizer )以及(The Whale Optimizer Algorithm)笔记一 -----作者网站+两论文摘要比对比
- AD5933不同频率下的转换结果
- 【总结整理】关于IE6的兼容性
- 【转载】IP网络位,主机位,广播地址及掩码
- Redhat5.4 系统上部署 MooseFS分布式文件系统的部署
- oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数
- DDD理论学习系列(13)-- 模块
- 对象失去焦点时自己动提交数据
- Prefer rather than 喜欢 Prefer to
- Xml中SelectSingleNode方法,xpath查找某节点用法
- cors java 安全问题_使用CORS实现JavaWeb跨域请求问题的方法
- 电子信息系统机房设计规范
- 如何通过注册表修改默认程序
- 导出包含富文本内容和图片的word和pdf
- 联想 sl 400 无线网卡驱动
- 微信浏览器唤起微信登录
- Deepin 安装Postman
- 不允许一个用户使用一个以上用户名域一个服务器或共享
- 清华大学计算机系女生人数,2013年清华大学在各省市录取人数及男女比例
- HTTP Status code(状态码)和 Status text(状态文本)
热门文章
- 电子科大计算机学院硕士培养方案,电子科技大学制订全日制硕士专业学位研究生培养方案基本要求.doc...
- android linker 浅析
- Android开发架构规范
- python接口测试类型_python 接口测试字符类型转换
- JZOJ 3597. 【CQOI2014】危桥
- JZOJ 3693. 【NOI2014模拟6.20】慎二的随机数列
- turtlebot机器人模拟平台
- jprofiler分析dump文件_内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)...
- DM中一个热门问题的解惑
- windows bat 设置ip_A6v5.1网络版安装与防火墙设置