2017-2018-1 20155231 《信息安全系统设计基础》第7周学习总结
2017-2018-1 20155231 《信息安全系统设计基础》第7周学习总结
教材学习内容总结
第四章 处理器体系结构
- 8个程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp.他们都可以存储一个字;
- 8个程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp.他们都可以存储一个字;
- Stat:状态码,程序状态的最后一个部分,表明程序执行的总体状态,指示是正常运行还是出现了某种异常
- PC(程序计数器):存放当前正在执行指令的地址。
- 在movl指令中,指令名字的第一个字母就表明了源类型。指令第二个字母指明了目的类型。立即数(i)、寄存器(r)、存储器(m)。
- 时钟寄存器(简称寄存器)存储单个位或字,时钟信号控制寄存器加载输入值
- 随机访问存储器(简称存储器)存储多个字,用地址来选择该读或该写哪个字
- SEQ阶段的实现
- 取指阶段:取指阶段包括指令存储器硬件单元。
- 译码和写回阶段:都要访问寄存器文件。
- 执行阶段:执行阶段包括算术/逻辑单元(ALU)第一步每条指令的ALU计算,执行阶段还包括条件码寄存器。
- 访存阶段:访存阶段的任务是读或者写程序数据,两个控制块产生存储器地址和存储器输入数据的值,另外两个块产生控制信号表明应该执行读操作还是写操作。当执行读操作时数据存储器产生值valM。
- 更新PC阶段:SEQ中最后一个阶段会产生程序计数器的新值,依据指令的类型和是否要选择分支,新的PC可能是valC、valM、valP
教材学习中的问题和解决过程
- 问题1:如何确定优先级的问题?
- 问题1解决方案:对于指令pop%esp,E,M两个写端口会用到同一个地址,但是写入的数据又不一样,所以必须对两个端口设立一个优先级。
- 问题2:Y86代码和IA32代码的区别。
- 问题2解决方案Y86代码与IA32代码的主要区别在于,它可能需要多条指令来执行一条IA32指令所完成的功能。
代码调试中的问题和解决过程
- 问题1:实验的国密算法编译过程有问题
- 解决问题:代码是网上找的,没有修改能力。
- 问题 2:arm-linux-gcc和arm-elf-gcc有什么区别?
- 解决问题:在第2条编译步骤1到6相同,使用的库不同。在arm-linux-gcc里是调用linux内核的syscall。
而在arm-elf-gcc里需要将完整的printf函数编译进你的程序里。所以arm-elf-gcc可以编译linux内核,生成linux操作系统,然后用arm-linux-gcc去生成基于linux的应用程序。
代码托管
(statistics.sh脚本的运行结果截图)
虚拟机重装中,截图后补
上周考试错题总结
第六周已写
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- [结对同学学号1](博客链接)
- 结对照片
- 结对学习内容
- XXXX
- XXXX
- ...
其他(感悟、思考等,可选)
本周学习东西很多。有些实验还没完成,还在学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第7周 | 299/2100 | 1/5 | 11/1000 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:16小时
-
实际学习时间:11小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)