引言

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