简介

此目录包含 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>。 “当安装您的仿真器时,此程序无法正常工作”的一般报告对于确定仍然存在错误很有用;但在尝试隔离问题时几乎毫无用处。请报告它们,但不要期望快速行动。错误仍然存在。问题仍然在于隔离哪个指令包含错误。说明特定问题的小程序是天赐之物。