二进制翻译技术
二进制翻译中的库函数处理

中图法分类号 ,-($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,则不执行延迟槽中指令,否则仍然执行。
- 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),