解析 gcc 的移植机制.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 的高级 组合语言的

文档评论(0)

maxmin + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档