2017-2018-1 20155203 《信息安全系统设计基础》第7周学习总结
教材学习内容总结
Y86模拟器的安装和使用
- 安装基本参照实验楼中实验五内容
- 参照YIS手册使用
运行asum.yo:
参数用途:
安装图形界面参照Y86模拟器安装
Y86指令集体系结构
包括定义各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理。Y86指令和IA32代码的主要区别在于,它可能需要多条指令来执行一条IA32指令能完成的所有功能。
-
Y86指令集:
-
Y86异常:
对Y86来说,程序员可见的状态中就有stat状态码,它标志了程序执行的状态.Y86需要有能力根据stat去做一些处理.捕获为了简单起见,这里除了正常执行之外,都将停止指令的执行.真实当中,会有专门的异常处理程序.
Y86有四种不同的状态码:AOK(正常),HTL(执行halt指令),ADR(非法地址)和INS(非法指令).
逻辑设计和硬件控制语言HCL
-
逻辑门是数字电路的基本计算元素,它们产生的输出,等于它们输入位值的某个布尔函数。
-
高级逻辑设计——组合电路:将很多逻辑门组合成一个网所构建的计算块称为组合电路。构建这个网有两个限制:
①、两个或多个逻辑门的输出不能连在一起。否则它们可能会导致线上的信号矛盾,可能会导致一个不合法的电压或电路故障。 ②、这个网必须是无环的,也就是在网中不能有路径经过一系列的门而形成一个回路,这样的回路会导致该网络计算的函数有歧义。 -
HCL表达式 和 C 语言逻辑表达式的区别
区别有以下三点:
①、逻辑门是持续输出的,如果电路的输入变化了,在一定的延迟之后,输出也会相应的变化,而C表达式是在执行到的时候才会求值。
②、两者操作的值不同,逻辑门只对值 0 和值 1 进行操作,而C 逻辑表达式允许参数是任意整数,0表示false,其它任意值都表示true。
③、C 逻辑表达式存在短路,比如对于a && b这个符号来说,C语言中的规定是如果前者为假,则后者不会再计算。而HCL当中没有这种说法。
Y86的顺序实现
取指:取指阶段从存储器读取指令字节,地址为程序计数器(PC)的值。
译码:译码阶段从寄存器文件读入最多两个操作数,得到val A/val B.
执行:执行阶段,算术/逻辑单元要么执行指令明确的操作(根据ifun的值),计算存储器引用的有效地址,要么增加或减少栈指针。得到的值称为valE
访存:访存阶段可将数据写入存储器或从存储器读出数据
写回:最多可写两个结果到存储器。
更新PC:将PC设置成下一指令的地址。
- 程序计数器放在寄存器中,位于左下角PC。
- 信息随着线流动,方向是先向上再向右
- 反馈先祖在右边向下
- 所有硬件单元的处理都在一个时钟周期内完成。
- 浅灰色方块表示硬件单元
- 控制逻辑块是用灰色圆角矩形表示的
- 线路的名字在白色椭圆中说明
- 宽度为字长或更窄的数据连接用细线
- 单个位的连接用虚线。
代码调试中的问题和解决过程
-
问题1:在安装Y86模拟器时会出现tcl.h tk.h文件路径找不到的问题。
-
可以参考实验楼的步骤,也可以自己找这两个文件的路径,一般是在/usr/include下,具体方法是将makefile中的一部分内容进行修改:
GUIMODE=-DHAS_GUI (本来是#GUIMODE=-DHAS_GUI 的,也就是把凝视去掉)
TKLIBS=-L/usr/lib/ -ltk8.5 -ltcl8.5
TKINC=-I/usr/include/tcl8.5
-
问题2:在调试.yo文件编译问题时出现了同学们之前漏洞攻击时出现的Ubuntu图形界面消失只剩下命令行
-
问题2解决方案:参考ubuntu无法进入图形界面的一种解决方案
-
问题3:安装图形界面出现问题
To run in GUI mode, you must recompile with the HAS_GUI constant defined.
- 未解决,指导手册的英文实在只能看个半懂,在网上找到的又有很多偏颇,后续继续解决。
代码托管
上周考试错题总结
我们用一个十六进制的数表示长度w=4的位模式,把数字解释为补码,关于其加法逆元的论述正确的是()
A .
0x8的加法逆元是-8
B .
0x8的加法逆元是0x8
C .
0x8的加法逆元是8
D .
0xD的加法逆元是3
E .
0xD的加法逆元是0x3
正确答案: A B D E
大多数计算机使用同样的机器指令来执行无符号和有符号加法。
A .
正确
B .
错误
C .
不确定
正确答案: A
我们用一个十六进制的数表示长度w=4的位模式,对于数字的无符号加法逆元的位的表示正确的是()
A .
0x8的无符号加法逆元是0x8
B .
0xD的无符号加法逆元是0xD
C .
0xF的无符号加法逆元是0x1
D .
0xF的无符号加法逆元是1
正确答案: A C D
short int v=-12345;
unsigned short uv=(unsigned short) v;
那么
A .
v=-12345, uv=53191
B .
v=uv=0xcfc7
C .
v,uv的底层的位模式不一样
D .
v,uv的值在内存中是不一样的
正确答案: A B
下面和代码可移植性相关的C语言属性有()
A .
#define
B .
typedef
C .
sizeof()
D .
union
正确答案: A B C
根据c89国际标准编译程序prog.c,下面正确的是()
A .
gcc prog.c
B .
gcc -ansi prog.c
C .
gcc -std=c89 prog.c
D .
gcc -std=gnull prog.c
正确答案: B C
总结:主要是对于不同进制数在不同系统下的具体内涵不了解。
本周结对学习情况
- [20155204](http://www.cnblogs.com/20155204wh/)
- 结对学习内容
互相学习吧,大家在编程的时候各有长短
其他(感悟、思考等,可选)
这周的学习和之前又有很大的差别,因此对于我们来说确实是很大的挑战。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/1 | 6/6 | |
第三周 | 156/388 | 2/3 | 15/21 | 这周除课堂实践外,大多数都是知识性的学习内容,代码量确实太少从下周起就要抓紧了 |
第四周 | 156/388 | 3/6 | 15/36 | 每天100行好难啊,不过感觉找到了学习的一些动力。在调试代码上花的时间太多,都要没时间看书了,还要继续改进 |
第五周 | 284/ 745 | 1/7 | 15/51 | |
第七周 | 1812/ 2557 | 2/9 | 10/61 |
-
计划学习时间:10小时
-
实际学习时间:10小时
-
改进情况:比之前时间要短了看书的效率也高,谢谢老师给指出的重点!