romcc is a C compiler which generates code which uses only processor registers to store variables, instead of RAM. It was designed to aid with RAM initialization inside the open-source BIOS replacement project coreboot. Before RAM has been initialized there is no RAM available for use and therefore code can only use the CPU registers for memory. A standard compiler like GCC would not be suitable for writing code like this as it requires a stack, which, in the x86 and most other architectures, would have to be contained in RAM. Since all functions compiled by romcc are inlined, all code is roughly three times larger than hand-coded assembly. It is now obsolete for coreboot because the coreboot project uses "cache as RAM", enabling an ordinary C compiler to be used. However, it is still used in the SerialICE project, related to coreboot.
|