GCC后端移植适配

目录

 

Introduction to Machine Descriptions

1.Influences on Machine Descriptions

2.Organization of GCC MD

3. Machine Descriptions的基本结构

(1)指定目标指令语义

​(2)General Move Instruction

(3)Relationship Between .md, .c, and.h Files

(4)GCC中的翻译顺序

(5)Retargetability Mechanism of GCC

Spim移植示例

(1)Retargeting GCC to Spim

(2)Registering Spim with GCC Build Process

Step 1

Step 2

(3)Building a Cross-Compiler for Spim

(4) Level 0 of Spim Machine Descriptions


Introduction to Machine Descriptions

1.Influences on Machine Descriptions

2.Organization of GCC MD

GCC要知道目标处理器的指令、特征、目标汇编码的特征。以及目标平台需要执行的特定的优化,例如窥孔优化、指令调度。

  1. GCC MD的文件结构
  1. <target>.h: A set of C macros that describe
    • 目标寄存器()集和特征
    • 系统软件详细信息:汇编程序格式、可执行文件格式等。
  2. <target>.md: Target instructions described using MD constructs.
  3. <target>.c: Optional, but usually required.
    • 实现特定目标代码的函数

3. Machine Descriptions的基本结构

RTL是一种目标特异性IR

GIMPLE →non strict RTL →strict RTL→(操作符匹配+粗操作数匹配,改进操作数匹配)→Unique target ASM string.

考虑生成GIMPLE节点的RTL表达式,有两种构造: define insndefine expand

(1)指定目标指令语义

(2)General Move Instruction

这个定义可以生成所有组合的数据移动模式,甚至是Mem→Mem都是偶可能的。我们还需要一种机制来生成更多受限的数据移动RTX实例.

(3)Relationship Between <target>.md, <target>.c, and<target>.h Files

寄存器类约束在<target>中使用。md文件

    这里z是在REG_CLASS_FROM_LETTER_P中定义的约束字符。使用的是寄存器$ 0。

Register类定义在<target>.h文件中

寄存器类的检查在<target>.c文件中实现

(4)GCC中的翻译顺序

         machine descriptions什么时候会用到?

         在构建过程中当gcc编译程序时,会参考从机器描述中收集到的信息

(5)Retargetability Mechanism of GCC

GCC通过读取机器描述并生成自定义机器描述的后端来实现可重定向性

机器描述受以下因素影响:

HLLsGCC体系结构,以及目标、主机和构建系统的属性

编写机器描述需要:指定C宏、目标指令和任何所需的支持功能

•define insndefine expand用于将GIMPLE表示转换为RTL

 

Spim移植示例

  1. spim is mips simulator developed by James Larus
  2. I RISC machine
  3. I Assembly level simulator: No need of assembler, linkers, or libraries

(1)Retargeting GCC to Spim

Registering spim target with GCC build process

Making machine description files available

Building the compiler

(2)Registering Spim with GCC Build Process

Step 1

Step 2

(3)Building a Cross-Compiler for Spim

         普通的交叉编译器构建过程尝试使用生成的cc1将模拟库(LIBGCC)编译为可执行文件,并使用汇编器、链接器和归档器。

 

(4) Level 0 of Spim Machine Descriptions

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
GCC(GNU编译器集合)移植到iPad是可行的。GCC是一款流行的开源编译器,可用于编译各种编程语言,包括C,C++和Objective-C等。iPad作为一种强大的移动设备,也可以支持GCC移植。 要将GCC移植到iPad,首先需要在iPad上安装一个支持命令行界面的工具,例如终端模拟器。这样就可以在iPad上执行命令行操作,包括安装和编译GCC。 其次,需要在iPad上安装GCC的源代码,并进行编译和构建。GCC的源代码可以从官方网站(gcc.gnu.org)或其他开源代码库中获取。在编译前,需要先检查iPad支持的处理器架构,并相应地配置GCC的编译选项。 在编译和构建过程中可能会遇到一些挑战,例如iPad上的资源限制和平台限制。但是,由于GCC是一个成熟和广泛使用的项目,已经有许多关于GCC在移动设备上的移植经验。因此,可以在网上寻找相关的文档、教程和论坛,以获取移植GCC到iPad的指导和解决方案。 最后,在成功编译和构建GCC后,可以在iPad上使用GCC进行编译和调试C、C++和Objective-C代码。这将使开发者能够在iPad上开发和运行各种应用程序,并利用GCC的强大功能来提高代码的性能和效率。 总而言之,将GCC移植到iPad是实际可行的,开发者可以通过安装命令行界面工具、获取并编译GCC源代码来在iPad上使用GCC进行编译和调试。这对于在移动设备上进行编程和开发来说是一个有益的补充。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值