【问题标题】:Assembly language instructions implementation汇编语言指令实现
【发布时间】:2012-01-23 17:51:15
【问题描述】:

是否有一些信息源或技术草案(如网络 RFC 之类)描述特定指令的实现(例如 movjmpjejleinc,...) Intel架构?

wikipedia 上有一些一般性的谈话,但我想完全了解幕后发生的事情。

谢谢

【问题讨论】:

  • scs.stanford.edu/nyu/04fa/lab/i386/c17.htm 是您从英特尔获得的东西的味道(不如其他供应商文档好)。您可以查看github.com/dwelch67/pcemu_samples 或许多 x86 指令集模拟器中的任何一个,它们可能会或可能不会更清楚地描绘每条指令的工作原理。 x86 已被微编码,因此“底层”因芯片而异,并且可能没有很好地公开记录。
  • Dwelch 是正确的。不同系列的处理器有替代方法,它们在物理上“翻转位”,您使用的指令集实际上是另一种抽象,它被转换为二进制(您可能已经猜到了),然后最终转换为特定的晶体管方法。
  • 如果您想更深入,我还有其他一些 SO 答案,它们通常可以针对不同的事情做到这一点。更好的是去 opencores.org 并找到一个核心并使用它。或者 xmos.com 并获取他们的开发人员包,它有一个信号电平模拟,您可以在其中至少看到一些发生的事情(主要是外层、外部引脚,他们的 sim 确实对内部保密)。我也有我自己的玩具/教育处理器,你可以模拟和查看github.com/lsasim。可能有一些 x86 克隆可以检查,也许不是
  • 如果你想获得比逻辑信号更低的门本身,那就是另一回事了,就像 C 程序可以为许多不同的处理器和操作系统编译并且仍然可以工作一样,逻辑信号可以用许多不同的库来实现,用于从可编程器件 cpld、fpgas 到 asics 的许多不同目标,并且对于每个 asic,都有晶圆厂、库、技术等,每个都在晶体管级别构建不同的解决方案。将它们中的每一个都视为具有不同的汇编语言来实现相同的逻辑。
  • 也明白,即使您在 opencores 上找到模仿已知处理器 x86 或其他处理器的东西。这与该供应商使用的逻辑不同。如果你给 20 个人分配一个编程任务,你可能会得到多达 20 个不同的解决方案来执行指定的任务。同样在这里,开源作者创建了一个解决方案,如果它太接近实际逻辑,公司可能会关闭它。英特尔至少有两个团队每次都跨越不同的化身,并制作自己的。引擎盖下没有一个 x86 实现

标签: assembly instructions instruction-set


【解决方案1】:

它们通常是用微代码实现的,您可以阅读here,它主要取决于您正在研究的处理器类型(嵌入式、多核、节能等),英特尔有一些架构设计细节here(其余手册还有各种更小的细节)。

它现在有点老派了,但您也应该会发现 this 有用且有趣,它详细介绍了 Pentium 4 系列处理器的深度设计,包括指令集实现。

【讨论】:

  • 是的,这就是我要找的。但是有比微码(电路中的物理信号)更深的层次吗?每条指令都不是必需的,很少有足够的感觉我可以看得更深。
  • @xralf:听起来你在 EE 上会做得更好:electronics.stackexchange.com/search?q=cpu+design 他们涵盖了此类事情的硬件实现。
  • 谢谢你,很棒的提示,我可以深入那里。
【解决方案2】:

随着时间的推移,许多(大多数?)指令的实现发生了显着的变化。您可以查看(例如)Agner Fog's web site 以获取一些信息,但请注意:

  1. 其中很多至少是部分猜测
  2. 其中一些显然已经过时了
  3. 其中一些因当前处理器而异(尤其是 Intel 与 AMD)。

【讨论】:

  • 能否请您指导我对该链接的一些特定实现?
  • @xralf:不,不完全是。它的一些部分讨论了实现细节,但如果(例如)你想知道一个特定实现的所有细节,你可能不走运。有关特定实现的完整详细信息,您可以查看 Zet,但除非您了解 Verilog,否则您可能会发现它很繁重——而且它仍然是独立于 Intel 或 AMD 的实现。
【解决方案3】:

您可以从 Intel here 下载 x86 手册。

【讨论】:

  • 您能告诉我在哪里可以找到该手册中jle 指令的实现吗?我现在不确定它是否是我正在寻找的东西,是否有助于理解它的工作原理。
  • 在那些文档中有几个地方定义和解释了条件跳转指令,我不太确定你在找什么,所以我很难说。条件跳转指令的基本描述在第 7.3.8.2 节中,尽管似乎还有许多其他地方讨论了它们(例如第 2014 页)。如果您在文档中搜索“跳转”,您就会明白我的意思。
  • 谢谢,它很有用,但我在等待更易读的东西(例如,一些电路图片)。 Necrolis 告诉我,我可以在电子 SE 上询问以获取此信息。这对我也有好处,但只是故事的一部分。
  • @xralf - 最新的芯片包含十亿个晶体管。我认为他们不会详细告诉我们他们是如何组装的!
猜你喜欢
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
相关资源
最近更新 更多