二进制翻译技术
二进制翻译中的库函数处理
中图法分类号 ,-($A
二进制翻译技术是目前解决软件移植问题的一 个研究热点,能将现有的软件移植到新开发的处理 器上执行,其目的不仅仅是仿真源指令集体系结构 (H2;810<8H/2;9831<=H89<8019,!"X),更高的目标是翻 译产生的代码在目标!"X 上运行的速度等同甚至 超过源!"X 上的原有代码I
译器,结合了解释执行和静态翻译两种翻译模式,能
将运行在(?CD,E,0F:)系统下的应用程序运行在 ($+<3&,E,0F:)下!它主要是用内存模拟 ?CD上的
堆 栈 及 其 参 数 压 栈 和 取 返 回 值 的 行 为,对 大 约
GAHHH个 E,0@A$9"进行包装,一些包装还要对被 调用程序语义进行修改,同时也对 8IJ 组件进行 了包装!
K,0*.&02[@]是应用级动态二进制翻译器! 主要 是对系统调用进行包装!用内存模拟源机器的参数 传递行为,并且还要消除源与目标机器在系统调用
上的语义差 别! 因 为 处 理 系 统 调 用,因 此 相 比 处 理 库函数减少了很多工作量,但是也因此降低了性能!
LB#:[M]和 NO[M]是 ;B8 开发的两个二进制翻 译器,目的是为了使已有的 L$?和 J"9#代码能够 在新的 $+<3&$?9机器上运行!翻译界面定在需要 翻译的主文件和系统库之间,模拟源二进制程序所
TU;K:[D]和 E&+(&-45*[V]分 别 是 U5))02+&01 大学和#50公司开发的可变源和可变目标的动态二 进制翻译器!TU;K: 是对库函数进行包装来处理 系统库函数调用,对一些特殊的库函数要手写修改
硕士论文-动态二进制翻译中的调试器研究
上海交通大学硕士学位论文动态二进制翻译中的调试器研究姓名:***申请学位级别:硕士专业:计算机软件与理论指导教师:***20081201A Research on Debugger of Dynamic Binary TranslationABSTRACTDynamic binary translator generates the native code on the fly in runtime using translation technology. As the traditional debugger is targeted for statically generated code, it cannot be used to debug the program on dynamic binary translator. In order to enable debugging the program on dynamic binary translator, in this paper, we propose a new debug architecture for applications executing with dynamic binary translation systems.Debugger’s implementation is tightly coupled with the target machine platform. It’s even worse in dynamic binary translation system, as there are two related machine platforms in dynamic binary translation system. The debugger architecture is designed to be retargetable to decouple this relationship.In this paper, we describe a retargetable debugger architecture, and it’s based on dynamic binary translator. New intermediate instructions are designed to decouple the debugger from machine platform. It also introduces some debugging technology to dynamic binary translation, including reverse executing, watch point and debugging script. By using these technologies, the overhead on debugging is reduced from dozens of executing time to twice or less. The debug architecture is implementedand used in our CrossBit system. It’s proved that it reduces the time for developer to locate bugs sharply.Key Word: Dynamic Binary Translation, Debugger, CrossBit插图目录图二-1动态二进制翻译执行流程[13] (7)图二-2C ROSS B IT系统架构 (9)图二-3动态二进制翻译平台内存布局 (13)图三-1回退执行的场景 (18)图三-2一个调试脚本 (20)图三-3调试器基本框架 (20)图三-4断点映射表 (22)图三-5逆向执行中的基本块分析 (23)图四-1设置断点的流程 (29)图四-2有调试器系统与无调试器系统时间比 (32)图四-3M ESA主程序 (33)图四-4M ESA中出现异常的地址 (34)图四-5M ESA中出错的源地址 (34)图四-6调试脚本 (34)表格目录表四-1调试命令的集合 (27)学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。
在线二进制代码翻译成汉字
在线二进制代码翻译成汉字
在线二进制代码翻译成汉字是一种将二进制代码转化成文字的方法,它可以帮助人们更快速地理解计算机语言。
在线二进制代码翻译技术的基本原理是将每一位二进制数字
(0或1)映射为对应的中文汉字。
例如,有8位二进制代码:01100101,可以翻译成“公里”汉字。
第一步,需要将8位二进制代码拆分为4个二进制数字组:0110 0101。
每组2个二进制数字被称为一个位字节,因此整
个8位的二进制代码包含4个字节。
第二步,使用在线二进制代码翻译技术,通过每组2个二进制数字的字节翻译成相应的一个汉字。
例如,第一组二进制数字(0110)翻译成汉字“公”,第二组(0101)翻译成汉字“里”。
第三步,将每个字节翻译出来的汉字连接起来,如“公里”,就是将上述8位二进制代码翻译成汉字的完整结果。
总之,在线二进制代码翻译到汉字是一个简单可行的方法。
它可以快速准确的将二进制代码转换成汉字,从而提高编程效率。
此外,这种转换方式也给用户提供了一种可视化的模式,可以更好地理解计算机语言,从而更好地操作和使用电脑。
二进制翻译系统BATSUP中的动态翻译器的设计与实现
二进制翻译系统BATSUP中的动态翻译器的设计与实现黄英兰;杨晋兴;钟珊
【期刊名称】《航空计算技术》
【年(卷),期】2005(035)003
【摘要】针对目前航电系统硬件的升级换代而导致老的软件的不可用的问题,提出了一个用于航电系统软件升级的二进制翻译系统(BTASUP系统).该系统能把解释执行和动态翻译结合起来,在PowerPC处理器上实现对1750A处理器的二进制可执行代码的透明执行.介绍了系统的结构和工作原理,重点讨论了作为系统重要组成部分的动态翻译器的设计与实现.
【总页数】5页(P50-53,58)
【作者】黄英兰;杨晋兴;钟珊
【作者单位】中国航空计算技术研究所,陕西,西安,710068;中国航空计算技术研究所,陕西,西安,710068;中国航空计算技术研究所,陕西,西安,710068
【正文语种】中文
【中图分类】TP314
【相关文献】
1.系统级动态二进制翻译系统中访存异常的制导技术研究 [J], 张龙龙;董卫宇;王立新
2.一个用户级动态二进制翻译系统的设计与实现 [J], 曹宏嘉;俞磊;邓鹍;周兴铭
3.动态二进制翻译器QEMU中冗余指令消除技术研究 [J], 宋强;陈香兰;陈华平
4.间接转移指令在动态二进制翻译器中的预测方法 [J], 徐超豪;臧斌宇
5.一个动态二进制翻译系统的设计与实现 [J], 刘毅;臧红伟;谢克嘉;杨晋兴
因版权原因,仅展示原文概要,查看原文内容请购买。
二进制转英文在线翻译
二进制转英文在线翻译
摘要:
1.二进制与英文的转换背景和意义
2.二进制转英文在线翻译工具的原理
3.二进制转英文在线翻译工具的使用方法
4.二进制转英文在线翻译工具的应用场景及优势
5.总结与展望
正文:
随着全球化的加速推进,跨语言交流变得越来越频繁,而二进制数据在计算机领域中占据着重要地位。
因此,二进制转英文在线翻译工具应运而生,为人们提供了方便快捷的二进制数据翻译服务。
二进制转英文在线翻译工具的原理主要基于计算机的编程语言。
在线翻译工具通过识别二进制数据的编码规则,将其转换为英文表示,从而实现二进制与英文之间的转换。
这种工具通常采用人工智能技术,例如自然语言处理和机器学习,以提高翻译的准确性和效率。
使用二进制转英文在线翻译工具非常简单。
用户只需将要翻译的二进制数据输入到在线翻译工具中,然后选择目标语言为英文,即可进行翻译。
在线翻译工具会自动进行二进制与英文之间的转换,并在短时间内提供翻译结果。
此外,许多在线翻译工具还提供了API 接口,方便开发人员将其集成到自己的应用程序中。
二进制转英文在线翻译工具的应用场景非常广泛。
在计算机科学领域,程
序员可以使用这种工具快速地将二进制数据转换为英文,以便更好地理解和调试代码。
在信息安全领域,研究人员可以利用这种工具分析恶意软件,了解其攻击机制。
此外,在线翻译工具还可以帮助语言学家、翻译工作者和其他对二进制数据与英文之间的转换有需求的用户。
总之,二进制转英文在线翻译工具为人们提供了一种便捷的方式,实现了二进制数据与英文之间的快速转换。
动态二进制翻译的库函数包装自动化
动态二进制翻译的库函数包装自动化梁英超;尚云海;李春强【摘要】库函数包装是在动态二进制翻译过程中将源二进制程序的库函数调用直接转嫁到目标机上的库函数调用,以此提高动态二进制翻译系统的性能。
针对目前动主流的库函数手动包装技术,提出一种基于 GCC 的动态二进制翻译中库函数的自动包装技术,无需对库函数分别进行人工包装,节省了大量的工作,同时也降低了包装过程中出错的可能性。
实验结果表明,通过库函数自动包装技术,动态二进制翻译器 qemu 的性能有了3%~5%的提升。
%Library function packaging is to directly transfer the library function calling of the source binary program onto that of the target machine in the process of dynamic binary translation.In order to improve translation performance,in this paper we propose a GCC-based automatic packaging technology for library function in dynamic binary translation.This method does not need separate manual packing of the library functions so that saves a lot of works,and meanwhile reduces the chance of error making in packing process aswell.Experimental results demonstrate that the performance of dynamic binary translator qemu improves 3% ~5% through library function automatic packing technology.【期刊名称】《计算机应用与软件》【年(卷),期】2015(000)006【总页数】3页(P14-16)【关键词】动态二进制翻译;GCC;库函数;包装自动化;QEMU【作者】梁英超;尚云海;李春强【作者单位】浙江大学超大规模集成电路设计研究所浙江杭州 310000;浙江大学超大规模集成电路设计研究所浙江杭州 310000;浙江大学超大规模集成电路设计研究所浙江杭州 310000【正文语种】中文【中图分类】TP311.1动态二进制翻译DBT(Dynamic Binary Translation)是近几年非常流行的一种二进制翻译技术,指的是在程序运行时动态地将源体系结构二进制代码翻译成目标机二进制代码的技术,它克服了静态翻译的无法处理间接跳转指令、自修改代码问题和需要用户参与等缺点。
块链优化技术在动态二进制翻译中的应用研究
基金项目:湖南省教育厅“静态二进制翻译中动态链接库函数的识别与恢复算法研究”(项目编号:13C623)。 作者简介:孙光辉 (1978—),男,湖北孝感人,硕士研究生,讲师。研究方向:嵌入式、单片机。
— 28 —
2019 年第 18 期
信息与电脑 China Computer & Communication
计算机工程应用技术
信息与电脑 China Computer & Communication
2019 年第 18 期
块链优化技术在动态二进制翻译中的应用研究
孙光辉 王丽娟 (湖南文理学院 计算机与电气工程学院,湖南 常德 415000)
摘 要:在动态二进制翻译系统中,指令的执行过程中通常会涉及频繁的上下文切换,很大程度上影响了 AB (Architecture Bridge)系统的执行效率。为此,笔者提出了一种块链优化技术,通过指令间的直接跳转,有效减少上 下文切换次数,对 AB 系统的翻译缓存进行优化,提高了动态二进制翻译系统中执行模块的时间占比。实验分析表明,块 链优化技术能提供 10% 左右的加速比。
1.1 块链结构
AB 系统基本块的结构如图 1 所示,包括 g_code_buffe(r 首 地址指针),code_num(基本块指令数)、real_add(r 物理地址)、 eip(虚地址)和 cs_base(基地址),最后保存源指令信息。 在查找基本块时,可以通过虚地址也可以通过物理地址实现, 若査找失败,可以将目标代码写入缓存,将首地址返回给首 地址指针,继续进行下一次查找,直至成功,则直接通过目 标代码首地址指针去执行。
Key words: dynamic binary translation; chain optimization; architecture bridge system; jump
中间语言的延迟跳转指令二进制翻译实现的方法
说明书中间语言的延迟跳转指令二进制翻译实现的方法技术领域本发明涉及的是一种电信技术领域的方法,特别是一种中间语言的延迟跳转指令二进制翻译实现的方法。
背景技术虚拟执行技术中的动态二进制翻译是应用最为广泛的方法,是为遗留代码提供移植可能性和提高软件的平台适应性的一种有效手段,它在不需要可执行程序的源代码的情况下,可以动态地将源机器平台上的二进制程序经过转换,运行于其他目标机器平台上。
要使源平台的程序能够正确地在目标平台上执行,就必须通过动态二进制翻译在目标平台上对源平台进行完全而正确的模拟。
这其中主要包括对源平台指令集的解释和系统调用的模拟,然而每个体系结构都有自身的一些特性,比如Intel的x86处理器只有8个通用寄存器,有些RISC体系结构的寄存器数目稍多一些,SPARC 处理器上还实现了寄存器窗口的技术,使得它实际上拥有上百个通用寄存器。
诸如此类的特征都会体现在体系结构的指令集中,在利用中间指令翻译源平台代码实现多源多目标的动态二进制翻译系统中,既要保证源平台指令语义能被正确翻译,又要不违反中间指令精简的原则,有时候是很难实现的,即便实现了,也可能造成很大的开销。
在流水线体系结构中,当前一条指令还在解码阶段时,流水线就已经去存储器中取后一条指令了,以此来提高CPU执行指令的吞吐量。
但当碰到跳转指令时,执行跳转的时候后面已经上流水线的指令很可能是无用的,这样无疑会导致性能的下降。
于是现在大部分的体系结构中都采用了延迟跳转技术,在跳转指令后放置一条或几条需要执行的指令,它们所在的位置称作延迟槽,这样即使跳转了,已经上流水线的指令也不会被浪费。
一些常见的RISC体系结构都应用了这样的技术,比如MIPS、PA-RISC、SPARC都有容纳一条指令的延迟槽,同时还有少量的体系结构,如SHARC DSP和MIPS-X实现了含有两条指令的延迟槽。
SPARC体系结构在此原则上还实现了一个更加复杂的延迟跳转技术,它在条件跳转指令中引入了一个控制位annul bit,当执行跳转时,延迟槽指令会被执行;当不跳转时,会检查annul bit,如果它为1,则不执行延迟槽中指令,否则仍然执行。
二进制语言翻译
二进制语言翻译
二进制语言是一种用于计算机的低级语言,它使用0和1两个数字表示信息。
因此,二进制翻译通常是将二进制代码转化为人类可读的高级语言或指令。
二进制到高级语言的翻译可以通过反汇编器来完成。
反汇编器将二进制代码逐条翻译为相应的机器指令,并尽可能地还原为可读的汇编语言代码。
这样,程序员就可以理解和修改二进制代码。
另一方面,高级语言到二进制的翻译通常是编译器的工作。
编译器将高级语言代码翻译为可以在特定计算机体系结构上直接执行的二进制代码。
这个过程包括词法分析、语法分析、语义分析和代码生成等步骤。
总的来说,二进制语言翻译涉及将二进制代码转化为可读的高级语言或指令,或将高级语言代码翻译为可执行的二进制代码。
这是计算机软件开发中非常重要的一环。
动态二进制翻译优化研究的开题报告
动态二进制翻译优化研究的开题报告一、选题背景随着计算机技术的不断发展,二进制翻译技术在计算机系统中扮演着越来越重要的角色。
动态二进制翻译技术是一种基于虚拟化技术的二进制翻译技术,它能够在不修改原始二进制代码的情况下,将其翻译成目标平台的指令集,从而实现跨平台的应用程序运行。
然而,由于动态二进制翻译技术需要在运行时进行指令翻译,因此其性能往往受到较大的影响。
为了提高动态二进制翻译技术的性能,研究者们提出了各种优化方法。
其中,基于翻译缓存的优化方法是一种比较有效的方法,它通过缓存已经翻译过的指令,避免重复翻译,从而提高翻译效率。
然而,由于翻译缓存的大小和命中率对性能影响较大,因此如何优化翻译缓存成为了动态二进制翻译优化的一个重要研究方向。
二、研究目的和意义本文旨在探究动态二进制翻译优化中基于翻译缓存的优化方法,分析不同的翻译缓存替换策略对性能的影响,并提出一种优化策略,以提高动态二进制翻译技术的性能。
本研究的意义在于:1.对动态二进制翻译技术进行深入研究,提高对其原理和性能的理解。
2.分析不同的翻译缓存替换策略对性能的影响,为动态二进制翻译技术的优化提供参考。
3.提出一种优化策略,以提高动态二进制翻译技术的性能,为跨平台应用程序的运行提供更好的支持。
三、研究内容和方法本文将分为以下几个部分:1.介绍动态二进制翻译技术的原理和实现方法。
2.分析翻译缓存的基本原理和不同的替换策略,并比较它们的性能。
3.提出一种基于翻译缓存的优化策略,以提高动态二进制翻译技术的性能。
4.使用模拟器对不同的翻译缓存替换策略和优化策略进行实验,并分析实验结果。
本研究将采用实验和理论相结合的方法,通过模拟器进行实验,分析不同的翻译缓存替换策略和优化策略对性能的影响,并基于理论分析提出相应的优化策略。
四、论文结构本文将分为以下几个部分:第一章:选题背景和研究意义,介绍本研究的背景和研究目的。
第二章:相关技术介绍,介绍动态二进制翻译技术的原理和实现方法,以及翻译缓存的基本原理和不同的替换策略。
优化动态二进制翻译器
DigitalBridge 由 5 个模块构成 分别是装入器 BT 控制 器 基本块信息管理器 翻译器和优化器 如图 1 所示 图 中深色框表示翻译好的代码区 实箭头代表控制转移 虚箭 头代表写入数据
文件装入及初始化
基本块信息管理
翻译器
BT 控制器
优化器
上下文切换
104
热路径上的标志位计算 分别是基于模式的指令组合翻译优 化和延迟标志位计算的优化 3.1 基于模式的指令组合优化翻译
实际上在初次翻译时就已经对标志位计算进行了优化 以基本块为单位 在进行指令选择之时 记录下该指令读写 标志位的需求 在指令选择完成之后 分析标志位的引用定 值关系 保留有效的标志位计算 即使这样必要的标志位计 算仍会造成巨大开销 在这些开销中有一部分可以通过指令 组合的优化翻译来省略掉 例如在编译生成 X86 代码时 通 常用(cmp|test)/jcc 指令组合来实现条件分支 先通过 cmp 或 者 test 指令将比较结果的标志记录在标志寄存器中 再用 jcc 指令根据相应的标志位值来判断是否跳转 (cmp|test)/jcc 构 成一个指令组合模式 如果不加优化 则这样的两条指令将 被翻译成 50~60 条指令 其中 40~50 条指令用于标志位计算 在仔细研究源与目标指令集的对应关系后不难发现 只要用 MIPS 指令对 set / branch 就可完成与(cmp|test)/jcc 模式相对应 的功能 从而使优化翻译后的指令减少到 15 条左右 统计 显示 程序动态执行中的控制转移平均 6 成以上是条件分支 仅(cmp|test)/jcc 组合的优化翻译就可显著提高系统性能 3.2 延迟标志位计算优化
103
器来等待目标的指派 而直接跳转到目标基本块的本地代码 入口 这种基本块连接是提高性能的有效手段之一
二进制转英文在线翻译
二进制转英文在线翻译摘要:1.二进制与英文翻译的概述2.二进制转英文在线翻译的工具与方法3.详细介绍几种二进制转英文的在线工具4.注意事项及实用技巧正文:随着科技的发展,二进制与英文之间的转换变得愈发重要。
二进制翻译成英文的需求在不断增长,特别是在计算机科学、编程和技术领域。
为了满足这一需求,许多在线二进制转英文翻译工具应运而生。
本文将为您详细介绍二进制转英文的在线翻译工具和方法。
首先,我们需要了解二进制与英文的基本概念。
二进制(Binary)是一种计算机中使用的数制系统,只包含两个数字:0 和1。
而英文则是全球广泛使用的语言之一。
二进制与英文之间的转换,实际上是将二进制数据映射为英文表示的过程。
接下来,我们来了解一下二进制转英文的在线翻译工具与方法。
目前市面上有很多二进制转英文的在线工具,例如:Google翻译、百度翻译等。
这些工具都具有较高的准确度和效率,可以满足大部分人的需求。
使用这些在线工具进行翻译时,只需将二进制代码输入到输入框中,点击翻译按钮,系统便会自动将二进制代码转换为英文。
下面,我们来详细介绍几种二进制转英文的在线工具:1.Google翻译:Google翻译是一款功能强大的翻译工具,支持多种语言之间的实时翻译。
对于二进制转英文,Google翻译具有较高的准确度。
使用方法:打开Google翻译官网,将二进制代码复制粘贴到输入框中,选择目标语言为英文,点击翻译按钮即可。
2.百度翻译:百度翻译是我国知名的翻译工具,同样支持二进制与英文之间的转换。
使用方法:打开百度翻译官网,将二进制代码输入到输入框中,选择翻译语种为英文,点击翻译按钮即可。
3.DeepL:DeepL是一款德国开发的在线翻译工具,以准确度高著称。
虽然DeepL并未直接提供二进制转英文的功能,但通过将二进制代码转换为ASCII码,再将ASCII码转换为英文,也能实现二进制与英文之间的转换。
使用方法:先将二进制代码转换为ASCII码,然后将ASCII码输入到DeepL的输入框中,选择英文作为目标语言,点击翻译按钮。
一种基于动态二进制翻译的硬件支持Profile技术
Microcomputer Applications V ol.26,No.5,2010学习园地微型电脑应用2010年第26卷第5期文章编号:1007-757X(2010)5-0054-03一种基于动态二进制翻译的硬件支持Profile 技术杨辉兵,管海兵,梁阿磊摘要:传统的基于动态二进制翻译器的profiling 策略分为3种:基于基本块、基于跳转边、基于路径跟踪。
使用纯软件的profiling 系统一般地说会带来平均30%的性能开销。
如果在动态优化中得到硬件的支持,系统的整体性能将得到显著的提高。
其中,软硬件协同设计中的难点,就是软硬件之间的通信开销和软硬件划分。
该文针对动态二进制翻译中的优化阶段,使用一种硬件支持的运行是profile 收集新方法来取代纯软件的profiling 方法,把软硬件之间的通信开销降到最低,并以此来提高动态二进制翻译的整体性能。
此方法可以在运行时准确地,并且以很小的开销收集Profile 信息,从而更好的优化系统。
关键词:动态二进制翻译;profile 信息;软硬件协同设计中图分类号:TP311文献标志码:A0引言传统上,软件开发者已经使用profile(程序轮廓)给编译过程提供反馈。
在profile 开销和由于profile 而自然增加的稳定状态下的性能获益之间,存在一个重要的性能权衡。
Profile 开销由两部分组成,一是为了放置程序分析探针而需要开始分析程序结构的时间,二是实际收集profile 数据的时间。
获益是由于更好的优化代码而减少的执行时间[1]。
由于程序的动态行为对程序性能的影响是巨大的,同时动态行为又显著地受到了输入模式的影响,而静态分析是无法预知程序的动态输入模式的,因此有必要对静态编译生成的二进制代码在程序的运行时刻,根据程序的动态输入模式及相关的动态行为进行进一步的优化,从而提高程序的运行效率[2]。
动态优化技术是在应用程序的运行时刻对程序的信息进行统计和分析,并对程序的关键段进行必要的优化,从而提高程序的性能。
libhoudini 原理
libhoudini原理解析1. 概述libhoudini是一种用于在不同操作系统和硬件平台之间进行二进制代码翻译的技术。
它可以将ARM指令集转换为x86指令集,从而实现在x86设备上运行ARM应用程序。
这种技术被广泛应用于跨平台移植和应用程序兼容性的解决方案上。
本文将详细解释libhoudini的基本原理,包括其工作流程、翻译过程、性能优化等方面。
2. 工作流程libhoudini的工作流程可以分为以下几个步骤:2.1 应用程序加载首先,libhoudini需要加载目标应用程序,并获取其二进制代码。
这通常是通过操作系统提供的动态链接库机制完成的。
libhoudini会拦截应用程序的加载过程,并将自己注入到应用程序的进程空间中。
2.2 代码翻译一旦应用程序被加载,libhoudini开始对其进行代码翻译。
它会解析应用程序的二进制代码,并将ARM指令集转换为x86指令集。
这个过程包括指令解码、翻译、寄存器映射等步骤。
在指令解码阶段,libhoudini会解析ARM指令,并确定其含义和操作数。
然后,它会根据翻译规则将ARM指令转换为等效的x86指令。
这个过程是基于一系列预定义的翻译规则和映射表进行的。
在翻译过程中,libhoudini还会处理一些特殊情况,如异常处理、系统调用等。
它会将ARM指令转换为与x86平台上的等效操作相匹配的代码。
2.3 代码执行一旦代码翻译完成,libhoudini会将翻译后的代码加载到应用程序的内存空间中,并将控制权转移到这段代码上。
这样,x86指令集的代码就可以在x86设备上执行了。
2.4 性能优化为了提高性能,libhoudini还采取了一些优化措施。
其中最重要的是缓存机制。
libhoudini会将已翻译的代码缓存起来,以便下次再次执行相同的代码时可以直接使用缓存的结果,而不需要重新翻译。
此外,libhoudini还会根据运行时的环境和应用程序的行为进行动态优化。
它会监控应用程序的执行情况,并根据需要进行代码优化,以提高性能和效率。
过程恢复技术在IA64二进制翻译中的应用与实现
( e at n fC m ue c n e ad T c n lg , f m t n E g e r g D pr meto o p t S i c n eh ooy I o ai n i ei r e nr o n n
维普资讯
过程恢复技术在 I 4二进 制翻译 中的应用 与实现 A6
付 文 魏 博 张 天雷 赵 荣彩
( 放 军信 息工程 大 学信 息工程 学 院, 州 4 0 0 ) 解 郑 5 0 2
E ma l rc ef @h t iC B — i :a h l u oma l O .
关 键词 静 态二 进 制 翻译 I 4 过 程 调 用 过 程恢 复 A6
文 章 编 号 1 0 — 3 1 (0 6 2 — 0 1 0 文献 标 识 码 A 0 2 8 3 一 2 0 ) 10 8 — 3 中图 分 类 号 T 3 4 P 1
Ap l a i n a d Re l a i n o h c n lg f Pr c d r p i t n a i to f t e Te h on 6 n r a sa i n 4 Bi a y Tr n lto
摘 要 论 文介 绍 了静 态 二进 制 翻 译 中的过 程恢 复技 术 。根 据 I 6 A 4体 系结 构特 点及 其 对过 程 调 用 的 有 关 约 定 , 实现 了 对 I6 A 4过程 的恢 复 : 并在 对 大量 实例 进 行研 究 的基 础 上 , 出 了一 种 浮 点参 数 恢 复 的 改进 方 法 。 提
1 引 言
二进 制 代 码 翻 译 . 一 种 将 可 执 行代 码 从 一 种 体 系 结构 指 是 令 集 翻译 到 另一 种 体 系 结构 指 令 集 的技 术 目前 . 二 进 制 翻 在 译领域 . 已经 形 成 了两 种 主要 的 翻 译 器 体 系结 构 . 即静 态 翻 译 器 和 动 态 翻译 器 国 内外 关 于 动 态 二 进 制 翻译 技 术 的研 究 文 献 比较 多 . 是 对 于 静 态 二进 制 翻译 中的 有 些 技 术 实 现 问 题 讨 论 但 比较 少 . 静 态 翻译 器 中 对 过 程 的 浮 点 参 数 的 恢 复 技 术 【 另 如 1 ] 。 外 . 有 的静 态 二 进 制 翻 译 器 . 部 分 是 围 绕 3 现 大 2位 体 系 结 构 展 开 的 .因 此 对 过 程恢 复 技 术 在 6 4位 体 系 结 构 上 的 二 进 制 翻译 中 的应 用 进 行 研 究 也是 很 有 意 义 的 本 文 将 全 面 介 绍 过 程 恢 复 技 术 在 实 现 I 6 /iu 到 A 4Ln x Ap aLn x的静 态二 进 制 翻 译 器 中 的使 用情 况 .包 括 参 数 的 lh/i u 恢 复 和返 回值 的恢 复 . 针 对 现 有 资 料 中 没 有 给 出 的 浮 点参 数 并 恢 复 问题 .结 合 I 6 A 4体 系 结 构 特 点 提 出 了 一 种 简 单 的 解 决 思 路 操作 系统 平 台为 R d H tLn x A . f A 6 +i l e a iu S21o I 一 4 l ef r b l _ O .. 译 环境 使 用 G C 2 6 .O编 7 C . 。研 究借 鉴 了 Q enln 大 学 开 9 u es d a 发 的 U B  ̄U i r t o u es n iayTas tr框 架 Q TI nvs y fQ enl d Bnr rnl o) ( e i a a
MIPS安卓平台上ARM二进制翻译系统
doi:10.3772/j.issn.1002-0470.2021.01.004MIPS安卓平台上ARM二进制翻译系统①赵保华②……杯安宁饪③*…**徐哲冲**杜安利**苏涛“「北京工业大学信息学部北京100124)("全球能源互联网研究院有限公司北京102209)(”"电力系统人工智能(联研院)国家电网公司联合实验室北京102209)(**“龙芯中科技术有限公司北京100095)摘要无内部互锁流水级的微处理器(MIPS)是重要的处理器架构,安卓是目前主流的移动终端操作系统。
在MIPS架构处理器上运行安卓操作系统可以有效拓展使用领域,但存在的问题是调用高级精简指令集处理器(ARM)架构本地库的安卓应用程序不能运行,即存在应用不兼容问题。
本文提出了一种动态库跨平台二进制兼容模型,以及通用的跨平台二进制翻译系统的架构,并在MIPS安卓平台上设计实现了ARM二进制翻译系统。
该系统能够进行ARM动态库的跨平台加载,并采用动态二进制翻译,将ARM动态库中的二进制指令翻译成为MIPS架构的二进制指令,从而能够在MIPS架构处理器上执行。
实验结果表明,该系统可以运行调用ARM本地库的安卓应用程序,解决了MIPS平台安卓应用的兼容性问题。
本文工作对跨平台二进制翻译系统的研究具有重要参考价值。
关键词二进制翻译;无内部互锁流水级的微处理器(MIPS);高级精简指令集处理器(ARM);Android0引言无内部互锁流水级的微处理器(microprocessor without interlocked piped stages,MIPS)架构是1981年由斯坦福大学开发的简洁、具有高度可拓展性的精简指令集计算机(reduced instruction set computer, RISC)架构,MIPS公司的R系列处理器就是在这个架构的基础上研制岀来的微处理器。
MIPS架构处理器被广泛应用于游戏机、机顶盒、网络路由器,以及其他嵌入式设备和通设备中。
语言学中的机器翻译技术
语言学中的机器翻译技术机器翻译技术是一种可以将一种语言翻译成另一种语言的技术。
机器翻译技术已经存在了很长一段时间,但是在过去的几年里,随着计算机技术和算法的发展,这种技术有了很大的进步。
在本文中,我们将探讨语言学中的机器翻译技术。
机器翻译技术基础机器翻译技术的基础是计算机语言处理技术。
计算机可以理解的语言是二进制语言,也就是由数字0和1组成的语言。
但是,人类使用的语言是自然语言,这种语言比较复杂,因为它包含了很多的语法、词汇、语义和文化因素。
因此,将一种语言转换成另一种语言需要很复杂的算法和技术。
机器翻译技术类型机器翻译技术可以分为两种类型:规则型和数据型。
规则型机器翻译技术使用的是一种基于人类语言专家提供的规则的算法,这些规则描述了一种语言的语法和语义规则。
在这种技术中,机器将一种语言中的句子分解成各种元素,如主语、谓语、宾语以及各种语义信息,然后再根据这些元素来构建另一种语言的句子。
这种技术需要专业语言学家参与,才能达到很高的翻译质量。
另一种机器翻译技术是数据型机器翻译技术。
这种技术不需要人类专家提供规则,而是使用大量的文本数据来训练机器学习算法,以便机器学会识别一种语言的词汇和语法结构,从而将其转化为另一种语言。
这种技术的翻译质量取决于训练数据的质量,因此如果数据质量不好,那么机器翻译的效果也会很差。
机器翻译技术在语言学中的应用机器翻译技术被广泛应用于语言学中,包括以下方面:语言研究机器翻译技术可以帮助语言学家研究一种语言的语法、语义,以及不同语言之间的差异。
通过使用机器翻译技术,语言学家可以快速地将一种语言转换为另一种语言,以便他们研究这些语言之间的差异和相似之处。
语言学习机器翻译技术可以帮助人们学习一种新的语言。
使用机器翻译技术,学习者可以很快地将一种语言的句子转换为另一种语言的句子,从而帮助他们掌握这种新的语言。
此外,在学习一种新的语言时,机器翻译可以作为一种辅助工具,帮助学习者快速地理解和掌握这种新的语言。
二进制翻译
二进制翻译二进制是计算机领域中常用的一种数制。
它由0和1两个数字组成,表示了一种双态系统的信息。
在计算机中,所有的数据最终都会转化为二进制数进行处理和传输。
二进制翻译是将其他进制或者数据转化为二进制的过程。
要进行二进制翻译,首先需要理解二进制数的表示方法。
二进制数每一位上的值只能是0或1,从右往左,每一位代表的值依次是2^0, 2^1, 2^2, 2^3...。
例如,二进制数1011表示的是2^3 + 0 + 2^1 + 2^0 = 8 + 0 + 2 + 1 = 11。
将其他进制的数转化为二进制数,需要根据不同的进制规则将每一位上的数转化为二进制数,然后依次相加。
以十进制数转化为二进制数为例,就是将十进制数每次除以2,然后将余数倒序排列。
例如,将十进制数27转化为二进制数,计算过程如下:27 ÷ 2 = 13 余 113 ÷ 2 = 6 余 16 ÷ 2 = 3 余 03 ÷ 2 = 1 余 11 ÷2 = 0 余 1将余数倒序排列得到的二进制数就是11011,即十进制数27对应的二进制数为11011。
除了将其他进制数转化为二进制数,还可以将一段文本转化为二进制码。
每个字符都有对应的二进制码,可以通过查表或者编码规则找到对应的二进制码。
例如,将字符串"Hello"转化为二进制码,根据ASCII编码表,每个字符可以找到对应的十进制数,再将十进制数转化为二进制数。
最后将每个字符的二进制码拼接起来即可得到最终的二进制码。
二进制翻译是计算机领域中非常重要的一项技术。
它可以实现不同进制的数值之间的转化和交流,也可以实现将文本、图像、音频等信息进行数字化处理和传输。
二进制翻译不仅是计算机科学的基础,也是现代信息技术发展的重要支撑。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 有代表性的二进制翻译系统
目前,二进制翻译已经得到了广泛的重视和研究,一些有代表性的系统见表 2。 表 2 所列出的多数翻译器都与机器特性高度相关,重利用是非常困难的。其中 1994 年 AT&T 公 司开发的 Flashport 二进制翻译器可以运用到多个源、目标平台,但不能完全自动化,需要专 业用户通过图形用户界面(GUI)进行交互。昆士兰(Queensland)大学开发的 UQBT 以及 UQDBT,
代码翻译
MPE XL)
Mimic
IBM
(1987)
[6] 对每条源机器指令代码扩 IBM system /370 IBM RT PC 展倍数为 4 的软件模拟器
Accelera- Tandem tor (1991)
[7] 将 CISC 移植到 RISC 的静 态翻译器,采用解释器作 为补充
TNS CISC
动态翻译
FX!32 UQBT
JVMs JITs BOA Aries
图 1 二进制翻译的三种方法
解释执行对源处理器代码中的每条指令实时解释执行,系统不保存也不缓存解释过的指令,不 需要用户干涉,也不进行任何优化。解释器相对容易开发,比较容易与老的体系结构高度兼容, 但代码执行效率很差[1] 。 [14]
Alpha 的混合模拟器和二
NT)
NT)
进制翻译器
Daisy (1996)
IBM [9] [10] 利用二进制翻译调度
(PowerPC,
PowerPC 代码到超长指令
UnixV)
字(VLIW)处理器,增加并
行性
பைடு நூலகம்
VLIW
Aries
HP
[4] 解释和动态翻译相结合, HP Precision
IA-64
(1999)
动态翻译则在程序运行时对执行到的片断进行翻译,克服了静态翻译的一些缺点--如由于不能 知道控制流中某点的寄存器或内存的值,因此不能实现代码挖掘;动态翻译还可以解决大部分 实际情况中的自修改代码问题,而这在静态翻译是不可能的[14];动态翻译可以利用执行时的动 态信息来发掘静态编译器所不能发现的优化机会;动态翻译器对用户可以做到完全透明,无需 用户干预 。 [4] [9] [11] [19]
翻译的代码执行效率不如静态翻 译高,对目标机器有额外的空间 开销
表 1 三种翻译方法比较
2.2 二进制翻译系统框架
由于上述三类翻译方法各有所长,开发二进制翻译系统时一般会使用上述方法中的两种或三种。 下面以解释执行和动态翻译相结合的二进制翻译系统框架为例,如图 2(许多真实系统都采用类 似框架[4] [9] [11] [18]),简略描述一个二进制翻译系统的翻译执行过程。
二进制翻译技术研究
武成岗、马湘宁、崔慧敏
1 引言
一种新处理器的流行,离不开相应软件的支持。开发新的处理器可能会因为失去相应软件的支 持而影响其推广应用和市场前景;另一方面,得不到广泛应用和一定市场份额的处理器也很难 得到丰富的软件支持。这种处理器和支持软件之间相互钳制的关系,既使得新处理器的设计不 得不考虑兼容老处理器,也阻碍了新处理器的推出。在这种情况下,研究如何把支持老处理器 的软件移植到新的处理器上,使新的处理器从诞生之初就有丰富的软件,不仅对软件重用有重 大意义,更可以开阔处理器研发的思路,促进新处理器的创新。 一般有三种方法可以把老处理器上的代码移植到新处理器上[1]: 1. 在新处理器上提供专门的运行模式来执行老代码,如英特尔的安腾(Itanium)处理器专
都是基于对机器指令和操作系统属性描述的可变源、可变目标的二进制翻译器框架,可以看作
是一个翻译器的生成器。
名称
研究单位 参考 目的
源平台
目的平台
Bergh et al HP (1987)
[5] 最早的商用二进制翻译系 (HP3000, MPE V) (HP Precision
统;用于软件模拟和目标
Archi- tecture,
源机器 代码
启动模块 (加载程序)
解释器
翻译系统 控制模块
源机器 代码片断
解码
动态 翻译 翻译器 优化
编码
运行环境 仿真模块
本地码执 行模块
目标机器 代码片断
调用关系 数据流
目标机器平台
图 2 二进制翻译系统框架
一个解释执行和动态翻译相结合的二进制翻译系统,通常包括控制模块、启动模块、运行环境 仿真模块、解释器、动态翻译器、本地码执行模块等主要模块。控制模块控制整个系统的翻译 执行过程,从而可以使系统的工作对用户透明;本地码执行模块负责在翻译系统自身的执行和 生成的目标机器代码执行之间的切换工作;运行环境仿真模块支持源机器代码调用、系统调用 以及处理信号。 整个翻译执行过程如下:在目标机器平台下执行源机器代码时,嵌入操作系统的启动模块启动 整个翻译系统,并将源机器代码加载到内存,然后控制模块启动解释器对源机器代码解释执行, 并根据需要统计代码执行路径等信息。当某段源机器代码的执行达到一定热度,就启动动态翻 译器翻译并对其进行简单优化,编码生成目标机器代码片断,此后再执行到该源机器代码片断 时就不再解释执行,而是通过本地码执行模块来直接执行翻译生成的目标机器代码。 为了提高翻译后代码的效率,对于那些执行热度极高的目标机器代码片断,还需要对其进一步 优化,这就会用到下文提到的动态优化技术。
680x0
RISC-based Unix
Freeport Express (1995)
Digital
静态翻译器,采用解释器 (SPARC, SunOS (Alpha, OSF/1) 作为补充,翻译用户模式 4.1.x) 程序,32 位、64 位都可
FX!32 (1996)
Digital [2] [3] 流行的 x86 应用程序到 (x86, Windows (Alpha, Windows
QuickTrans Transitive -it 公司
[21] [38]
多源多目标的动态翻译器
可变
MIPS/PowerPC/x 86
可变
Itanium/ x86/PowerPC
/Opteron
DigitalBri 中科院计算 dge 所
动静结合的翻译
x86
MIPS
表 2 二进制翻译系统
由于静态二进制翻译器的局限性,所有的实用系统都不采用纯静态的翻译,而是选择动态模拟 或动态翻译再加上动态优化的方式。这样就可以在保证程序能够正确执行的基础上,尽量提高 效率,如 Daisy,Aries,BOA,Transmeta 等系统。而且动态翻译还可以对用户透明,从而无需 用户对其过程进行干预。
2.1 二进制翻译方法分类及比较
基于软件的二进制翻译,可以分为三类:解释执行、静态翻译、动态翻译。图 2 展示了这三种 方法,以及使用了该方法的翻译系统[1]。
解释执行
静态翻译
IBM/360 emulationof the IBM 1401, 7070,and 7090 VAX emulation of PDP-11
静态翻译是在源处理器代码执行之前对其进行翻译,将源机器上的二进制可执行程序文件A完全 翻译成目标机器上的二进制可执行程序文件B,然后在目标机上执行程序B。一次翻译的结果可 以多次使用。静态翻译器离线翻译程序,有足够的时间进行更完整细致的优化,代码执行效率 较高。然而,静态翻译器可能无法完整地翻译一个程序[30],因而需要依赖解释器的支持[14];而 且静态翻译器需要终端用户的参与[1],这给用户使用造成了很大不便。
门设计了执行 x86 代码的硬件。 2. 把源程序重新编译到新的指令集。 3. 使用软件方法,解释或翻译应用程序。 第一种方法,显然无法利用新处理器的一些先进特性,失去了开发新处理器的意义,并且增加 了新处理器的硬件复杂度,甚至还会影响原有代码的执行效率;第二种方法可以达到很好的效 率,但并不总是可行,因为有些程序已经没有源代码,有些程序依赖于共享代码库,而这些共 享代码以目标代码形式出现,不一定能得到源码,有些源程序语言没有编译到新指令集的编译 器,此外操作系统的差异还可能使得只有修改源代码才能重新编译这些例程(比如与图形相关 的代码)。 因此第三种方法,称之为二进制翻译(Binary Translation)应运而生。它是一种直接翻译可 执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行。它 使得不同处理器之间的二进制程序可以很容易地相互移植,扩大了硬件/软件的适用范围,有助 于打破前面提到的处理器和支持软件之间互相掣肘影响创新的局面。
简化了应用程序从 HP
Architec-
Precision
ture,
Architecture, 到 IA-64
翻译;
BOA (1999)
UQBT、 UQDBT
IBM
Queensland 大学
动态翻译了 PowerPC 的整 个系统,用简单的指令实
现原来语义,简化硬件
[13] [14] [15] 利用机器指令描述开发的 [16] [17] [18] 可变源、可变目标的静态
下面我们用表格的形式总结一下上述三种翻译方法的优缺点[1] : [14]
解释执行 静态翻译 动态翻译
优点
缺点
容易开发,不需要用户干涉,高 度兼容
代码执行效率很差
离线翻译,可以进行更好的优化, 代码执行效率较高。
依赖解释器、运行环境的支持, 需要终端用户的参与,给用户使 用造成了不便
无需解释器和运行环境支持,无 需用户参与,可利用动态信息发 掘优化机会
TNS /R
VEST, mx (1993)
Digital
[8] [4] 从 Digital 公司的 VAX 和 (VAX, OpenVMS), (Alpha,
MIPS 到 64 位 Alpha 静态 (MIPS, Ultrix) OpenVMS),