为GCC后端移植新的处理器架构的确是一件很是痛苦的事情。前端
拿到GCC源码时,发现它的规模比预想中庞大得多,但好在体系结构十分清晰,前端后端高度解耦。解耦的关键就在于内部的RTL中间代码(表达形式相似于LISP语言)。git
用了大概半个月时间研究RTL原理。以后用了一周时间编写机器描述文件和基于C语言的指令序列生成逻辑。而后用汇编实现libgcc里各类软件浮点和定点乘除操做,最后花了十分钟完成CRT启动部分的核心代码。关键是,这些都是利用零碎的课余时间完成的。github
最终,配合以前适配的Binutils(包括AS汇编器、LD连接器),GCC已经能够正常编译出新架构的ELF文件了。后端
(图左下:用于测试的C源代码;右上:GCC生成的汇编代码;左上:利用objdump反汇编GCC生成的目标文件获得的结果(重定向到了文件)。架构
然而到如今,咱们尚未一个可用的C Runtime Library。接下来计划继续移植NewLib。(ˉ▽ˉ;)测试
长路漫漫。。。blog
==================源码
ps: 处理器架构Github主页在此:https://github.com/cassuto/OpenProcessor-64kit