首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

PowerPC 的仿真和交叉开发(2)

PowerPC 的仿真和交叉开发(2)

Hello, world至此,我们已经构建好了一个仿真器和一个交叉编译器,现在可以将它们汇总,测试一下这个新的环境。将下面的代码放到 hello.c 中:
清单 3:  一个既熟悉又陌生的程序#include <stdio.h>int main(int argc, char *argv[]){        printf("Hello, world.\n");        return 0;}
现在,使用静态链接,以免担心如何将 PowerPC 共享库安装到 x86 主机系统上。要产生一个名为 "hello" 的 32-位PowerPC ELF 可执行文件,则需要运行以下命令:
清单 4:  使用 GCC 进行交叉编译$ powerpc-750-unknown-gnu-gcc -static hello.c -o hello
为了检验它是否是预期的格式,可以使用以下命令:
清单 5:  检查文件类型$ file hellohello: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV),for GNU/Linux 2.4.3, statically linked, not stripped
最后,在 qemu 下运行这个可执行文件:
清单 5:  在 qemu 下运行可执行文件$ ./ppc-user/qemu-ppc hello
"Hello, world." 应该输出到终端。
回页首
现在打算做什么呢?现在您可以将 C 代码构建到 PowerPC 可执行文件中,并运行它们。而且还可以用 "Introduction to PowerPC Assembly"  这篇文章中给出的示例汇编例子做实验,这篇文章列在 参考资料 一节中。(注意,您可以直接使用交叉汇编器,不过继续使用该编译器要容易得多)。如果您对这种实验已经感到满足,那么可以将目光转移到更大、更有趣的也许还包括共享库的例子上(请参阅 qemu 文档以寻求帮助,这个文档也列在 参考资料 一节中)。
64-位 PowerPC虽然 crosstool 可以容易地产生 ppc64 toolchains,但还没有用于 64-位 PowerPC 的开源仿真器,因此您需要使用真正的硬件来做实验。当然,ppc32 可执行文件在 ppc64 硬件上同样运行得很好(但反之则不然)。
回页首
结束语仿真器不可能与本地硬件一样快。在硬件中实现这项功能的最大原因就是为了获得速度。仿真器不可能像真实硬件一样精确,尤其是当硬件本身包含由内部组件之间细微的定时交互所触发的勘误表(errata)时,仿真器更难像真实硬件那样精确。然而,仿真器对于开发乃至通常的计算都十分有价值。作为一种商业仿真器,虚拟 PC 被大量 Macintosh,® 所有者用于运行 Windows® 应用程序。它可能不如硬件那么快,但是它更便宜,更易于维护。在开发底层操作系统代码时,仿真器让开发人员可以洞察系统的状态,从而揭露对硬件有害的 bug。实际上,在硬件开发过程中,仿真器可能是惟一可用的开发平台!
上述仿真器曾经被用于、并且目前还被用于操作系统的开发,这证明了健壮性的一些度量标准。但是,请不要停止您尝试 32 位通用寄存器的脚步,或者停止尝试让您所编写的软件支持 PowerPC 用户。有这样得天独厚的价格和方便的环境,还有什么不放心的呢?
继承事业,薪火相传
返回列表