如何使用Opcodes&操作数在CPU中定义?

时间:2017-07-29 09:22:11

标签: cpu hardware machine-code

在3天的时间里,我进行了广泛的搜索,所以我依靠你们帮助我休息一下。

为什么一个高位和低位的8位序列执行动作,而8位序列执行 动作。

我的直觉告诉我,CPU的电路硬连线一个二进制序列做一件事,另一个做另一件事。这意味着不同处理器的可能不同的芯片电路不能将一个特定的二进制序列定义为与另一个特定的二进制序列相同的动作吗?

这就是我们组装的原因吗?我需要有人确认和/或纠正我的假设!

1 个答案:

答案 0 :(得分:1)

操作码并不总是8位,但是,它在逻辑中被硬编码/接线以隔离操作码,然后根据该操作向您发送操作。考虑如何在指令集模拟器中执行此操作,为什么逻辑会有所不同?逻辑比软件语言简单,没有魔力。 ONE,ZERO,AND,或者,并不是那么复杂。

如果我获得了一个指令集文档并且给了一个指令集文档并告诉他创建一个处理器或编写指令集模拟器,那么沿着同样的路线。我们会生成完全相同的代码吗?即使变量名称不同?不。理想情况下,我们将拥有功能相同的程序,它们都会解析指令并执行它。逻辑并没有什么不同你给两个工程师提供规格,你可能会得到两个功能相同的处理器,一个可能表现更好,等等。看看长期运行的处理器系列,特别是x86,他们重新发明了每一对 - 三年是与传统指令兼容的指令集,有时添加新指令。对于ARM和其他人也一样。

有不同的指令集ARM不同于x86与MIPS不同,你在指令中检查的操作码和/或位有所不同,因为这些都不能简单地看一下8位,每个都有一些位然后如果这还不足以唯一地标识指令/操作,那么您需要检查更多位,其中这些位是规则对于每个体系结构非常具体。否则,如果它们是相同的,那么为它们设置不同的名称将是什么意思。

而且这些信息在那里你只是没有找到正确的地方,有无数的关于这个主题的开放式在线课程,谷歌的书应该打到一些页面,以及你可以看到的无数开源处理器核心和无数带源代码的指令集模拟器。