2017-2018-1 20155308 《信息安全系统设计基础》第六周学习总结
2017-2018-1 20155308
《信息安全系统设计基础》第六周学习总结
教材学习内容总结
-
指令集体系结构(ISA):一个处理器支持的指令和指令的字节级编码
-
冒险:一条指令的位置或操作数依赖于其他仍在流水线中的指令
-
Y86指令
- movl:irmovl rrmovl mrmovl rmmovl
- 整数指令:addl subl andl xorl
- 跳转指令:jmp jle jl je jne jge jg
- 条件传送指令:cmovle cmovl cmove cmovne cmovge cmovg
- 将处理组织成阶段
- 取指:从存储器读取指令字节,地址为程序计数器PC的值
- 译码:从寄存器文件读入最多两个操作数
- 执行:算数/逻辑单元要么执行指令指明的操作(根据ifun的值),计算存储器引用的有效地址,要么增加或减少栈指针,得到的值称为valE
- 访存:将数据写入存储器或从存储器读出数据,值为valM
- 写回:最多可以写两个结果到寄存器文件
•更新PC:将PC设置成下一条指令地址
- 进程和并发
- 进程是一个执行中程序的实例
进程提供给应用程序的关键抽象 - 一个独立的逻辑控制流,独占地使用处理器;
•并发流:一个逻辑流的执行再时间上与另一个流重叠
•并发:多个流并发地执行的一般现象。即在一个处理器上同时运行多个程序
•并行:两个流并发的运行在不同的处理器核或者计算机上。
教材学习中的问题和解决过程
- 问题一:popl指令在译码阶段为什么要读两次栈指针?
- 回答:
这个问题我自己去查了一下百度,没有一个明确的解释,后来我看了学长学姐的代码,在
http://www.cnblogs.com/20145240lsj/p/6150698.html
找到了一个回答:为了保证和pushl指令执行过程的一致性,先完成存储器的操作再更新栈指针,执行是在访存和写回阶段之前,所以执行阶段先给栈指针加4,但是要用没加过4的原始值作为存储器操作地址。写回时也要用加4的栈指针更新地址,也要用没加4的值作为存储器读地址,所以译码时要访问两次栈指针
- nop到底有什么作用?感觉它好像没有太大的用处?
- 解答?这是一个占位指令。没有针对性的用处,知识为了后续的程序实行正常
上周考试错题总结
- 下面和代码可移植性相关的C语言属性有( A B C)
A .#define
B .typedef
C .sizeof()
D .union
- 解析:#define可以定义宏使得变量可移植,typedef可以使得类型可移植,sizeof()使得不同类型长度可移植。这个知识在书上比较零散,所以需要多加注意。
- 多选:我们用一个十六进制的数表示长度w=4的位模式,对于数字的无符号加法逆元的位的表示正确的是()
A .0x8的无符号加法逆元是0x8
B .0xD的无符号加法逆元是0xD
C .0xF的无符号加法逆元是0x1
D .0xF的无符号加法逆元是1
- 多选:
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的值在内存中是不一样的
- 解析:对于有符号数和无符号数,他们之间的转化,值的表示不同,但是位模式是不变。
本周代码托管截图
本周结对学习情况
- 20155316
- 结对学习内容书本第八章、第十章的内容
其他(感悟、思考等,可选)
这周的学习任务比较重,所以感觉很吃力,希望自己下次能够安排好时间,所以应该增强自己的学习能力,提高学习效率。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 2000行 | 30篇 | 800小时 | |
第五周 | 200/200 | 2/5 | 30/85 |
- 计划学习时间:20小时
- 实际学习时间:30小时
- 改进情况:学习时间增加了。