PA 代码+笔记

本文详细介绍了PA1实验过程,包括NEMU虚拟机的使用,遇到的寄存器结构体修改问题及解决办法,以及如何在NEMU中模拟执行程序。讲解了从main函数开始执行、opcode_table数组和函数指针、程序结束指示、命令解析等关键点,并展示了寄存器和内存扫描的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果有什么地方有误 请多多指教;

写这个不是让同学们直接抄的,请弄懂原理哦,我觉得我解释的蛮清楚了。

遇到了问题也可以评论留言或者私信我;需要具体代码和思路的见评论

 

 

                          

1 PA1 – 开天辟地的篇章:最简单的计算机

1.1 在开始愉快的PA之旅之前

 

讲义中提到使用union,前面知道CPU的寄存器是公用内存的,所以把gpr[8]结构体改成了union,但是实验报错,然后继续改,看到下面的eax,ecx之类的寄存器,于是在外面又套了一个union,但是还是报错,后来在网上搜,看到简书上面有一个解答,就是在eax,ecx之类的寄存器外面套一个struct,尝试之后成功了,但是原理不知道。

 

修改后的结构体:

进入nemu

 

cmd_c()函数中调用cpu_exec()传入参数-1,根据讲义,我在cpu_exec()看到如下:

 

  1. 建一个commit,恢复master暂存区文件到工作区,将pa0合并到当前分支,新建一个分支pa1。
  2. 配置X Servier。安装结束后为SSH打开X11转发功能(每次);
  3. 虽然显示有error,但是马里奥可以玩。
  4. NEMU是什么?
  5. NEMU是一个虚拟出来的计算机系统,通过程序实现物理计算机的基本功能。

    2)初识虚拟

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值