基本上,我想知道什么是 ARM 模拟器?它类似于汇编语言模拟器吗?如果是这样,与 Verilog 模拟器相比有什么区别?
1 回答
您的问题非常广泛/模糊。但这里有。
从您所要求的上下文来看,手臂模拟器可能是指令集模拟器。就像处理器一样的软件解码指令,跟踪寄存器并模拟执行(如果指令说将 1 添加到 r1,那么您在软件中有一个表示 r1 的变量,然后您将其添加到它)。
verilog 模拟器,实际上并没有什么不同,只是一种不同的语言。verilog 是一种硬件设计语言,在你模拟它之前你需要编译它。就像任何其他高级语言一样,它需要被编译成与目标相关的东西。模拟器将有自己的目标逻辑块。verilog 被编译成这些块,然后模拟逻辑,与 arm 模拟器不同。对于每个时钟周期,您根据前一个周期的连接模块的输出更新每个逻辑元素的输入,然后评估每个逻辑元素并确定输出。永远重复。对于每个 verilog 模拟器,您的核心都有不同的目标,这也是您(可以)从每个模拟器中为相同代码获得不同结果的部分原因。同样,当您为实际目标、fpga、asic 等进行编译时,
这些模拟器都没有魔法,指令集模拟器通常很容易编写,对于任何想要深入了解指令集或计算机如何工作的人来说都是一项值得的任务(从像 lc- 这样的小东西开始3、应该不到半小时)。一个 FAST 模拟器,那是另一回事,但一个 FUNCTIONAL 模拟器相当容易编写。一旦编译成简单逻辑组件的网表,verilog 模拟器可能很容易,但最大的任务是评估和解析代码以获取信号和逻辑功能列表以及谁与什么相关联的信号和项目的数量. 不像指令集模拟器那么简单,但是很容易理解它的工作原理和任务是什么...... Verilator 非常酷,因为它将它变成了 C++ 代码行,很多行,一个好的项目即使在一台尖叫的机器上也可能需要数小时到数天才能编译。(提示关闭波形以缩短编译时间)。但是,当您查看正在发生的事情时,这项任务是可以理解的。