(3)llvm ir转换过程

news/发布时间2024/5/15 9:10:29

(1)DAG Lowering

        输入的IR转换成SelectionDAG的过程被称作lowering

就是把llvm ir转成这种

(2)DAG legalization

        "DAG legalization"(有向无环图合法化)是编译器后端,特别是在LLVM中处理SelectionDAG的一个阶段。它主要发生在将中间表示(IR)转换为具体机器指令之前的指令选择过程中。DAG合法化的目标是确保SelectionDAG中的所有节点都能直接映射到目标硬件平台支持的操作上,即保证DAG中的每个操作都是“合法”的,能够被硬件直接执行。

  (3)  指令选择

(4)Scheduling and Formation

重排指令

(5)SSA-based Machine Code Optimization

基于SSA的优化

(6)寄存器分配

寄存器分配的输入是一个SSA(Static Single Assignment)形式的中间表示(IR),这种表示确保每个变量只被赋值一次。此外,输入的IR已经经过了指令选择阶段,这意味着高级IR指令已经转换为更接近目标机器指令的形式,但这些指令目前还关联到虚拟寄存器,而不是实际的物理寄存器。

(7)post-allocation passes

(8)Prologue/Epilogue Code Insertion

在LLVM后端中,Prologue/Epilogue Code Insertion(序言/尾声代码插入)是指在函数的入口和出口处插入一些额外的代码,用于进行函数调用的准备和清理工作。这些代码用于保存和恢复寄存器、设置栈帧、处理参数传递等。

(9)peephole optimization

在LLVM后端中,Peephole Optimization(孔眼优化)是一种局部优化技术,它通过识别和替换一系列连续的指令序列,来改进代码的效率和质量。

(10)assembly printing

在LLVM后端中,Assembly Printing(汇编代码打印)是指将LLVM中间表示(IR)转换为目标机器的汇编代码的过程。

LLVM中的汇编代码是目标机器特定的低级指令序列,用于直接在目标机器上执行。通过汇编代码打印,LLVM后端可以将LLVM IR转换为目标机器的汇编代码,并将其输出为文本形式,以便查看和调试。

SSA形式的llvm ir可以用控制流图表示

然后控制流图里面的每一个部分可以用DAG表示

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

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

相关文章

ETL、ELT区别以及如何正确运用

一、 浅谈ETL、ELT ETL与ELT的概念 ETL (Extract, Transform, Load) 是一种数据集成过程,通常用于将数据从一个或多个源系统抽取出来,经过清洗、转换等处理后,加载到目标数据存储中。这种方法适用于需要对数据进行加工和整合后再加载到目标…

Stable Diffusion 绘画入门教程(webui)-ControlNet(IP2P)

上篇文章介绍了深度Depth,这篇文章介绍下IP2P(InstructP2P), 通俗理解就是图生图,给原有图加一些效果,比如下图,左边为原图,右边为增加了效果的图: 文章目录 一、选大模型二、写提示词三、基础参…

运维SRE-14 自动化批量管理

1.批量管理基础内容-SSH服务-远程连接服务 1.1SSH服务 SSH服务-OpenSSH,远程连接服务端:openssh-server客户端:openssh-clients openssh-7.4p1-21.el7.x86_64 openssh-server-7.4p1-21.el7.x86_64 #服务端 openssh-clients-7.4p1-21.el7.…

大话设计模式——2.简单工厂模式(Simple Factory Pattern)

定义:又称静态工厂方法,可以根据参数的不同返回不同类的实例,专门定义一个类(工厂类)来负责创建其他类的实例可通过类名直接调用,被创建的实例通常具有共同的父类。 UML图: 例子: 计…

1.30主成分分析,因子分析

主成分分析 主成分分析(Principal Component Analysis,简称PCA)是一种常用的多变量数据分析方法。它用于降低数据维度,以便更好地理解和解释数据集中的变化。PCA通过将原始数据投影到新的坐标轴上,使得新的坐标轴上的…

nodejs+vue+ElementUi废品废弃资源回收系统

系统主要是以后台管理员管理为主。管理员需要先登录系统然后才可以使用本系统,管理员可以对系统用户管理、用户信息管理、回收站点管理、站点分类管理、站点分类管理、留言板管理、系统管理进行添加、查询、修改、删除,以保障废弃资源回收系统系统的正常…

HarmonyOS4.0系统性深入开发36 媒体查询(mediaquery)

媒体查询(mediaquery) 概述 媒体查询作为响应式设计的核心,在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。媒体查询常用于下面两种场景: 针对设备和应用的属性信息(比如显…

Vue单文件学习项目综合案例Demo,黑马vue教程

文章目录 前言一、小黑记事本二、购物车三、小黑记账清单 前言 bilibili视频地址 一、小黑记事本 效果图 主代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible&…

拿捏c语言指针(下)

前言 此篇讲解的主要是函数与指针的那些事~ 书接上回 拿捏c语言指针&#xff08;上&#xff09;和 拿捏c语言指针&#xff08;中&#xff09; ​​​​​​没有看的小伙伴要抓紧喽~ 欢迎关注​​个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#x…

【算法与数据结构】回溯算法、贪心算法、动态规划、图论(笔记三)

文章目录 七、回溯算法八、贪心算法九、动态规划9.1 背包问题9.2 01背包9.3 完全背包9.4 多重背包 十、图论10.1 深度优先搜索10.2 广度优先搜索10.3 并查集 最近博主学习了算法与数据结构的一些视频&#xff0c;在这个文章做一些笔记和心得&#xff0c;本篇文章就写了一些基础…

【kubernetes】二进制部署k8s集群之,多master节点负载均衡以及高可用(下)

↑↑↑↑接上一篇继续部署↑↑↑↑ 之前已经完成了单master节点的部署&#xff0c;现在需要完成多master节点以及实现k8s集群的高可用 一、完成master02节点的初始化操作 二、在master01节点基础上&#xff0c;完成master02节点部署 步骤一&#xff1a;准备好master节点所需…

docker学习总结

docker 1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安装Docker 2.Docker的基本操…

CMake和VsCode调试的使用

目录 CMake使用 CMake下载 创建系统文件目录 MakeList编写规范 VsCode启动调试 添加配置文件 添加断点&#xff0c;启动调试 CMake使用 CMake下载 输入指令 sudo apt install cmake 安装cmake&#xff0c;使用 cmake -version可查看cmake的版本信息 创建系统文件目…

【监督学习之决策树和随机森林】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱决策树&#xff08;Decision Tree&#xff09;随机森林&#xff08;Random Forest&#xff09; 简述概要 了解决策树和随机森林 知识图谱 决策树和随机森林都是机器学习中常用的算法&#xff0c;它们在处…

springboot206基于SpringBoot的农商对接系统的设计与实现

基于Spring Boot的农商对接系统的设计与实现 Design and implementation of agricultural business docking system based on Spring Boot 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离…

Linux——简单的Shell程序

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、Shell程序思路二、Shell代码展示 一、Shell程序思路 用下图的时间轴来表示事件的发生次序…

网页数据的存储--存储为文本文件(TXT、JSON、CSV)

用解析器解析出数据后&#xff0c;接下来就是存储数据了。数据的存储有多种多样&#xff0c;其中最简单的一种是将数据直接保存为文本文件&#xff0c;如TXT、JSON、CSV等。这里就介绍将数据直接保存为文本文件。 目录 一、Python存储数据的方法 1、 文件读取 2、 文件写入…

第2部分 基础篇 第2章 区块链技术(2)

2.4.3. 区块链几个核心概念 本聪老师&#xff1a;大家了解哪些区块链概念&#xff1f; 小明&#xff1a;去中心化、智能合约。 小云&#xff1a;共识机制&#xff0c;还有共识算法。 本聪老师&#xff1a;好的&#xff0c;我们从比特币开始&#xff0c;因为区块链诞生于比特…

Stable Diffusion 3震撼发布模型与Sora同架构

Prompt&#xff1a;Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy Stability AI发布Stable Diffusion 3文本到图像模型。该模型采用扩散变换架构…

git中将所有修改的文件上传到暂存区

案例&#xff1a; 我将本地的多个文件进行了修改&#xff0c;导致文件发生了变化。使用git status命令&#xff0c;查看文件的状态&#xff0c;发现有多个文件是modified&#xff0c;即被修改了。 本地文件发生了变化&#xff0c;需要将modified的文件添加到暂存区&#xff0c…
推荐文章