如何给CPU移植编译器

 我来答
栗子babe557

2022-01-05 · TA获得超过181个赞
知道小有建树答主
回答量:858
采纳率:100%
帮助的人:17.5万
展开全部
如果连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来说,应该是非常少的,因为你可以共享很多与体系无法的代码。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式