较低级别的汇编语言? (如何实现处理器指令?)

时间:2009-11-25 15:26:10

标签: assembly processors microcoding

因此,我们可以“编程”的最低级别是处理器上的单独指令,但这些指令必须首先以某种方式进行编程。处理器运行时,处理器如何知道该怎么做?

4 个答案:

答案 0 :(得分:3)

有用的文章:

http://www.gamezero.com/team-0/articles/math_magic/micro/如何设计一个简单的处理器...

本课程的讲义:http://www.stanford.edu/class/ee382/处理器设计

答案 1 :(得分:2)

你想要this book

答案 2 :(得分:1)

它被称为“微代码”(或者至少就是我在15年前看到它们时的调用方式)。

处理器中的不同硬件功能引擎与“微代码”软件协调:获取,解码“机器代码”,执行等。

答案 3 :(得分:1)

用简单的术语思考旧处理器会这样做:

如果查看大多数处理器的指令位,您将开始看到模式。一些位定义了一个输入寄存器,一些位可能定义另一个输入寄存器,一些位可能定义结果寄存器,一些位定义操作。因此,硬件的某些部分会查看定义操作数a的位,并使用它来将操作数a连接到alu,其他硬件使用操作数b位将操作数b路由到alu上的b输入。其他位选择alu应该执行的操作,add,和,或xor等。最后,结果位将alu的输出路由到保存结果的寄存器。有点简单但同时与逻辑编写方式以及传统处理器和许多较小的处理器的运行方式相差甚远。这实际上是最早的计算机操作的方式,并且“编程”它们涉及将来自这个alu的答案路由到该alu的输入以及来自另一个的输入,直到结果出现在你正在寻找的结尾。 / p>

一些较大的现代处理器是微编码的,意味着里面实际上有另一层指令,你的c = a + b操作可能变成一系列微编码指令,当你的机器指令进入时它们会启动,这些将会帮助执行输入到加法器逻辑的路由,并将结果返回到输出类型的事物。

现在的逻辑是使用verilog和vhdl等编程语言实现的,这些编程语言与现有的软件编程语言非常接近。区别在于“代码”中的许多行同时执行,不一定按照正常软件的顺序执行。鉴于一些写得很好的hdl,不难发现语言并了解正在发生的事情。您可能想查看opencores.org并获取众多处理器克隆之一的源代码。用于hdl的编译器工具与用于软件的编译器工具相差不远,而不是将代码归结为逻辑或门的指令,这个位与该位相关,这个位与该位有关。可以在逻辑中轻松实现并连接在一起的模块。就像你可以使用C程序并在许多处理器和操作系统上运行它一样,你可以使用hdl并将其编译为不同fpgas的门类型或不同代工厂的逻辑模块。