- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解析 gcc 的移植机制
复旦大学 政学者论文集 2002
解析GCC 的移植机制
林 丹
摘 要: 设计一个新的编译器往往需要几年的时间 因此我们希望能找到一种缩短开发时间的方法 修改
已有的编译器就是一种有效的手段 本文讨论的是GNU C 编译器的移植 GNU C 编译器自身有许多符合
移植的特点 如 支持不同系统的配置文件 详尽的文档 公开的源代码等 文中介绍了GNU C 编译器系
统的移植机制 主要包括机器描述tm.h 和md 文件 同时通过以i386 为例具体说明了移植的步骤以及移植
过程中应注意的问题
关键字: GNU C 编译器 移植 机器描述 指令模板
Developing a compiler from scratch is unavoidably a project lasting over several years, so a method to reduce this
development phase is very desirable. Hence, modifying the compilers existing today is one direction that is fruitful
to go. GNU C Compiler is fit for porting because it is a freeware, it has a well-defined intermediate language, is
fairly well documented and so on. In this paper we will discuss how to port GNU C Compiler to other machines.
During porting, machine description md file plays an important role. To ensure you understand the porting process
well, we use i386 as an example to show some details.
1. 背景
设计一个新的编译器往往需要几年的时间 因此我们希望能找到一种缩短开发时间的方法 修改已有的编
译器就是一种有效的手段 尽管对于不同的系统和CPU 编译器一般也不相同 但是大部分将要进行编译
的代码既不是程序语句 也不依赖于目标系统 因此 只要进行一些适当的改写 这些代码就可以被其他
的系统 CPU 或程序语言所重用
2. 目标
GNU C 已经被成功地移植到了多种类型的计算机上 包括VLIW Very Long Instruction Word 超标量的
RISC 计算机 以及一些已经过时的机器上 在这些计算机的体系结构中 都或多或少地有一些寄存器 即
使是像 iX86 这样的累加器处理器 都控制了一组寄存器 在这些计算机上 GCC 都能很好的工作 这说
明它是一种可移植性很高的编译器 能在多种计算机上生成高品质的代码 本文将以iX86 为例对GNU C
的移植方法进行总结
3. 方法概述
编译器的移植工作包括两个主要部分
3.1 ABI(应用二进制编程接口) 的规范化
考虑到与先前不同体系结构的项目的兼容性 ABI 应是固定的 ABI 是机器需遵循的基本规则 规定了如
何进行不同数据类型的内存分配 如何调用函数 如何返回函数值等等
3.2 机器的描述
此项工作的目的是描述机器的体系结构和ABI 将其告诉给编译器 在 GCC 中这项工作是通过C 文件和
特殊的机器描述语言 md 文件 来完成的
4. GNU C 编译器
207
解析GCC 的移植机制
GNU C 是一个跨平台的编译器 它是一个免费软件 其源代码是公开的 允许任何人安装使用 或对其代
码进行修改 GNU C 有定义良好的中间语言和非常详细的帮助文档 它自身的特点使其非常适合移植工作
GCC 在编译的时候 首先用一个先导程序 front end 把源文件的代码转换成RTL 一个类似 lisp 的高级
组合语言的
您可能关注的文档
- 鉴于 rcep 谈判中竞争框架.pdf
- 江门市区餐饮服务行业行政审批 标准化试点工作方案.pdf
- 江南银行手机银行简易操作手册.pdf
- 江苏大学青年教师助理教学制度实施办法.pdf
- 江苏法尔胜股份有限公司 2003年半年度报告全文.pdf
- 江苏亨通光电股份有限公司 关于终止资产重组的说明.pdf
- 江苏恒顺醋业股份有限公司控股子公司管理制度.pdf
- 江苏省年度土地储备计划编制规范.pdf
- 江苏省农业科学院 2014年博士后招收计划表.pdf
- 江苏秀强玻璃工艺股份有限公司.pdf
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)