首页 > 其他分享 >PA2 - 简单复杂的机器: 冯诺依曼计算机系统

PA2 - 简单复杂的机器: 冯诺依曼计算机系统

时间:2024-04-10 20:05:12浏览次数:22  
标签:PA2 nemu 依曼 pc ISADecodeInfo inst 冯诺 isa vaddr

image

[いちご飴--放課後]

RTFSC(2)

exec_once()函数函数覆盖了指令周期的所有阶段: 取指, 译码, 执行, 更新PC

//nemu/src/isa/riscv32/inst.c
/*
 * 可以看到每一次我们都是从内存中取出32位(uint32_t)作为指令,然后也让我们的pc+4,因为我们的内存定义为uint8_t pmem[].
 */
int isa_exec_once(Decode *s) {
  s->isa.inst.val = inst_fetch(&s->snpc, 4);
  return decode_exec(s);
}

/**********************************************/

//nemu/include/cpu/ifetch.h
static inline uint32_t inst_fetch(vaddr_t *pc, int len) {
  uint32_t inst = vaddr_ifetch(*pc, len);
  (*pc) += len;
  return inst;
}

//nemu/src/memory/vaddr.c
word_t vaddr_ifetch(vaddr_t addr, int len) {
  return paddr_read(addr, len);
}

/**********************************************/

//nemu/include/cpu/decode.h
typedef struct Decode {
  vaddr_t pc;
  vaddr_t snpc; // static next pc
  vaddr_t dnpc; // dynamic next pc
  ISADecodeInfo isa; //还有一些信息是ISA相关的, NEMU用一个结构类型ISADecodeInfo来对这些信息进行抽象, 具体的定义在nemu/src/isa/$ISA/include/isa-def.h中.
  IFDEF(CONFIG_ITRACE, char logbuf[128]);
} Decode;

//nemu/include/isa.h
typedef concat(__GUEST_ISA__, _ISADecodeInfo) ISADecodeInfo;

//nemu/src/isa/riscv32/include/isa-def.h
// decode
typedef struct {
  union {
    uint32_t val;
  } inst;
} MUXDEF(CONFIG_RV64, riscv64_ISADecodeInfo, riscv32_ISADecodeInfo);

/**********************************************/

标签:PA2,nemu,依曼,pc,ISADecodeInfo,inst,冯诺,isa,vaddr
From: https://www.cnblogs.com/cilinmengye/p/18127248

相关文章

  • P9077 [PA2018] Poddrzewo 题解
    思考感觉题目有点迷惑的意思,要最小化操作\(1\)使用的次数,也就是要节约修改操作,让我们认为操作\(1\)是最有用的,其实只要稍微动动脑子想一想,删除操作才是最有用的,而交换操作根本没用。当将序列删除到只剩两个点时,就把两个点连上,度都为\(1\)。所以如果序列中\(1\)的数量超......
  • 计算机冯诺依曼体系结构
    文章目录前言一、冯诺依曼体系结构构成二、各硬件单元之间效率前言冯诺依曼体系结构是构成计算机的基本单元,是一个计算机架构,对于计算机来说冯诺依曼体系是基于计算机硬件的一套体系结构,现在的计算机都是遵循冯诺依曼体系结构建立设计的,冯诺依曼体系结构总的来说由......
  • SAP HCM PA20权限逻辑源代码分析
     今天遇到一个奇怪的问题,PA20的员工编号下面是空白,在信息类型文本中的信息类型后面都是绿色的沟。原来也遇到过类似的问题,但是尝试几次都没找到解决方案,但是点操作的时候,提示“至少一个记录已被跳过(授权)”,明显就是缺少权限,但是通过SU53去查询的时候不提示缺少权限。反......
  • P8386 [PA2021] Od deski do deski
    P8386[PA2021]Oddeskidodeski挺奇怪的一个转移式,还是套路看少了一开始想到的是分治,像卡特兰数那样求但是发现两端相同这个限制的去重不好处理,没法划分子问题就比如样例的\(4~2\),显然包含\(1~1~2~2\)这种情况当我们求\(6~2\)时,如果划分成\(4+......
  • 冯诺伊曼结构体系
    上图为简单冯诺依曼示意图冯诺依曼体系简单的可以分为五个板块分别为:1.输入设备 2.输出设备 3.存储器 4.运算器  5.控制器1.输入设备:简单的可以理解为鼠标跟键盘这一类可输入的设备2.输出设备:简单的可以理解为显示器跟耳机这一类作为输出设备3.存储器:作为冯诺依曼体......
  • [PA2011] Prime prime power
    分析注意到本题用到了常用的一个套路:对\(b\)是否大于\(2\)分类讨论。因为\(b>2\)也就是\(b\ge3\)时\(a\le10^6\),所以考虑把\(3\times10^6\)(因为有\(k\)的存在)前的质数筛出来,暴力找到\(a^b\)加入统计答案的set(\(2^{60}>10^{18}\),因此\(b\le59\))。接下来考虑\(b......
  • 洛谷 P5996 [PA2014] Muzeum
    洛谷传送门考虑最大权闭合子图,第\(i\)个手办建点\(i\),第\(i\)个警察建点\(i'\)。我们有一些边:\(\foralli,(S,i,v_i),(i',T,v_i)\),以及对于能看见第\(i\)个手办的第\(j\)个警察,有\((i,j',\infty)\)。手办的\(\sumv_i\)减去最小割(最大流)即为答案。考虑转换......
  • [PA2021] Wystawa
    [PA2021]Wystawa牛逼啊喔趣。题意给定长度为\(n\)的序列\(a,b\)。你需要构造一个序列\(c\),构造方法为:选择\(k\)个\(i\),令\(c_i\leftarrowa_i\)。对于其他\(i\),令\(c_i\leftarrowb_i\)。求序列\(c\)的最大子段和的最小值,并给出一种方案。Sol感觉最小......
  • P8386 [PA2021] Od deski do deski 题解
    显然是一道计数dp。dp状态应该是最难的一部分了,个人认为这种状态设计得比较巧妙。如果像我刚开始一样设\(dp_{i,j}\)表示序列中一共有\(i\)个数,序列最后一个数为\(j\)的合法方案数的话,那么方程就会变得很不好转移,因为我们不知道当前的\(j\)和之前的某些数能不能匹配上,......
  • [PA2021] Poborcy podatkowi
    令\(dp_{x,d}\)表示\(x\)子树内现在根结点上挂着的链的长度为\(d\)的最大收益,那么转移时只要考虑一个点的子节点如何进行合并,注意到只有\(1,3\)消,\(2,2\)消两种互消的\(\text{case}\),相当于转移相当于\(\text{fix}\)\(a-c=d_{1}(|d_{1}|\leqslant1)\)且\(b\)\(\te......