littlebot
Published on 2025-04-13 / 0 Visits
0

【源码】基于C语言的Swirl编译器

项目简介

Swirl是一款小巧、快速、功能强大且安全的C语言编译器。它能在多种系统上编译和执行C代码,支持直接编译和执行C源文件,无需链接或汇编,还支持C脚本。此外,Swirl朝着完全符合ISOC99标准的方向发展,并且可以自编译。

项目的主要特性和功能

  1. 小巧:能在各种环境(如救援磁盘)下编译和执行C代码。
  2. 快速:生成优化的x86代码,无字节码开销,编译、汇编和链接速度比gcc -O0快约7倍。
  3. 功能不限:可直接使用任何C动态库,朝着完全符合ISOC99标准发展,且能自编译。
  4. 安全:包含可选的内存和边界检查器,边界检查代码可与标准代码自由混合。
  5. 直接编译执行:可直接编译和执行C源文件,无需链接或汇编,包含完整的C预处理器。
  6. 支持C脚本:在C源文件首行添加#!/usr/local/bin/swirl -run,即可像shell或perl脚本一样直接执行。

安装使用步骤

安装

在i386/x86_64/arm/aarch64/riscv64的Linux/macOS/FreeBSD/NetBSD/OpenBSD主机上安装: bash ./configure make make test make install 注意:对于FreeBSD、NetBSD和OpenBSD,应使用gmake代替make;对于Windows,请阅读swirl-win32.txt。编译文档需要安装makeinfo。默认情况下,Swirl安装在/usr/local/bin。使用./configure --help查看配置选项。

使用

假设你已了解ANSI C。可查看示例文件ex1.c了解程序的样子。若需要小型基本libc支持,可使用头文件<swirllib.h>,当然也可使用标准头文件,只是编译速度较慢。 - C脚本使用:在C源文件首行添加#!/usr/local/bin/swirl -run,并设置可执行权限(chmod a+x your_script),即可像shell或perl脚本一样启动C代码,命令行参数会像ANSI C一样传递给主函数的argcargv。 - 示例运行: - ex1.c:最简单的示例(Hello World),也可直接作为脚本运行:./ex1.c。 - ex2.c:更复杂的示例,根据给定数字列表通过四则运算查找数字(基准测试)。 - ex3.c:计算斐波那契数列(基准测试)。 - ex4.c:更复杂的X11程序,实际上是非常复杂的测试,因为使用了标准头文件,也可直接作为脚本运行:./ex4.c。 - ex5.c:使用标准glibc头文件的Hello World示例。 - swirl.c:Swirl可自编译,用于检查代码生成器。 - swirltest.c:Swirl的自动测试文件,在执行make test时使用,用于测试许多可能的细微错误。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】