【发布时间】:2012-01-23 17:51:15
【问题描述】:
是否有一些信息源或技术草案(如网络 RFC 之类)描述特定指令的实现(例如 mov、jmp、je、jle、inc,...) 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