我发现Linux和GNU Binutils在ELF标头中定义了一个特殊的机器类型EM_SPARC32PLUS
。为什么需要它?什么使SPARC V8 +特别无法使用EM_SPARC
?
我认为新机器类型应该有一个重要原因,因为它会破坏与旧程序的兼容性,而且所有其他架构都倾向于尽可能长时间地使用旧机器类型。
答案 0 :(得分:2)
从elf-em.h
开始,我们看到以下(挑选出来的)条目:
#define EM_SPARC 2
#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */
#define EM_SPARCV9 43 /* SPARC v9 64-bit */
一些谷歌搜索引导我进入this reference page的Sun Studio 12,其中说:
了v8plus
编译SPARC-V9 ISA的V8plus版本。根据定义,V8plus意味着V9 ISA,但仅限于V8plus ISA规范定义的32位子集,没有可视指令集(VIS),也没有其他特定于实现的ISA扩展。
此选项使编译器能够在V8plus ISA上生成良好性能的代码。
生成的目标代码采用SPARC-V8 + ELF32格式,仅在Solaris UltraSPARC环境中执行 - 它不能在V7或V8处理器上运行。
示例:任何基于UltraSPARC芯片架构的系统
它似乎基本上是UltraSPARC的V9架构的32位版本。
另见: