2017-2018-20155336 《信息安全系统设计基础》第七周学习总结
2017-12-05 18:51
483 查看
2017-2018-20155336 《信息安全系统设计基础》第七周学习总结
教材学习内容总结
Y86指令集体系结构
Y86指令Y86指令集基本上是
IA32指令集的一个子集,只包括四字节整数操作,寻址方式比较少,操作也较少。
汇编码表示和字节编码参见课本232页。
movl指令:源操作数(
i-立即数、
r-寄存器、
m-存储器)、目的操作数(
r-寄存器、
m-存储器)
四个整数操作指令:
addl 加、
subl 减、
andl 与、
xorl 异或
七个跳转指令——分支控制:
jmp 直接跳转、
jle(SF^OF)|ZF有符号数≤、
jl SF^OF有符号<、
je ZF相等/零、
jne ~ZF不相等/非零、
jge ~(SF^OF)有符号≥、
jg ~(SF^OF)&~ZF有符号>
六个条件传送指令:
cmovle、
cmovl、
cmove、
cmovne、
cmovge、
cmovg
call和
ret:
call指令将返回地址入栈,然后跳到目的地址,
ret指令从这样的过程调用中返回。
pushl和
popl:实现入栈和出栈
halt指令:
halt指令停止指令的执行,执行此指令会导致处理器停止,并将状态码设置为
HLT。
类比IA32:hlt指令与之类似,但是IA32的应用程序不允许使用这条指令,因为它会导致整个系统暂停运行。
Y86异常
AOK正常操作
HLT处理器执行halt指令
ADR遇到非法地址
INS遇到非法指令
逻辑设计和硬件控制语言HCL
逻辑门逻辑门产生的输出,等于它们输入位值的某个布尔函数。
逻辑门对应的HCL表达式:
AND &&、
OR ||、
NOT !
组合电路和HCL布尔表达式
构建计算块(组合电路)时的限制:两个或多个逻辑门的输出不能连接在一起、必须无环
组合逻辑电路和c语言中逻辑表达式的区别
组合电路的输出会持续响应输入变化,c语言表达式只有在执行过程中被遇到才求值
逻辑门只对0和1操作,c语言表达式中参数可以是任意整数,0是FALSE,不是0的都是TRUE
c的逻辑表达式可能被部分求值
Y86顺序实现
将处理组织成阶段:取指、译码、执行、访存、写回、更新PCSEQ阶段的实现:取指阶段、译码和写回阶段(都需要访问寄存器文件,根据四个端口的情况,判断应该读哪个寄存器产生信号valA、valB)、执行阶段(包括算术/逻辑单元ALU,输出的是valE、包括条件码寄存器)、访存阶段(读或者写程序数据)、更新PC阶段(会产生程序计数器的新值。)
Y86指令集的计算原则:处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态
Y86模拟器的安装(实验楼中)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/c8675e16f2f20101a238d1e985363cd3.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/ebb507db7b39a93274a245f073de9f1e.png)
1.mkdir ~/xxx创建一个专属文件夹
2.cd ~/xxx进入该专属文件夹
3.wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar去网站下载sim压缩包
4.tar -xvf sim.tar解压
5.cd sim进入sim文件夹
6.sudo apt-get install bison flex tk安装bison flex tk
7.sudo ln -s /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtk.so
8.sudo ln -s /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtcl.so
9.make
10.cd y86-code
11.make xxx.yo
Y86模拟器的安装(虚拟机中)
下载sim压缩包解压sim压缩包:tar -xvf sim.tar
进入sim文件夹:cd sim
安装TCL/TK以致有图形界面:sudo apt-get install tcl8.5-dev tk8.5-dev tcl8.5 tk8.5
修改文件,用记事本打开makefile文件夹下面的文件,GUIMODE=-DHAS_GUI (去掉原有注释),TKLIBS=-L/usr/lib/ -ltk8.5 -ltcl8.5,TKINC=-I/usr/include/tcl8.5。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/1a0921602b033336db642c16babcef7d.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/f6c3b1e955bcaa35125384edde007d57.png)
代码调试
P4.45![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/c683131e1b86a16660ad77e8367e0d3f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/612709e5063e95c9ba75061ba1121157.png)
首次编译。。。。。。。发现结果竟然不对~~~
调整后就好了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/cfafdb9eeeada65002c436f01a1ba1f3.png)
课后作业中的问题和解决过程
首先遇到的问练习题4.1中的两个问题,练习题中阐述了。.ops 0x100表明代码的起始地址是0x100,那为什么第一个指令
irmovl $15 , %ebx不是从
0xF+0x100呢?后来发现这样的做法是错误的,把基本概念都混肴了,一个是
%ebx的值,另一个则是地址的值,二者不一样,二者也是不会相互影响的。所以答案直接就是0xF ,最终答案应该是
30F30F000000
之后针对于练习4.1每一行代码的地址遇到了问题。为什么执行完代码
irmovl $15 , %ebx后地址变为
0x106?通过分析书上的P234页的例子就可以知道,需要4字节常数,每两个数算作一字节。加上imovl命令的编码
30F30F000000所以一共为6位,地址变化为0x106,之后的也一样,指令编码和4字节常数,不同的Y86指令又有不同的要求,理解图4-2、4-3的表就可以理解了。
代码托管
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/c75ae3cc7a72849b934e03aea448ff4b.png)
其他(感悟、思考等,可选)
有些地方。。。。。真的根本看不懂啊 也不知道该怎么问问题 难过学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 600/1300 | 4/9 | 30/90 | |
第五周 | 650/1300 | 5/9 | 40/90 | |
第六周 | 700/1300 | 6/9 | 50/90 | |
第七周 | 800/1300 | 7/9 | 60/90 |
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
参考:软件工程软件的估计为什么这么难,软件工程 估计方法
计划学习时间:10小时
实际学习时间:10小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
《深入理解计算机系统V3》学习指导...
相关文章推荐
- 2017-2018-1 20155216 《信息安全系统设计基础》第七周学习总结
- 20155336 2017-2018 1 《信息安全系统设计基础》第3周学习总结
- 2017-2018-1 20155305 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155336 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155208 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 学号20155209 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155304 《信息安全系统设计基础》第七周学习总结
- # 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155336 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155312 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155334 《信息安全系统设计基础》第七周学习总结
- 2017-2018-20155336 《信息安全系统设计基础》第六周学习总结
- 20155228 2017-2018-1 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155232 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155303 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155233 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155229 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155217 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155213 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155235 《信息安全系统设计基础》第七周学习总结