mcc:一个简单易理解的 C 编译器

mcc (minimal c compiler) 是一个小型的 C 编译器,仅支持有限的 C 语言特性,思路来源于 C4。 C4 仅用了少量代码和有限特性实现了自举(1个文件4个函数),非常精巧但却晦涩难懂。 正所谓:编译过程一遍过,递归调用循环调,全局变量随处变,类型转换强制转。 mcc 则走的是相反的路,完全以简单可理解为目标。当然,不可避免地,代码量会大许多,大概有1700多行。 如果你刚刚开始学习编译原理,希望真切地了解编译器前端和虚拟机运行,而不只是书上的文法和期末的试卷,那么可以考虑先看看 mcc,然后再回去看 C4,相信会豁然开朗。 项目地址:https://github.com/patricklaux/mcc 注:C4 是500多行代码。 1. 编译运行 # 下载源码 git clone git@github.com:patricklaux/mcc.git # 编译 mcc gcc -o mcc ./src/mcc/lexer.c ./src/mcc/parser.c ./src/mcc/vm.c ./src/mcc/mcc.c # 使用 mcc 运行测试代码 ./mcc [-s] [-d] ./src/test/test1.c 提示: 除了直接用 gcc 编译,也可以用 cmake,这里不再赘述。 -s 和 -d 为可选参数: -s 打印生成的指令,但不执行;-d 运行并打印整个运行过程执行的指令。 Windows 10 (MinGW_w64 11.0) 和 Ubuntu 22.04 (gcc 11.4.0) 均可正常编译运行。 2. 概要介绍 2.1. 流程 为了便于理解,特意画了几张流程图,按图索骥,相信更容易理解。 ...

2025-07-18 20:00:00 · 刘涛

Clion远程调试Redis源码

官方 Redis 不支持 Windows 环境下构建运行,如希望在 Windows 环境下跟踪调试 Redis 源码,可使用 CLion 的远程开发模式。 1. 概述 CLion 的远程调试有两种模式: Remote GDB Server:仅支持 cmake 项目,CLion 可自动构建二进制文件并上传到远程服务器,并自动调用 gdbserver 执行程序。 Remote Debug:可支持非 cmake 项目,需手动在远程服务器端完成首次构建,并将可执行文件和符号表下载到本地环境。 由于 Redis 通过 makefile 进行构建,并非 cmake 项目,所以需采用 Remote Debug 模式。 Remote Debug Remote GDB Server Project format Any CMake Toolchain Not specified Default on macOS/Linux; MinGW, Cygwin, WSL on Windows; Remote and Docker toolchains also available Path mappings Not created automatically, should be set up in run/debug configuration Not created automatically,should be set up in run/debug configuration 2. 环境准备 本地系统: Windows(Windows 10) ...

2025-04-19 02:35:41 · 刘涛