了解到这个南大的这个实验不错,记录一下自己的进度,也给后来者一些参考。

1.相关资料

PA项目官方地址:https://nju-projectn.github.io/ics-pa-gitbook/ics2010/

tmux使用方法:http://www.ruanyifeng.com/blog/2019/10/tmux.html

vim学习游戏:

http://vim-adventures.com/

Linux教程:

https://nju-projectn.github.io/ics-pa-gitbook/ics2019/linux.html#%E6%8E%A2%E7%B4%A2%E5%91%BD%E4%BB%A4%E8%A1%8C

Linux26个命令:https://linux.cn/article-6160-1.html

man入门教程:https://nju-projectn.github.io/ics-pa-gitbook/ics2019/man.html

GDB入门教程:https://www.cprogramming.com/gdb.html

作为一个对linux几乎没有接触的人来说,这一部分完成需要花费的时间比较多,对于官方给出的手册尽量一步一步完成,不要跳过,不然后面还要掉过头来学。

2.遇到的问题解决办法

(1)环境问题:官方推荐在真机上安装debain,作为一个linux菜鸟,没有勇气尝试,我选择了VMware Workstation和Ubuntu20.04。建议可以选择版本稍微低一些的Ubuntu版本,如Ubuntu18.04。因为20.04这个版本比较大,对性能要求高一些,开始分配了2GB的内存和20GB的虚拟硬盘,有些卡顿。

(2)官方文档在Getting Source Code for PAs这一步中,提到了ubuntu18.04可能会遇到的kvm编译错误并给出了解决方案。

在我的Ubuntu20.04系统中也遇到了这一问题,在尝试了官方给出的解决方法后,问题仍然存在。

错误提示如下:Building x86-nemu-interpreter

Makefile:51: *** invalid DIFF. Supported: qemu kvm nemu. Stop.

根据给出的错误提示信息,查看Makefile文件51的内容发现,发现是因为一个else条件中抛出了一个错误。37 ifeq ($(DIFF),qemu)

38 DIFF_REF_PATH = $(NEMU_HOME)/tools/qemu-diff

39 DIFF_REF_SO = $(DIFF_REF_PATH)/build/$(ISA)-qemu-so

40 CFLAGS += -D__DIFF_REF_QEMU__

41 else ifeq ($(DIFF),kvm)

42 DIFF_REF_PATH = $(NEMU_HOME)/tools/kvm-diff

43 DIFF_REF_SO = $(DIFF_REF_PATH)/build/$(ISA)-kvm-so

44 CFLAGS += -D__DIFF_REF_KVM__

45 else ifeq ($(DIFF),nemu)

46 DIFF_REF_PATH = $(NEMU_HOME)

47 DIFF_REF_SO = $(DIFF_REF_PATH)/build/$(ISA)-nemu-interpreter-so

48 CFLAGS += -D__DIFF_REF_NEMU__

49 MKFLAGS = ISA=$(ISA) SHARE=1 ENGINE=interpreter

50 else

51 $(error invalid DIFF. Supported: qemu kvm nemu)

52 endif

再通过查看之前的代码,发现ifeq($(DIFF),qemu)中的条件总会成立,因此后面的else if和else应该没有必要,所以就简单粗暴,将后面的else if 和else都注释掉。。

修改如下:37 #ifeq ($(DIFF),qemu)

38 DIFF_REF_PATH = $(NEMU_HOME)/tools/qemu-diff

39 DIFF_REF_SO = $(DIFF_REF_PATH)/build/$(ISA)-qemu-so

40 CFLAGS += -D__DIFF_REF_QEMU__

41 #else ifeq ($(DIFF),kvm)

42 #DIFF_REF_PATH = $(NEMU_HOME)/tools/kvm-diff

43 #DIFF_REF_SO = $(DIFF_REF_PATH)/build/$(ISA)-kvm-so

44 #CFLAGS += -D__DIFF_REF_KVM__

45 #else ifeq ($(DIFF),nemu)

46 #DIFF_REF_PATH = $(NEMU_HOME)

47 #DIFF_REF_SO = $(DIFF_REF_PATH)/build/$(ISA)-nemu-interpreter-so

48 #CFLAGS += -D__DIFF_REF_NEMU__

49 #MKFLAGS = ISA=$(ISA) SHARE=1 ENGINE=interpreter

50 #else

51 #$(error invalid DIFF. Supported: qemu kvm nemu)

52 #endif

3.总结

(1)作为Linux菜鸟,这一部分比较费时,但是收获很多,尤其是熟悉了vim的操作之后,vim编辑器之神的称号名不虚传。

(2)STFW,STFM,RTFSC。个人搜索的能力很重要,读源码的能力也很重要。

ics计算机基础,南大计算机系统基础实验 ics2020,pa0相关推荐

  1. 南大计算机系统基础实验 ics2020,pa0

    文章目录 **1.相关资料** **2.遇到的问题解决办法** (1)环境问题: (2)官方文档 **3.总结** 1.相关资料 PA项目官方地址:https://nju-projectn.githu ...

  2. 计算机AL教程笔记,计算机系统基础学习笔记(2)-数据的位运算操作

    C语言的位运算操作包括两类,逻辑运算操作和逻辑移位操作. 逻辑运算操作 C语言提供了四种按位逻辑操作符,分别是按位取反,按位与,按位或,按位异或.在编译时,编译器会根据操作数的宽度分别转换为不同的指令 ...

  3. 计算机系统基础书籍读后感,计算机系统基础试题.doc

    文档介绍: 第一部分计算机系统基础一.选择题[1]计算机最主要的工作特点是 A)高速度B)高精度C)存记忆能力★D)存储程序与自动控制[2]目前微型计算机中采用的逻辑元件是 A)小规模集成电路 B)中 ...

  4. 计算机系统基础期中考试,计算机系统基础第二次作业.docx

    文档介绍: 计算机系统基础第二次作业3.对于以下AT&T格式汇编指令,根据操作数的长度确定对应指令助记符中的长度后缀,并说明每个操作数的寻址方式.(1)mov8(%ebp,%ebx,4),%a ...

  5. 南京大学计算机课程表,南大课表新鲜出炉,哪个专业课程最多?

    原标题:南大课表新鲜出炉,哪个专业课程最多? 考试周就这么残忍的来了 感谢你百忙之中还能抽空看看团子的推送 放心 今天的推送一定不会让你失望 因为你可能会绝望.. 下学期课表来啦 下学期课表来啦 下学 ...

  6. 华东师大计算机、南大软件、国防科大智能夏令营面经

    南京大学软件学院夏令营面经+真题 下面我直接进行正题,想了解我情况的可以去看我上一篇博客. 经历 南大软件学院的总流程是:面试+机试 上机考试时系统只支持编程语言:C++,Java.而且是2选1,用j ...

  7. Python基础与大数据应用实验——个人所得税计算

    一.实验内容 设计个人所得税计算器,要求当劳资人员输入员工姓名和应纳税收入后,能够自动计算出该员工当月应交的个税. 计算公式:应纳个人所得税税额=应纳税所得额*适用税率-速算扣除数 二.实验目的 通过 ...

  8. Python基础与大数据应用实验——水仙花数

    一.实验内容 水仙花数(Narcissistic Number)也被称为超完全数字不变数.自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数.水仙花数是指一个3位数,它的每个位上数字的3次幂之和等于它本身. 二 ...

  9. 南大计算机系统实验PA0 Compiling and Running NEMU报错解决方法

    根据pa0的指引,在pa0下第一次运行make menuconfig时,系统会作出如下回应 /home/lee/Desktop/ysyx-workbench/nemu/scripts/config.m ...

最新文章

  1. UVA 11478 Halum (差分约束)
  2. modelling notes and trails
  3. juniper srx解决内网不能telnet公网IP的方法
  4. Maven配置、使用
  5. docker 安装 MySQL 8,并减少内存占用 记录
  6. 微信小程序 云函数 Date时间不对+8小时 设置北京时间
  7. Elasticsearch常用搜索和分词器
  8. 基于python SMTP实现自动发送邮件教程解析
  9. rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
  10. [1164]python用numpy计算均值,方差,标准差
  11. 深度学习自学第四周:近几年的经典神经网络结构
  12. 为元宇宙提供动力的关键技术驱动力
  13. horizon流程图_致同Horizon审计方法论.pdf
  14. hp打印机_smart tank 510 series
  15. Vivado Turtorial 01 —— 使用vivado中debug功能(类似ISE中ChipScope)
  16. (others)PPOE的疑惑
  17. 关于CKCsec安全研究院
  18. loki使用超详细说明
  19. 小伙用C++技术实现3D俄罗斯方块游戏,3D元素让人耳目一新
  20. 火狐FireFox兼容mouseover,mouseout的解决方案

热门文章

  1. JZ38 字符串的排列
  2. 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
  3. CSS-7-美化网页元素
  4. 文智背后的奥秘系列篇——情感分类
  5. python基础项目实战-简易文本编辑器
  6. c语言比matlab慢很多,为什么我的Python脚本与Matlab相比速度太慢?
  7. Google开放星空观测应用SkyMap源代码
  8. 11.2.5 云计算、大数据时代
  9. 税务总局:今年预计减税1.8万亿元!个体户能享受哪些税收优惠?
  10. 永远不要和沙雕一样的人去争论,争论最后你会发现你也是一个沙雕