FPSCR 处理指令
表 8 列出了基本的 PowerPC FPSCR 处理指令集。 表 8. PowerPC FPSCR 处理指令集
助记符指令名mcrfsmove to CR from FPSCRmffs[.]move from FPSCRmtfsb0[.]move to FPSCR bit 0mtfsb1[.]move to FPSCR bit 1mtfsf[.]move to FPSCR fieldmtfsfi[.]move to FPSCR field immediate
加载和存储指令
所有加载和存储指令的执行都使用 GPR 或者 GPR 和指令中的立即字段作为存储器访问的地址说明符。用指令生成的数据有效地址来更新基址寄存器(也就是 RA)是大部分加载和存储指令的一个可选项。
有用于以下方面的指令:
尽可能使用 C 代码。
当今的 C 编译器在很多情况下可以生成与直接手写的汇编代码在性能上相当的代码。作为 Book I 代码,C 代码将保证代码的兼容性。
尽可能避免使用处理器相关的汇编指令。
尽量不要在 C 中嵌入处理器相关的汇编指令,因为它们将更难被发现。分离开那些已知会包含设备相关寄存器或指令的代码。这些通常是启动次序和设备驱动程序,不过也可能包括浮点代码(包括 long long 类型)。保持假定和依赖全部归档。
使用处理器版本寄存器(PVR),但只在适当的时候用。
跨差别较小的实现的通用代码还好,PVR 可以用于做出判断。但是,在需要进行较大修改的情况下(例如,PowerPC AS 相对于 Book E MMU 代码),建议使用单独的代码库(code base)。
结束语
PowerPC AS 和 PowerPC 都支持最初的 PowerPC 体系结构中定义的应用级基础设施,同时为它们的具体目标市场提供了最佳的优化。
就其两种操作模式之一而言,PowerPC AS 实质上与最初的 PowerPC 相同,而 PowerPC Book E 在它的 Book III 级别的定义中,已经走向了不同的方向,为低价格、低功率以及体系结构灵活的嵌入式应用进行了最优化。当然,在 32 位的实现上还不能用双字整数指令,在大部分嵌入式实现中浮点指令也只是通过软件仿真提供支持。
不过,这对应用程序二进制在 PowerPC 体系结构家族树的分支中自由地迁移来说是一个非常有意义的机会。