Page 113 - 《软件学报》2024年第6期
P. 113

谢汶兵 等: 二进制翻译技术综述                                                                2689


                 节简述二进制翻译技术基本原理, 然后从不同角度对二进制翻译技术做分类, 并梳理二进制翻译发展历史上具有
                 重要突破的典型系统. 第       2  节总结二进制指令翻译方法, 将翻译方法划分为定制化中间表示的指令翻译、编译器
                 框架辅助的指令翻译、规则匹配的指令映射翻译. 第                 3  节总结二进制翻译技术面临的一些关键问题, 包括存储单
                 元映射、原子操作时序维护、异常和中断处理、内存一致性保证等. 第                        4  节讨论二进制翻译优化技术, 重点从翻
                 译开销优化、运行时优化和代码生成优化总结二进制翻译常用的优化方法. 第                          5  节归纳二进制翻译技术的典型应
                 用领域, 例如软件迁移、程序分析与优化、二进制符号执行等. 第                    6  节对二进制翻译技术的潜在研究方向进行展
                 望. 第  7  节对全文工作进行总结.

                 1   二进制翻译技术与典型系统

                 1.1   二进制翻译技术基本原理
                    严格来说, 二进制翻译技术有狭义和广义之分. 狭义的二进制翻译技术是指二进制翻译器本身, 主要功能是实
                 现源平台   (程序被翻译之前的运行平台, 也叫源机器平台或客户平台) 程序指令到目标平台                         (程序被翻译之后的运
                 行平台, 也叫目标机器平台或宿主平台) 指令的等价翻译; 广义的二进制翻译技术则是一个复杂的翻译系统, 其包
                    二进制翻译技术根据其输入的翻译对象、运行的翻译平台、选取的翻译时机等不同, 我们从不同角度对其进
                 含了指令翻译、运行环境模拟、目标代码执行、性能优化、异常处理等环节. 广义的二进制翻译全面地描述了程
                 序模拟过程. 本文讨论的二进制翻译特指广义的二进制翻译技术.
                    图  2  给出了典型的二进制翻译系统基本框架图, 核心模块包括程序加载、二进制翻译器、控制器、运行环境
                 模拟、目标代码执行等. 程序加载负责启动整个翻译系统, 并将源程序代码加载到内存. 二进制翻译器负责指令的
                 翻译、优化、代码缓存等工作. 控制器负责翻译和执行之间的控制流切换、缓存代码的更新与查找等. 运行环境
                 模拟负责系统调用、异常处理、存储单元镜像等模拟工作. 目标代码执行则是在目标机器上执行翻译后代码. 总
                 结看来, 二进制翻译技术的执行流程如下: 首先, 在目标机器平台加载源机器平台的二进制程序, 并启动二进制翻
                 译器. 其次, 二进制翻译器根据源程序代码逻辑进行解码、翻译、优化以及编码等指令翻译工作. 最后, 在目标平
                 台执行翻译生成的二进制代码.

                                                         源平台
                                                        二进制代码
                                                                            解码
                                                                    二进制     翻译
                            代码翻译       程序加载                         翻译器     优化
                                                                            编码

                                              运行环境
                            运行时维护                          控制器
                                               模拟
                                                                          目标平台         数据流
                            代码执行                          代码执行            二进制代码
                                                                                       控制流
                                                         目标平台
                                               图 2 二进制翻译系统基本框架图

                 1.2   二进制翻译技术分类


                 行分类.
                    (1) 根据翻译对象不同分类, 分为系统级翻译和用户级翻译. 系统级翻译的翻译对象是被翻译程序所在的整个
                 系统, 相当于在目标平台模拟一套与源平台完全相同的运行环境. 翻译过程涉及对系统中所有进程、内存单元、
                 外设、系统调用等全部环境的模拟, 通常翻译效率较低. 事实上, 对于大多数应用来说, 二进制翻译过程只需聚焦
                 于应用程序本身, 其运行的环境可以直接依赖于宿主机操作系统, 由此便衍生出了用户级翻译. 用户级翻译流程简
                 单, 通常翻译效率较高.
   108   109   110   111   112   113   114   115   116   117   118