zoukankan      html  css  js  c++  java
  • GCC后端移植杂记

      为GCC后端移植新的处理器架构的确是一件非常痛苦的事情。

      拿到GCC源码时,发现它的规模比预想中庞大得多,但好在体系结构十分清晰,前端后端高度解耦。解耦的关键就在于内部的RTL中间代码(表达形式类似于LISP语言)。

      用了大概半个月时间研究RTL原理。之后用了一周时间编写机器描述文件和基于C语言的指令序列生成逻辑。然后用汇编实现libgcc里各种软件浮点和定点乘除操作,最后花了十分钟完成CRT启动部分的核心代码。关键是,这些都是利用零碎的课余时间完成的。

      最终,配合之前适配的Binutils(包括AS汇编器、LD链接器),GCC已经可以正常编译出新架构的ELF文件了。

    (图左下:用于测试的C源代码;右上:GCC生成的汇编代码;左上:利用objdump反汇编GCC生成的目标文件得到的结果(重定向到了文件)。

    然而到现在,我们还没有一个可用的C Runtime Library。接下来计划继续移植NewLib。(ˉ▽ˉ;)

    长路漫漫。。。

    ==================

    ps: 处理器Github主页在此:https://github.com/cassuto/OpenProcessor-64k

    2020.7.4:新的处理器架构为nano-cpu

    可综合Verilog设计:https://github.com/cassuto/nano-cpu32k

    工具链:https://github.com/cassuto/nano-cpu32k-toolchain

    仿真器:https://github.com/cassuto/nano-cpu32k-emulator

  • 相关阅读:
    C语言基础10
    swift笔记06
    C语言基础09
    C语言基础08
    C语言基础07
    C语言基础06
    swift笔记05
    Swift笔记4
    C语言基础05
    [转]一个清华计算机博士生的退学申请
  • 原文地址:https://www.cnblogs.com/cassuto/p/9849101.html
Copyright © 2011-2022 走看看