CPU 中的操作码和操作数是如何定义的?
How are Opcodes & Operands Defined in a CPU?
广泛的搜索让我在 3 天的过程中陷入困境,所以我依靠你们帮助我休息一下。
为什么一个高位和低位的 8 位序列执行 this 操作,而 8 位序列执行 that 操作。
我的直觉告诉我 CPU 的电路 硬连线 一个二进制序列做一件事,另一个做另一件事。这意味着具有可能不同芯片电路的不同处理器不会将一个特定的二进制序列定义为与另一个相同的动作?
这就是我们组装的原因吗?我需要有人确认 and/or 纠正我的假设!
操作码并不总是 8 位,但是是的,在逻辑上 hardcoded/wired 隔离操作码,然后根据它向您发送一个操作过程。想一想您将如何在指令集模拟器中执行此操作,为什么逻辑会有所不同?逻辑比软件语言简单,那里没有魔法。一、零、与、或,不是那么复杂。
同理,如果我得到了一个指令集文档,而你也得到了一个指令集文档,并被告知要创建一个处理器或编写一个指令集模拟器。我们会生成完全相同的代码吗?即使变量名不同?不。理想情况下,我们会有功能相同的程序,它们都解析指令并执行指令。逻辑没有什么不同,您将规范交给两名工程师,您可能会得到两个功能相同的不同处理器,一个可能性能更好,等等。看看长 运行 处理器系列,特别是 x86,他们重新发明每隔三年,指令集就会与旧指令兼容,同时有时会添加新指令。 ARM 和其他公司也一样。
并且有不同的指令集 ARM 不同于 x86 不同于 MIPS,您在指令中检查的操作码 and/or 位各不相同,其中 none 您可以简单地查看 8位,每个位都有一些位,如果这不足以唯一标识 instruction/operation,那么您需要检查更多位,其中这些位是每个体系结构非常特定的规则。否则,如果它们相同,为它们起不同的名字又有什么意义呢。
这些信息就在那里,你只是没找对地方,有无数关于这个主题的在线公开课程,google 应该在某些页面上出现的书籍,以及开源处理器内核你可以看看无数的指令集模拟器和源代码。
广泛的搜索让我在 3 天的过程中陷入困境,所以我依靠你们帮助我休息一下。
为什么一个高位和低位的 8 位序列执行 this 操作,而 8 位序列执行 that 操作。
我的直觉告诉我 CPU 的电路 硬连线 一个二进制序列做一件事,另一个做另一件事。这意味着具有可能不同芯片电路的不同处理器不会将一个特定的二进制序列定义为与另一个相同的动作?
这就是我们组装的原因吗?我需要有人确认 and/or 纠正我的假设!
操作码并不总是 8 位,但是是的,在逻辑上 hardcoded/wired 隔离操作码,然后根据它向您发送一个操作过程。想一想您将如何在指令集模拟器中执行此操作,为什么逻辑会有所不同?逻辑比软件语言简单,那里没有魔法。一、零、与、或,不是那么复杂。
同理,如果我得到了一个指令集文档,而你也得到了一个指令集文档,并被告知要创建一个处理器或编写一个指令集模拟器。我们会生成完全相同的代码吗?即使变量名不同?不。理想情况下,我们会有功能相同的程序,它们都解析指令并执行指令。逻辑没有什么不同,您将规范交给两名工程师,您可能会得到两个功能相同的不同处理器,一个可能性能更好,等等。看看长 运行 处理器系列,特别是 x86,他们重新发明每隔三年,指令集就会与旧指令兼容,同时有时会添加新指令。 ARM 和其他公司也一样。
并且有不同的指令集 ARM 不同于 x86 不同于 MIPS,您在指令中检查的操作码 and/or 位各不相同,其中 none 您可以简单地查看 8位,每个位都有一些位,如果这不足以唯一标识 instruction/operation,那么您需要检查更多位,其中这些位是每个体系结构非常特定的规则。否则,如果它们相同,为它们起不同的名字又有什么意义呢。
这些信息就在那里,你只是没找对地方,有无数关于这个主题的在线公开课程,google 应该在某些页面上出现的书籍,以及开源处理器内核你可以看看无数的指令集模拟器和源代码。