论文部分内容阅读
随着计算机技术的快速发展,智能手机与智能操作系统近些年来得到了快速的发展。依靠着硬件技术的迅速更新,智能手机操作系统由原来的只能完成简单的浏览静态网页、照相、发送邮件等简单任务,发展到了现如今能够承担复杂数据计算、数据存储、游戏娱乐等任务的阶段。其中,以谷歌推出的安卓操作系统为代表的智能手机操作系统行业得到了空前的发展。而随着人们对移动设备上进行娱乐的需求不断提高,对智能手机操作系统处理图像的能力就有了新的要求。安卓平台开发中的RenderScript能够提供给编程人员一种高效处理图像的并行计算框架。这种脚本能够将图像进行并行处理,从而在有限的硬件性能条件下极大的提升机器的运算速度,从而对用户的行为进行快速的响应。虽然RenderScript能够使得编程人员对运算效率进行并行优化。然而由于其学习过程较为困难,语法约束较多、参考文档较少,使得编程者望而却步。并且进行脚本的编写需要通过额外增加脚本文件的方式来进行,不仅增加了编写难度,也不利于后期的维护工作。笔者着眼于RenderScript以上的几个不足,以功能性等价为原则,进行java语言上的移植工作。将RS脚本的编写放入与普通的java类和函数编写等同的地位,使得编程人员能够在进行client编写的同一处进行kernel的编写。此外,将脚本的语法、类型等进行了改进,使得从安卓平台中转变过来的编程者不至于对移植后的脚本感到陌生,从而能够快速的进行实际代码的编写工作。本文首先对脚本移植的研究背景进行了简要的阐述,并通过分析脚本的运行机制、工作特点等内容,确定了进行脚本移植的基本技术路线和使用到的工具,给出了一套基本的解决方案。而后对脚本移植中涉及到的多个重点问题,包括类型、dex的解析、kernel的抽取、二进制指令的翻译等进行了着重的分析与论述,明确了这些问题的解决办法。依照对这些问题的论述结果,笔者对核心的解析程序进行了整体的设计,并给出各个模块程序流程,进行了实现。文章的最后,对移植后的脚本进行了结果的验证,并将其与使用安卓平台下的RS脚本进行了多角度的对照。最后得出结论:移植后的脚本从书写难易程度上较原始参照有着相当大的改进,使得编程人员对kernel的编写与其他java代码无异,并在性能上较原始参照没有明显的下降。此外,移植后的脚本还有着像IR优化、API的扩充等方面的提升空间。