【发布时间】:2011-09-20 11:38:16
【问题描述】:
我正在设计 TTL 串行计算机,我正在努力选择更适合 LLVM 编译器后端的架构(我希望能够在那里运行任何 C++ 软件)。不会有 MMU、没有乘法/除法、没有硬件堆栈、没有中断。
我有两个主要选择:
1) 8 位内存、8 位 ALU、8 位寄存器 (~12-16)。内存地址宽度 24 位。所以我需要使用 3 个寄存器作为 IP,3 个寄存器用于任何内存位置。
不用说,任何地址计算在编译器中实现都是非常痛苦的。
2) 24 位内存、24 位 ALU、24 位寄存器 (~6-8)。平坦的记忆,不错。缺点是由于设计的串行性质,即使我们在一些布尔值上进行操作,每个操作也需要多花 3 倍的时钟。 24 位内存数据宽度很昂贵。而且一般来说在硬件上实现起来也比较困难。
问题是:您认为在这个基于 8 位、无堆栈的硬件上实现所有 c++ 功能是可能的,还是我需要更复杂的硬件来生成质量和速度合理的代码?
【问题讨论】:
-
这可能是一个幼稚的问题,但为什么你必须实现 C++ 的所有特性呢?就不能用写一个新的 LLVM 目标架构,Clang 编译 C++ 就没有问题了吗?
-
@Dan Cecile 这正是我要做的。但是您可以看到,为具有 24 位内存空间的 8 位 CPU 编写 LLVM 后端可能有点不简单。
-
所以你有 4 个部分;弄清楚如何实现LLVM assembly language 与您的硬件一起使用,复制和调整existing LLVM target 以与您的硬件一起使用,弄清楚如何让Clang 到generate 8-bit LLVM bytecode (pointer sizes are configurable),然后将您的硬件更改为更多合适。