简介¶
此目录包含 NetWinder 浮点仿真器的 0.92 测试版本。
大部分代码由我 Scott Bambrough 编写。它使用 C 语言编写,并在需要时使用少量内联汇编程序例程。它的编写速度很快,目标是实现编译器发出的所有浮点指令的有效版本作为第一个目标。我尝试尽可能地优化,但仍有很大的改进空间。
我试图使仿真器尽可能地可移植。其中一个问题是内核符号上的前导下划线。Elf 内核没有前导下划线,a.out 编译的内核有。我尝试在可能重要的任何地方使用 C_SYMBOL_NAME 宏。
我做的另一个选择是在文件结构中。我尝试将所有操作系统特定的代码包含在一个模块 (fpmodule.*) 中。所有其他文件都包含仿真器特定的代码。这应该允许其他人相对容易地将仿真器移植到例如 NetBSD。
浮点运算基于 John Hauser 的 SoftFloat Release 2。SoftFloat 是符合 IEC/IEEE 二进制浮点算术标准的浮点软件实现。支持多达四种格式:单精度、双精度、扩展双精度和四精度。实现了标准要求的所有操作,除了与十进制之间的转换。我们只使用单精度、双精度和扩展双精度格式。SoftFloat 到 ARM 的移植由 Phil Blundell 完成,基于 Neil Carson 为 NetBSD/arm32 早期移植的 SoftFloat 版本 1。
文件 README.FPE 包含对仿真器中迄今为止已实现内容的描述。文件 TODO 包含有关仍需完成的工作以及仿真器的其他想法的信息。
错误报告、意见和建议应直接发送给我,地址是 <scottb@netwinder.org>。 “当安装您的仿真器时,此程序无法正常工作”的一般报告对于确定仍然存在错误很有用;但在尝试隔离问题时几乎毫无用处。请报告它们,但不要期望快速行动。错误仍然存在。问题仍然在于隔离哪个指令包含错误。说明特定问题的小程序是天赐之物。
法律声明¶
NetWinder 浮点仿真器是免费软件。Rebel.com 编写的所有内容均根据 GNU GPL 提供。有关复制条件,请参阅文件 COPYING。以上内容不包括 SoftFloat 代码。下面包含 John Hauser 的 SoftFloat 法律声明。
SoftFloat 法律声明
SoftFloat 由 John R. Hauser 编写。这项工作的部分成果得益于位于加利福尼亚州伯克利中心街 1947 号 600 室的国际计算机科学研究所。资金部分由国家科学基金会根据赠款 MIP-9311980 提供。此代码的原始版本是与加州大学伯克利分校合作构建定点矢量处理器项目的一部分,由 Nelson Morgan 教授和 John Wawrzynek 教授监督。
本软件按“原样”免费分发。尽管已经做出了合理的努力来避免这种情况,但本软件可能包含有时会导致不正确行为的错误。本软件的使用仅限于能够并且愿意对其使用引起的任何和所有损失、成本或其他问题承担全部责任的个人和组织。-------------------------------------------------- -----------------------------