我想研究和比较elf、SPARC和PA-RISC的可执行文件结构。
为了进行研究,我想在 Intel 机器 (Core2Duo) 上安装 OpenSolaris。但我有一个基本的疑问,它会起作用吗?
我知道 SPARC 有自己的程序集 - 越来越怀疑它是否会起作用或是否有效。
我的目标是编写一些反汇编程序,并借助一些工具研究文件结构。
我不知道如何为 HP-UX (PA-RISC) 执行所有这些操作;不知道 PA-RISC 的任何免费操作系统。
您将无法在英特尔处理器上运行Sparc 或 PA-RISC 可执行文件。但是,如果您只想分析这些可执行文件的结构,那么您需要的只是合适的开发工具。
我没有检查过,但我怀疑 OpenSolaris 附带了能够开箱即用地分析 Solaris/sparc 可执行文件的开发工具。但即使是其他工具链也可以做到这一点。例如,GNU binutils(特别是他们使用的BFD 库)支持许多架构,包括 Sparc 和 PA-RISC。(如果您使用 GNU binutils,请确保获得完整版本,可能标记为“用于交叉编译”,例如binutils-multiarch
在Debian或Ubuntu上)
SPARC:
我从来没有在任何东西上安装过 OpenSolaris。您可能会考虑尝试 NetBSD:它运行 SPARC 机器至少和 Solaris 一样,而且它使用 ELF 格式的可执行文件。源代码也可以免费学习。
您将需要了解 ELF 文件格式。我不记得在我想了解 ELF 的日子里有什么特别的文档,而且看起来 Google 可以提供大量解释 ELF 的网站。我对 ELF 的建议是编写一个程序来读取 ELF 标头,然后以可读的文本格式将它们转储出来,即使已经存在许多这样的程序。
您还需要一个理解 ELF 的 SPARC 反汇编程序。我很久以前写过一篇,今天可能会很好用。http://www.stratigery.com/elf_dis.tar.Z
您可以在此处下载有关 SPARC 的 PDF:http ://www.sparc.com/specificationsDocuments.html 我推荐 SPARC V8 和 V9 体系结构手册。
PA-RISC:
这是一个非常奇怪的架构,文档很少。我相信 PA-RISC 是 Apollo Computer 的 (RIP) RISC 架构,然后惠普在 1990 年或 1991 年收购了 Apollo。堆栈变小,堆变大,而其他所有东西都反过来。它也有一个段寄存器,但它的工作方式与 x86 分段不同。
惠普确实是唯一可以找到有关 PA-RISC 的地方。
有适用于Linux、NetBSD和OpenBSD的 PA-RISC 架构的端口。
您不能在 x86 系统上运行为 Sparc 或 PA-RISC 编译的代码,除非您使用完整的仿真器。Qemu可以模拟基于 Sparc 的机器,其精度足以在其上运行 Linux 操作系统(但它不会很快:Qemu 必须一个一个地解释所有 Sparc 操作码,这会产生很大的开销,因此快速的 PC 从2011 年可能会产生 1996 年以来 Sparc 工作站的性能)。有一个为 Qemu 添加 PA-RISC 支持的正在进行的项目,但它似乎还没有达到任何重要的可用性水平。