2017-2018-1 20155318 《信息安全系统设计基础》第七周学习总结
2017-2018-1 20155318 《信息安全系统设计基础》第七周学习总结
教材学习内容总结
学习目标
- 了解ISA抽象的作用
- 掌握ISA,并能举一反三学习其他体系结构
- 了解流水线和实现方式
教材学习
- Y86-64指令集
指令 | 功能 |
---|---|
halt | 终止指令的执行 |
nop | 占位指令,不做任何事 |
xxmovl(irmovq,rrmovq,mrmovq,rmmovq) | 数据传送指令,如rrmov指令,则代表将一个寄存器的值,赋给另外一个寄存器,i-立即数,r-寄存器,m-内存。 |
opl | 操作指令,如加、减法 |
jxx | 条件跳转指令,根据后面的条件进行跳转 |
cmovxx | 条件传送指令,后面的xx代表的是条件,只发生在两个寄存器之间 |
call与ret | 方法的调用和返回指令,一个将返回地址入栈,并跳到目标地址,一个将返回地址入PC,并跳到返回地址 |
push和pop | 入栈和出栈操作 |
- Y86异常
- Y86有stat状态码,它标志了程序执行的状态
- Y86有四种不同的状态码:AOK(正常),HTL(执行halt指令),ADR(非法地址)和INS(非法指令)
- 常用的存储设备类型:
- 时钟寄存器:存储单个位或字,时钟信号控制寄存器加载输入值。
- 随机访问存储器:存储多个字,用地址来选择该读或者该写哪个字。
教材学习中的问题和解决过程
- 问题一:Y86和X86的区别
- 解决方案:X86比Y86更简单,有时候Y86需要两条指令来达到X86一条指令就可以实现。
- 比如:对于X86指令中的
addl$4,%ecx
这样的指令,由于Y86当中的addl
指令不包含立即数,所以Y86需要先将立即数存如寄存器,即使用irmovl
指令,然后再使用addl
来处理加法运算。 - 补充Y86代码与IA32代码的区别:
- Y86可能需要多条指令来执行一条IA32指令所完成的功能。
- Y86没有伸缩寻址模式
- 要实现一个数字系统需要三个主要的组成部分:
- 计算对位进行操作的函数的组合逻辑
- 存储位的存储器元素
- 控制存储器元素更新的时钟信号
代码调试中的问题和解决过程
-
购建YIS
-
输入命令```wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar tar -xvf sim.tar``成功会显示已保存
-
输入指令
tar -xvf sim.tar
-
进入sim文件夹,输入指令
sudo apt-get install 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
-
进行YIS测试,进行汇编
-问题:使用make指令时遇到这个问题(暂未解决):
代码托管
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
其他(感悟、思考等)
本周学习主要是补齐课上及课下的实验,任务量比较大……
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 3/3 | |
第二周 | 100/100 | 1/2 | 3/6 | |
第三周 | 300/400 | 1/3 | 4/10 | |
第四周 | 0/400 | 2/5 | 2/12 | |
第五周 | 25/425 | 1/6 | 4/16 | |
第六周 | 181/606 | 3/9 | 10/26 | |
第七周 | 201/807 | 2/11 | 7/33 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:5小时
-
实际学习时间:7小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)