0

我正在运行基于 x86 的 Linux 虚拟机。我正在使用 RISC-V 编译器和仿真器进行交叉编译(目标:RISC-V)。我想知道 RISC-V 模拟器(C 文件)如何在没有真正 RISC-V cpu 的情况下模拟 RISC-V 指令。

4

1 回答 1

0

CPU 模拟器是一个程序,它将二进制可执行文件作为输入,并执行与本机 CPU 相同的步骤来执行它。在 RISC-V 的情况下,它获取程序计数器 (PC) 指向的内存,并根据 RISC-V 指令集规范对 32 位字进行解码。接下来,根据它是哪条指令(加载、存储、寄存器操作),它在软件中执行该操作,然后递增 PC(或设置它,如果指令是跳转或返回),并获取下一条要执行的指令。模拟 CPU 中的寄存器和内存只是模拟器中的 32 位(或 RISC-V 64 的 64 位)整数数组。

如果您对 CPU 的工作原理感到好奇,那么为 CPU 编写一个基本的模拟器是一项有趣(而且很有启发性!)的练习。您可以使用任何编程语言编写 CPU 模拟器。

于 2020-05-12T16:21:02.027 回答