混淆的Tiny C编译器

2021-02-17 18:11:33

迷惑的微型C编译器(OTCC)是为赢得2002年国际迷惑的C代码竞赛(IOCCC)而编写的非常小的C编译器。我的目标是写出能够自行编译的最小的C编译器。我选择C的子集,该子集足以编写一个小的C编译器。然后,我扩展了C子集,直到达到比赛授权的最大大小:2048字节的C源,不包括&#39 ;;',' {','}&#39 ;和空格字符。我选择生成i386代码。原始的OTCC代码只能在i386 Linux上运行,因为它依赖于字节序和未对齐的访问。它在内存中生成程序并直接启动。使用dlsym()解决了外部符号。为了拥有OTCC的便携式版本,我制作了一个名为OTCCELF的变体。它仅比OTCC大一点,但是它可以直接从Csource生成动态链接的i386 ELF可执行文件,而无需依赖任何binutils工具! OTCCELF已在i386 Linux和Sparc Solaris上成功测试。注意:我的另一个项目TinyCC是功能齐全的ISOC99 C编译器,是从OTCC的源代码开始编写的!