关于移植gcc编译器的问题

bluntcp 2005-11-04 10:14:35
我现在要对一款gcc不支持的处理器实现c编译。

看了好多的文章都说直接移植gcc最方便,修改

gcc中关于机器描述的文件即可,但是我有一个

疑问,修改了gcc的机器描述文件,他是不是就

可以直接生成可执行的机器代码呢?我猜应该

不是吧?

我想问的是在一个gcc不支持的目标机上移植

gcc编译器的具体过程。

btw:我们已经实现了一个目标机的简单的汇编

器能够生成可执行的目标机代码。
...全文
335 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluntcp 2005-11-16
  • 打赏
  • 举报
回复
thanks
tb01412 2005-11-13
  • 打赏
  • 举报
回复
如果连GCC都不支持你的CPU的话,我劝你不要在上面花功夫了,不是一般人做得出来的,也不是一天两天做得出来的,相当于你要从头实现一次GCC中的汇编处理和连接处理,而首先要了解相关CPU的指令集,机器码,然后再谈别的!!!!

所谓交叉编译环境都是指在GCC所支持的CPU的情况下,才能建立!!!!!!!!!!!

一个编译器有编译程序的时候,大概要经历预处理,语法,词法分析,优化,产生中间代码,编译,连接等过程,如果是一套GCC都不支持的CPU,预处理,语法,词法分析,优化过程可以跟与它差不多的CPU共享同样的过程,但产生中间代码,编译连接与具体的CPU有很大的相关性

我们现在举一个例子来说明:比如我们建立一个支持ARM的交叉编译环境
这个例子你与所说的要求还有一定区别(因为GCC支持ARM),不过通过这个例子可以引申出你需要做的事情,第一件要做的事情用在PC机上的GCC来编译一套用于ARM的编译工具,就是所谓的bilutils工具,包括用于ARM芯片的as,ld等程序,第二件事情就是用第一步中所产生的那套工具来编译GCC(用于ARM的),第三件事是用第二步所产生的工具来编译GLIBC库,当然,你也许还需要它对C++的支持,那么就得再编译对C++的支持,比如G++,STL库等

而LZ现在要做的工作除了上述要求之外,还有最重要的工作要作,就是在GCC中加入产生as,ld等工具的代码,很显然,这个工作量巨大,而且很难,比如你写一个最简单的C文件,里面仅声明一个整型变量,此时你自巳的编译器在前期处理阶段与x86没什么区别,可以照抄,那么如何让它变成机器码呢?这就是你需要做的工作,我没有做过类似的工作,在这里仅是建议,你需要去深入理解GCC源码,然后再加入你自己的实现,我想你加入的部分比起整个GCC来说,应该是非常少的,因为你可以共享很多与体系无法的代码

rzsheng 2005-11-09
  • 打赏
  • 举报
回复
交叉编译
bagualong 2005-11-08
  • 打赏
  • 举报
回复
是不是ARM呀?
yangyzqo 2005-11-08
  • 打赏
  • 举报
回复
UP
bluntcp 2005-11-07
  • 打赏
  • 举报
回复
我们肯定不是X86的

结构都不是冯。诺易曼的,跟arm一样是哈佛结构的。

肯定是要作成交叉c编译器,在linux下的。

关键问题是怎么作。修改了机器描述文件之后呢

怎么生成新的gcc,是不是还必须再改as,ld来生成

指定的目标机代码。
bluedreammer 2005-11-04
  • 打赏
  • 举报
回复
思路如下:

---〉是x86吗?
是---可以移植的,
不是---需要交叉编译器,如arm-cross-gcc等
---〉操作系统是什么?linux下还是windows
找找资料把

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧