【发布时间】:2014-05-07 00:04:20
【问题描述】:
我发现 Linux 和 GNU Binutils 在 ELF 标头中定义了一个特殊的机器类型 EM_SPARC32PLUS。为什么需要它?是什么让 SPARC V8+ 如此特别以至于不能使用EM_SPARC?
我认为新机器类型应该有一个重要原因,因为它破坏了与旧程序的兼容性,并且所有其他架构都倾向于尽可能长时间地使用旧机器类型。
【问题讨论】:
-
我会立即怀疑它是一个新的、非向后兼容的指令集。 x86 和 SPARC 的机器类型不同的原因相同。
-
来自维基百科,
SPARC Version 8 (V8), an enhanced SPARC architecture definition, was released in 1990. The main differences between V7 and V8 were the addition of integer multiply and divide instructions, and an upgrade from 80-bit "extended precision" floating-point arithmetic to 128-bit "quad-precision" arithmetic. SPARC V8 served as the basis for IEEE Standard 1754-1994, an IEEE standard for a 32-bit microprocessor architecture.。看起来不像是向后不兼容的修订版。 -
指的是
V8,而不是V8 plus。 -
对我来说,v8+(任何 UltraSPARC)都有全套原子操作(实际上是 CAS),而真正的 v8 芯片(1990 年代初的 SuperSparc/HyperSparc)只有有限的 24 位交换。所以,v8 和 v8+ 是不同的指令集,v8+ 有更多可用的指令。任何 v9 芯片都可以执行 v8 和 v8+ 代码,但古代 SS10 只能与真正的 v8 代码一起工作,而不能与 v8+ 一起工作。