首页 > 其他分享 >LLVM - 编译器后端-目标描述

LLVM - 编译器后端-目标描述

时间:2024-08-17 09:25:20浏览次数:9  
标签:M88k 汇编器 LLVM 架构 后端 编译器 添加 CPU

一:概述

        LLVM具有非常灵活的架构。我们可以向其添加新的目标后端。后端的核心是目标描述。在本篇文章中,我们将学习如何在LLVM中添加一个CPU后端。

        在本章中,我们将涵盖以下内容:
        • 为新的后端搭建环境,学习M88k CPU架构,并介绍从哪里可以找到所需的信息。
        • 将新架构添加到Triple类中,学习如何让LLVM识别新的CPU架构。
        • 扩展LLVM中的ELF文件格式定义,向处理ELF目标文件的库和工具添加对M88k特有重定位的支持。
        • 创建目标描述,运用我们对TableGen语言的知识来建模目标描述中的寄存器文件和指令。
        • 将M88k后端添加到LLVM,解释LLVM后端所需的数据结构。
        • 实现汇编器解析器,学习如何开发汇编器。
        • 创建反汇编器,学习如何创建反汇编器。

        到本篇文章结束时,我们将知道如何将新后端添加到LLVM。我们将获得在目标描述中开发寄存器文件定义和指令定义的知识,并且我们将知道如何从该描述中创建汇编器和反汇编器。

二:为后端搭建环境

        无论是出于商业需要支持新的 CPU,还是仅仅是为了一个爱好项目来增加对某些旧架构的支持,向 LLVM 添加一个新的后端都是一项重大任务。本文及接下来的两篇文章概述了开发新后端所需的内容。我们将为摩托罗拉 M88k 架构添加一个后端,该架构是 1980 年代的 RISC 架构。

        M88k 架构早已停产,但我们找到了足够的信息和工具,使得为其添加 LLVM 后端成为一个有趣的目标。我们将从扩展 Triple 类这一非常基础的任务开始。

标签:M88k,汇编器,LLVM,架构,后端,编译器,添加,CPU
From: https://blog.csdn.net/zg260/article/details/141233747

相关文章

  • 后端工具包(个人版)
    功能:1、实体类敏感字段脱敏功能,支持:实体对象及list<实体对象>。 使用:1、字段脱敏功能 1.1jar包下载导入 1.2开启aop注解扫描,以及扫描自己的工具包。 1.3 在controller的方法上添加@DesensitizationInterface注解,注:返回类型为实体类或list<实体类>形式。 1.4......
  • Axios请求使用params参数导致后端获取数据嵌套
    问题重述:首先看前端的axios请求这里我使用params参数将data数据传给后端letdata=JSON.stringify(this.posts);axios.post("/blog_war_exploded/insertPost",{params:{data:data......
  • 使用 Decap CMS 作为 Hexo 后端以实现在线编辑(保姆级教程)
    转自我的博客,本人博客体验效果更佳。Posts:使用DecapCMS作为Hexo后端以实现在线编辑(保姆级教程)前言静态网站建站成本低、安全、轻量,但最大的缺点就是没有后台,更新网站麻烦。DecapCMS就能解决这个问题本文将介绍DecapCMS,并详细讲解DecapCMS部署教程。让你......
  • Swift编译器的代码验证机制:安全与效率的双重协奏
    标题:Swift编译器的代码验证机制:安全与效率的双重协奏引言Swift语言以其安全性和高性能著称,这在很大程度上归功于其编译器的精妙设计。Swift编译器的代码验证机制是确保代码既安全又高效的关键环节。本文将详细探讨Swift编译器的代码验证机制,并展示如何在实践中利用这些机......
  • 【Django开发】前后端分离django美多商城项目第1篇:欢迎来到美多 项目主要页面介绍【附
    本教程的知识点为:项目准备项目准备配置1.修改settings/dev.py文件中的路径信息2.INSTALLED_APPS3.数据库用户部分图片1.后端接口设计:视图原型2.具体视图实现用户部分使用Celery完成发送判断帐号是否存在1.判断用户名是否存在后端接口设计:用户部分......
  • SQL— DDL语句学习【后端 10】
    SQL—DDL语句学习在数据管理的广阔领域中,SQL(StructuredQueryLanguage)作为操作关系型数据库的编程语言,扮演着举足轻重的角色。它不仅定义了操作所有关系型数据库的统一标准,还为我们提供了强大的工具来管理、查询和修改数据库中的数据。今天,我们将一起走进SQL的世界,了解其......
  • 一文搞懂后端面试之数据库分布式事务【中间件 | 数据库 | MySQL | ACID】
    单库拆分为分库分表之后,一个巨大的挑战就是本地事务变成了分布式事务。事实上,即使没有分库分表,在微服务架构之下我们也还是会面临分布式事务的问题。前置知识分布式事务既可以是纯粹多个数据库实例之间的分布式事务,也可以是跨越不同中间件的业务层面上的分布式事务。前表......
  • 前后端不分离"老"项目,XSS 漏洞处理实践
    前言本月迭代需求没有几个,领导给我派了一个漏洞修复的活。这个项目是一个前后端不分离的ToB老项目,前端使用Velocity模板+JQuery+miniui,后端是用的Spring。嗯,前后端不分离,技术老旧,模块众多且耦合,基础设施不完善,让我从一开始校招(2022)刚进来接触到这个项目时候,就感到“畏惧、难受......
  • axios访问后端,及后端返回前端报错跨域问题
    packagecom.example.demo.test.config;importorg.springframework.util.StringUtils;importjavax.servlet.*;importjavax.servlet.annotation.WebFilter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjav......
  • 点击识别按钮调用后端接口,中途按下结束识别,但是识别还是进行啦js
    在JavaScript中,如果你想要在点击按钮后调用一个接口,并且在这个过程中按下一个按钮来中断或取消这个请求,你可以使用fetchAPI来发起请求,并使用AbortController来取消这个请求。以下是一个简单的例子://获取按钮元素conststartButton=document.getElementById('startButton');......