典型二进制翻译系统---用户级翻译

目录

QEMU

MDT

HQEMU

补充

Valgrind

包括

CrossBit

补充

 MTCrossBit

Strata-ARM

Box86

HQEMU

SymQEMU


QEMU

静态二进制翻译器

是一个开源的多平台的虚拟器,能够在软件中模拟一台机器

KVM(Kernel-based Virtual Machine)是 Linux 内核的一个模块,使 Linux 成为一个虚拟机监控器。它允许用户在 Linux 系统上创建和管理虚拟机

QEMU可以与Xen和KVM管理程序集成,以提供仿真硬件,同时允许管理程序管理CPU

当QEMU直接模拟cpu时,它能够在不同的机器(例如x86_64 PC板)上运行为一台机器

QEMU还能够为Linux和BSD内核接口提供用户空间API虚拟化。这使得针对一种体系结构ABI(例如Linux PPC64 ABI)编译的二进制文件可以在使用不同体系结构ABI(例如Linux x86_64 ABI)的主机上运行。这不涉及任何硬件仿真,只涉及CPU和系统调用仿真。

 QEMU 现有的寄存器分配机制忽略了指令前后之间的联系,在实际进行寄存器分配时,出现了部分寄存器重复使用部分寄存器闲置的情况,这产生了因不必要的寄存器溢出而引起的冗余访存指令

MDT

基于 QEMU 设计并实现的多线程动态二进制翻译系统 MDT

利用多线程并行框架,采用预翻译窥孔优化等手段,实现了 x86 平台上二进制可执行程序到
Alpha 平台的程序移植

HQEMU

多线程动态二进制翻译器 HQEMU,同样是基于 QEMU实现的,

其采用了 QEMU 的前端解码模块中间代码优化模块,将 QEMU 的后端编码模块替换 LLVM 优化编译器。HQEMU 通过将前后端分别固定在不同的核中,实现了翻译过程和执行过程的并行,有效的提升了 HQEMU 系统的翻译性能。

在进行翻译时,HQEMU 首先使用核心 1- m-2 运行源平台上的应用,在翻译执行的过
程中将热代码放入 FIFO 队列;之后在核心 m-1 上运行 LLVM 翻译器,在核心 m 上运行优
化器,并将优化后的代码存入追踪缓存之中,生成执行轮廓文件。追踪缓存存储优化后的
代码,优化后的代码能够传递到块代码缓存中用以加速执行;与此同时,块代码缓存中的
代码可以被复制到追踪缓存中进行优化,以提高程序的执行效率

FD-SQEMU

基于 QEMU 跨平台反馈式静态二进制翻译器 FD-SQEMU(feedback static QEMU)

解决代码发现代码定位问题,解决多进程 MPI多线程 Pthreads 并行程序的翻译问题

实现本地库函数替换源平台库函数,从而避免对源平台库函数的翻译

结合传统编译器和二进制翻译器中寄存器分配方法,引入全局寄存器静态分配和局部寄存器动态分配思想,提出了基于优先级的动静结合寄存器分配算法,解决QEMU中寄存器重复访问和闲置问题

补充

Xen 和 KVM 是两种流行的虚拟化技术,它们允许在单一物理硬件上同时运行多个虚拟机(VM)

Xen 是一个开源的虚拟机监控器(hypervisor)

API(应用程序编程接口,Application Programming Interface)是一组定义了软件应用程序之间交互的规则和协议。API 允许不同的软件组件之间进行通信,简化了软件开发的过程
 

Valgrind

基于VEX IR(VEX Intermediate Representation)中间表达式转换, 重量级代码插桩与分析工具

是一个用于构建动态分析工具的框架

使用平台:

- X86/Linux
- AMD64/Linux
- PPC32/Linux
- PPC64/Linux
- ARM/Linux
- x86/MacOSX
- AMD64/MacOSX
- S390X/Linux
- MIPS32/Linux
- MIPS64/Linux

包括


The Valgrind distribution currently includes six production-quality
tools:
a memory error detector, (内存错误检测器)
two thread error detectors,(两个线程错误检测器)
a cacheand branch-prediction profiler, (一个缓存分支预测分析器)
a call-graph generating cache abdbranch-prediction profiler, (一个调用图生成缓存分支预测分析器)
a heap profiler. (堆分析器)

It also includes three experimental tools:
a heap/stack/global array overrun detector, (堆/堆栈/全局数组溢出检测器)
a different kind of heap profiler, (一种不同类型的堆分析器)
a SimPoint basic block vectorgenerator.(SimPoint基本块矢量生成器)

CrossBit

源平台:MIPS, x86, Sparc

目标平台: Power, x86, Sparc

是一个与逆向工程漏洞分析(动态分析和静态分析)相关的工具或框架,帮助分析和理解二进制文件(如可执行文件和库)

支持多平台(如 x86、ARM 等)

有GUI界面,减少命令行依赖

多线程翻译, 基于Vlnst低层次的虚拟中间表示层

补充

Vlnst(Vulnerability Instantiation)是一个专注于漏洞分析的工具或框架,通常用于帮助安全研究人员和开发者识别、分析和修复软件中的安全漏洞

 MTCrossBit

是基于串行动态二进制翻译器 CrossBit 实现的

该框架在热路径的识别和优化过程中引入了多线程技术,通
过指定主从线程工作于不同核上的方法,避免了线程竞争造成的工作效率降低的问题。

Strata-ARM

源平台:ARM ARM

目标平台:IA-32 D

动态翻译应用于嵌入式系统, 间接跳转优化

Box86

在非x86 Linux系统上运行x86 Linux程序(比如游戏),比如ARM(主机系统需要是32位小端)

大多数x86游戏都需要OpenGL,所以在ARM平台上,像gl4es这样的解决方案可能是必要的。

应该安装ccache并用它来构建Box86

您应该安装ccache并用它来构建Box86。(以ccmake为例。)要启用TRACE(即转储所执行的所有单个x86指令,并转储寄存器),您还需要在系统上提供Zydis库。

If you are serious about developing Box86, you should install ccache and build Box86 with it. (Use ccmake for example.) To enable TRACE (i.e. dumping to stdout all individual x86 instructions executed, with dump of registers), you'll also need Zydis library available on your system.

源平台:x86, x86-64 

目标平台:ARM64, RISC-V

HQEMU

是一个多核可重目标的多线程动态二进制转换器

它集成了QEMU和LLVM作为其构建块

HQEMU可以实现较低的翻译开销和良好的翻译代码质量。

HQEMU支持进程级仿真和全系统虚拟化。它提供了在一个进程中运行QEMU转换器和LLVM优化器的转换模式,或者将LLVM优化器作为独立的优化服务器运行

SymQEMU

一个基于QEMU和SymCC的纯二进制符号执行器

灵活性强

源平台:x86-64, AArch64

目标平台:x86-64, AArch64

接受指向SymCC源代码和二进制文件的指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内螺纹销主要应用优势及应用领域

内螺纹销是一种常见的机械连接件,它通常用于连接两个或多个零件,并通过其内螺纹结构来实现紧固和定位。这种零件的设计简单却非常实用,在各种工业领域中都能找到它的身影。下面我们就来了解一下内螺纹销的主要应用优势以及它们的应用领域。 应…

华测无人船为水库库容精准测量提供解决方案

水库作为融合防洪、供水、发电及生态维护等多重功能于一体的基础设施,其库容的精准测量对于水资源管理及防洪调度的科学决策具有举足轻重的地位。然而,随着水库使用年限的增加,泥沙淤积现象的加剧以及地理信息更新的滞后,库容复核已成为确保水库安全高效运行不可或缺的一环。 当…

自写ApiTools工具,功能参考Postman和ApiPost

近日在使用ApiPost的时候,发现新版本8和7不兼容,也就是说8不支持离线操作,而7可以。 我想说,我就是因为不想登录使用才从Postman换到ApiPost的。 众所周知,postman时国外软件,登录经常性抽风,…

Redis:管道

1. 面试题 如何优化频繁命令往返造成的性能瓶颈? 问题由来 edis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤: 1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket…

You have an error in your SQL syntax; check the manual that corresponds to your

You have an error in your SQL syntax; check the manual that corresponds to your 目录 You have an error in your SQL syntax; check the manual that corresponds to your 【常见模块错误】 【解决方案】 欢迎来到我的主页,我是博主英杰,211科班…

python+vue3+onlyoffice在线文档系统实战20240725笔记,首页开发

解决遗留问题 内容区域的高度没有生效,会随着菜单的高度自动变化。 解决方案:给侧边加上一个最小高度。 首页设计 另一种设计: 进来以后,是所有的文件夹和最近的文件。 有一张表格,类似于Windows目录详情&…

每日一题,力扣leetcode Hot100之560.和为K的子数组

解法一: 暴力解法循环直接判断从每个index开始的切片是否满足 class Solution:def subarraySum(self, nums: List[int], k: int) -> int:# 要求的连续子数组count 0n len(nums)for i in range(n):for j in range(i, n):if sum(nums[i:j1]) k:count 1return…

科研绘图系列:R语言山脊图(Ridgeline Chart)

介绍 山脊图(Ridge Chart)是一种用于展示数据分布和比较不同类别或组之间差异的数据可视化技术。它通常用于展示多个维度或变量之间的关系,以及它们在不同组中的分布情况。山脊图的特点: 多变量展示:山脊图可以同时展示多个变量的分布情况,允许用户比较不同变量之间的关…

STM32CubeIDE代码字体大小

进入首选项设置 搜索editor,按照图中标号,进行设置 按图中标号进行设置,选择需要的字号 到此设置完成

C++STL详解(五)——list类的接口详解

一.list的介绍 list容器的底层是双向循环带头链表,在CPP中,我们对双向循环带头链表进行了一定程度的封装。 如果你不了解双向链表,那么可以浏览此片博文:双向链表 二.list的定义方式以及赋值 2.1list的构造方式 在这里我们要…

英特尔宣布针对对Llama 3.1进行优化 以提升所有产品的性能

日前Meta正式发布了Llama 3.1开源大模型,以其庞大的参数量和卓越性能,首次在多项基准测试中击败了GPT-4o等业界领先的闭源模型。允许开发者自由地进行微调、蒸馏,甚至在任何地方部署,这种开放性为AI技术的普及和创新提供了无限可能…

具备音视频指挥调度能力的指挥中心需要接入哪些设备呢?

近年来,具备音视频能力的指挥调度系统在各行各业中应用广泛,通过音视频的通信调度能力,为行业提供灵活的指挥调度功能,实现行业多种音视频应用场景的运用,满足企业更好地完成企业安全生产、应急协调等工作的需求。 华…

代码随想录训练营 Day13打卡 二叉树 part01 递归遍历 迭代遍历 层序遍历

代码随想录训练营 Day13打卡 二叉树 part01 一、 二叉树理论基础 二叉树是一种重要的数据结构,用于表示具有层次关系的数据。二叉树的每个节点最多有两个子节点,通常称为左子节点和右子节点。 种类 普通二叉树: 节点最多有两个子节点&…

Hadoop3:HDFS的客户端工具Big Data Tools(IDEA版本)

1、安装插件 在Plugins里搜索Big Data Tools 安装完成后,重启IDEA 2、配置Windows环境 主要是配置Hadoop环境,否则无法通过插件远程连接HDFS 1、解压hadoop安装包 2、进入hadoop的bin目录 放入图中标红的两个文件 3、配置hadoop环境变量 新建HAD…

这个暑假适合港澳游?免税额度提升、专属暑期活动、餐饮娱乐攻略

2024年7月1日免税额度的新政实施,在香港澳门消费的免税额度将达到15000元。这也让今年夏天的港澳旅游多了几分吸引力,如果有计划趁着这个暑假前往港澳旅游的话,这篇港澳游攻略一定能帮到你! 【民以食为天,旅游第一步—…

“多分辨率图网络”的模型:准确识别卵巢癌各种亚型

卵巢癌发病率居我国女性生殖系统恶性肿瘤第3位,死亡率居妇科恶性肿瘤之首,其特点是存在异质性的组织学亚型。最常见的五种亚型,占所有卵巢癌的90%,分别是高级别浆液性癌(HGSC)、低级别浆液性癌(…

项目实战--JUC之CompletableFuture温故

CompletableFuture温故 一、前言二、Future三、CompletableFuture3.1 CompletableFuture定义3.2 CompletableFuture使用场景3.3 CompletableFuture 常见操作3.3.1 创建CompletableFuture3.3.2 使用CompletableFuture3.3.3 异常处理3.3.4 注意事项 四、CompletableFuture处理工具…

阿里云创建的SpringBoot项目打包时找不到主清单属性

原因是因为maven配置文件中有一个打包属性配置 <configuration><mainClass>com.yang.ExamSystemApplication</mainClass><!-- 找到这个<skip>true</skip>标签关闭&#xff0c;或者属性改为false --><skip>true</skip> </c…

Hive环境搭建(Mysql数据库)

【实验目的】 1) 了解hive的作用 2) 熟练hive的配置过程&#xff08;Mysql数据库&#xff09; 【实验原理】 Hive工具中默认使用的是derby数据库&#xff0c;该数据库使用简单&#xff0c;操作灵活&#xff0c;但是存在一定的局限性&#xff0c;hive支持使用第三方数据库&…

第一百八十三节 Java IO教程 - Java目录事件、Java异步I/O

Java IO教程 - Java目录事件 当文件系统中的对象被修改时&#xff0c;我们可以监听watch服务以获取警报。 java.nio.file包中的以下类和接口提供watch服务。 Watchable接口WatchService接口WatchKey接口WatchEvent接口WatchEvent.Kind接口StandardWatchEventKinds类 可监视对…