【问题标题】:what is the major difference between x86 and x386 registersx86 和 x386 寄存器之间的主要区别是什么
【发布时间】:2016-06-01 04:08:31
【问题描述】:

我正在学习英特尔微处理器课程,并阅读有关微处理器和寄存器的信息,我对微处理器之间的寄存器差异感到困惑。

例如,我知道 x86 有 8 个通用寄存器,而 x386DX 一共有 16 个寄存器。

除了寄存器的数量之外,这两种微处理器寄存器的主要区别是什么?

【问题讨论】:

  • "x386DX" 不是一个东西。你是说80386DX吗? (en.wikipedia.org/wiki/Intel_80386#80386DX) 第一代 32 位 CPU 之一?为什么只计算“x86”的 GP 寄存器,而计算 386DX 的所有寄存器(包括段寄存器、EFLAGS 和 EIP)? FPU 对于 386DX 是外部的(与 486DX 不同),因此您无法计算 x87 堆栈寄存器。如果要计算非 GP 寄存器,为什么不计算控制寄存器呢? 386 为虚拟内存引入了一些新的。

标签: x86 intel cpu-registers microprocessors


【解决方案1】:

对路过的人稍作说明

x386 不是 CPU,而是UNIX 的旧窗口管理器。

x86 是从 8086i686 (P6) 的整个 CPU 范围内的 architecture,以及它们的所有克隆和继任者。

它还由x86_64 (AMD64) 扩展,这是AMD 的64 位版本Intel 的x86 架构。英特尔在自己的 CPU 中将这些扩展重新命名为 Intel64。不要与 IA-64 (Itanium) 混淆,后者根本不是带有 x86(或 x86_64)的 binary compatible

i386 是一代 x86 CPU。这是第一个实现IA-32 架构的x86 CPU。因此,它是一个 32 位 CPU,并且它具有使二进制文件不向后兼容的扩展,但它们可以在任何较新的 x86 CPU 上运行。即使在 x86_64 CPU 上也是如此。

因此,虽然为 8086 编译的二进制文件应该几乎可以在 x86 CPU 上运行,但如果操作系统支持,它们将无法利用所有改进和extensions

这是 i386 中最著名的architectural features 列表。

这里是registers(来自同一篇文章)。了解 16 位和 32 位的区别。

【讨论】:

  • i386 也用于 GNU/Linux 软件(例如 Linux uname -a 输出)作为 IA-32 的同义词,而不是 AMD64 / x86-64(英特尔有时将其称为 IA- 32e 以及 Intel64)。另外值得注意的是,在 Windows/MSVC 术语中,x86 特指 32 位代码,不包括 x86-64。其他人都知道 x86 确实包含向后兼容 8086 的所有内容,无论它是否在 x86-64 长模式下运行。
  • 这个问题确实提到了 x386DX,所以他们可能在谈论en.wikipedia.org/wiki/Intel_80386#80386DX。但这仍然是一个完全不清楚的问题,因为 x86 不涉及任何特定的 ISA 迭代。
【解决方案2】:

我认为另一个区别可能是 x86 包含一个 16 位 FLAGS 寄存器,而 x386 包含一个 32 位扩展 EFLAGS 寄存器。

FLAGS 指示微处理器的状态及其操作。

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 2015-08-22
    • 2015-08-06
    • 2011-03-06
    • 2013-12-23
    • 2017-04-28
    • 2011-04-14
    • 2010-09-17
    • 2021-11-30
    相关资源
    最近更新 更多