2017-2018-1 20155215 《信息安全系统设计基础》第7周学习总结
教材学习内容总结
Y86指令集体系结构
- 内容:定义一个指令集体系结构,包括定义各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理。
程序员可见状态
- Y86程序中的每条指令都会读取或修改处理器状态的某些部分。
- Y86具体包括:8个程序寄存器、3个条件码ZFSFOF、程序计数器(PC)。
- Y86用虚拟地址引用存储器位置。 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态。
Y86指令
-
IA32指令集的一个子集,只包括四字节整数操作。寻址方式比较少,操作也比较少。
-
指令编码长度从1个字节到6个字节不等,一条指令含有一个单字节的指令指示符,可能含有一个单字节的寄存器指示符,还可能含有一个四字节的常数字。字段fn指明是某个整数操作(OPL)、数据移动条件(cmovXX)或是分支条件(jXX),所有数值都用十六进制表示
-
call指令将返回地址入栈,然后跳到目的地址。ret指令从这样的过程调用中返回。
-
pushl和popl指令实现了入栈和出栈。
-
halt指令停止指令的执行。对于Y86来说,执行halt指令会导致处理器停止,并将状态码设置为HLT。
-
算术/逻辑单元(ALU)
-
时序电路
-
有状态并且在这个状态上进行计算的系统
-
时钟寄存器&随机访问存储器
-
时钟寄存器存储单个位或者字。时钟信号控制寄存器加载输入值
-
随机访问存储器存储多个字,用地址来选择该读入或者该写哪个字
Y86的顺序实现离不开SEQ处理器(顺序处理器)。
处理操作的阶段
- 取指:从寄存器读取指令字节,地址为程序计数器的值。计算下一条指令地址等于PC中的值加上已取出指令的长度
- 译码:从寄存器文件中最多读出两个操作数
- 执行:ALU执行指明的操作、引用的有效地址或者是修改栈指针
- 访存:将数据写入存储器或者从存储器读出数据
- 写回:写两个结果到寄存器文件
- 更新PC:将PC设置成下条指令地址
教材学习中的问题和解决过程
-
问题1:
-
问题1解决方案:
代码调试中的问题和解决过程
-
问题1:git出错,我发现我的脚本统计出现了问题,出现的结果只有69行。
-
问题1解决方案:我找了一个学长帮我看了一下,最后发现是在有一个“git add”统计的时候,有一个运行文件的文件名取作了“.c”,所以脚本崩溃了。。
然后我花了很长时间找到了那个文件,把他删除之后就正常了。
代码托管
因为这周的脚本文件发生了崩溃,所以搞好之后代码量全部统计在了一周。
上周考试错题总结
-
假设下面位串是基于IEEE格式的5位浮点表示,一个符号位,2个阶码位,两个小数位。下面正确的是()
A .
3.5的表示是[01011]
B .
-1.0的表示[01111]
C .
0.5的表示是[00011]
D .
1.5的表示是[00110]
正确答案: A D 你的答案: A C -
假设下面位串是基于IEEE格式的5位浮点表示,一个符号位,2个阶码位,两个小数位。下面正确的是()
A .
3.5的表示是[01011]
B .
-1.0的表示[01111]
C .
0.5的表示是[00011]
D .
1.5的表示是[00110]
正确答案: A D 你的答案: A C -
我们用一个十六进制的数表示长度w=4的位模式,把数字解释为补码,关于其加法逆元的论述正确的是()
A .
0x8的加法逆元是-8
B .
0x8的加法逆元是0x8
C .
0x8的加法逆元是8
D .
0xD的加法逆元是3
E .
0xD的加法逆元是0x3
正确答案: A B D E 你的答案: B E -
我们用一个十六进制的数表示长度w=4的位模式,对于数字的无符号加法逆元的位的表示正确的是()
A .
0x8的无符号加法逆元是0x8
B .
0xD的无符号加法逆元是0xD
C .
0xF的无符号加法逆元是0x1
D .
0xF的无符号加法逆元是1
正确答案: A C D 你的答案: A C -
0<=x,y<2^w, 则
A .
x+y的最大值是2^w
B .
x+y的最大值是2^w-1
C .
x+y的最大值是2^w-2
D .
x+y的最大值是2^(w+1)
E .
x+y的最大值是2^(w+1)-1
F .
x+y的最大值是2^(w+1)-2
正确答案: F 你的答案: B -
计算机中x<y 和x-y<0总是等价的。
A .
错误
B .
正确
C .
不确定
正确答案: A 你的答案: B
结对及互评
点评模板:
- 博客中值得学习的或问题:
- 5232同学进行了很多实践,看到了她写的博客之后,我也对其中的一些东西产生了兴趣。其中就包括Y86模拟器的安装。
- 安装指令:
sudo apt-get install bison flex
本周结对学习情况
- [20155232](http://www.cnblogs.com/lsqsjsj/p/7769029.html)
其他(感悟、思考等,可选)
我感觉这学期的学习比上学期要好一些,懂得更多一点,不会完全云里雾里。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/1 | 20/20 | |
第三周 | 300/500 | 1/1 | 18/22 | |
第五周 | 500/1000 | 1/1 | 19/20 | |
第六周 | 300/1300 | 1/1 | 20/21 | |
第七周 | 300/1300 | 1/1 | 19/20 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:19小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)