论文部分内容阅读
函数库是一组目标文件的集合,它们被包含到需要链接它们的程序中。它为软件开发和程序运行提供丰富的库函数,成为计算机系统的重要组成部分。随着计算机系统的不断发展和应用领域的不断多样化,C语言函数库也得到了快速的发展,并且针对不同需求发展出了很多不同的类型。
本文基于北京大学微处理器研究开发中心自主设计的UniCore32体系结构进行Glibc和Bionic函数库的移植与优化,主要工作分为常见C语言函数库的对比分析、Glibc和Bionic函数库的移植以及重点库函数的优化三部分。
1)C语言函数库的对比分析和选择部分,本文重点分析了Glibc函数库、uClibc函数库、EGlibc函数库、Newlib函数库和Bionic函数库的各自特点,并从函数库的发展历程、实现目标、提供功能、模块大小、源码结构组成及版权协议等几方面进行对比;最后选择了Glibc函数库和Bionic函数库作为移植对象。
2)Glibc函数库和Bionic函数库的移植部分,这一部分阐述了面向UniCore32体系结构对这两个函数库进行的移植工作,并重点介绍了遇到的问题及解决方法。遇到的问题主要在于对原子操作、线程局部存储和全局构造函数的调用等几个方面的支持,以及对有关汇编文件的重新编写。移植工作完成后,在UniCore32体系结构的微处理器上可以正常运行完整的GNU/Linux操作系统和桌面应用软件。
3)常用库函数的优化部分,本文主要完成了对内存和字符串处理函数的优化以及对三角函数的优化。对于内存和字符串处理函数的优化,本文针对UniCore32体系结构特点,针对常见情况使用高效算法,并用汇编语言仔细调优。对于三角函数优化,本文分别用查表法和Cordic算法对三角函数计算方法进行了改进。
在上述工作完成的过程中本文分别总结了基于特定体系结构进行函数库移植和优化的方法及经验。在函数库的移植方面主要工作是解决体系结构相关性问题,比如:在Glibc函数库的移植工作中针对UniCore32体系结构重新实现了原子操作和线程局部存储;在函数优化方面可以从以下几个方面进行考虑:调整编译选项,手动修改汇编文件以及考虑体系结构相关性问题。