教材学习内容总结
-
PPT部分
- 存储器与时表
- Y86六阶段框架
- SEQ的硬件结构
- Y86指令编码
- 采用的操作
-
实验楼部分
- 构建YIS环境
- 下载sim压缩包并解压
- 安装bison和flex词法分析工具
- 进入y86-code文件夹,编译文件
-
操作部分
-
在Ubuntu中搭建Y86环境
- 首先安装bison和flex词法分析工具,以及图形界面Tcl/Tk。使用命令 wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar 下载sim压缩包,并解压
- 将sim文件夹下的Makefile文件进行修改,make编译
- 进入y86-code文件夹,make clean后再make即可,使用cat查看Y86的汇编程序
-
总结来说,可以概括为以下几步 在y86-code文件夹下新建ys后缀文档 终端输入make clean,再make xxxx.yo,然后就可以cat xxxx.yo查看了
- 我们还可以回到pipe文件夹,在里边有一个psim的可执行文件,我们输入 ./psim -t -g ../y86-code/asum.yo 来打开模拟器
- 点击上方的Go,下方的“取值阶段”、“译码阶段”、“执行阶段”和“访存阶段”也会一步步变化,最下边各寄存器的值也会随之变化。
教材学习中的问题和解决过程
-
问题1:
- 在练习题4.4中,为什么可以用 je return 的汇编语句代替源代码的 if(count<=0) return 0 部分?
-
问题1解决方案:
- 显然,使用 je 是等于0时跳转。但仔细观察代码发现,此求和函数每迭代一次,count的值便-1,一旦其减小到0时便返回0。所以如果是从结果来看,这里判断count=0还是count<=0的效果都是一样的。而在结果相同的情况下,如此写存储空间占用可能便更小。
代码调试中的问题和解决过程
-
问题1:
- 在启动模拟器时报错“To run in GUI mode, you must recompile with the HAS_GUI constant defined.”
-
问题1解决方案:
- 这是因为里边的Makefile文件没有更改好,按照如图进行修改即可
-
问题2:
- 在make时出现对'matherr'未定义引用问题
-
问题2解决方案:
- 参考了Y86-64模拟器的安装与出现对'matherr'未定义引用问题的解决,我们需将seq文件夹下的ssim.c与pipe文件夹下的psim.c中的matherr语句注释掉,总共有两行
- 值得一提的是,如果直接在vim模式下进行查找关键词 matherr ,是查找不到的(至少我这样做是没有成功)。所以我们可以直接将需要修改的C程序打开,再查找关键词即可
-
代码托管
上周考试错题总结
无
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 53/53 | 1/1 | 20/20 | |
第二周 | 200/253 | 2/3 | 21/20 | |
第三周 | 100/353 | 1/4 | 30/50 | |
第四周 | 200/553 | 1/5 | 15/65 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件 软件工程师能力自我评价表)
参考资料
- 《深入理解计算机系统》
- Y86-64模拟器的安装与出现对'matherr'未定义引用问题的解决