SDCC 编译器项目目录结构
项目概述
SDCC (Small Device C Compiler) 是一个开源的、可重定向的 ANSI C 编译器套件,支持多种微控制器架构。
根目录文件
构建和配置文件
configure - 自动配置脚本 (321KB)
configure.ac - 自动配置源文件 (40KB)
Makefile.in - 主构建文件模板
Makefile.common.in - 通用构建规则
sdccconf_in.h - 编译器配置头文件
conf.mk - 构建配置
项目文件
sdcc.sln - Visual Studio 解决方案文件
all.vcxproj - Visual Studio 项目文件
config.vcxproj - 配置项目文件
文档和许可证
ChangeLog - 项目变更日志 (1.8MB)
LICENSE - 许可证文件
COPYING - 版权信息
README - 项目说明
主要目录结构
1. src/ - 编译器核心源代码
功能: 包含SDCC编译器的主要源代码,包括词法分析器、语法分析器、代码生成器等核心组件。
主要文件:
SDCCmain.c - 编译器主入口点
SDCC.y - 语法分析器定义 (Yacc/Bison)
SDCC.lex - 词法分析器定义 (Flex/Lex)
SDCCast.c/h - 抽象语法树处理
SDCCicode.c/h - 中间代码生成
SDCCsymt.c/h - 符号表管理
SDCCopt.c/h - 代码优化
SDCCpeeph.c/h - 窥孔优化
SDCCglue.c/h - 代码粘合
SDCCval.c/h - 值计算
SDCCerr.c/h - 错误处理
架构特定目录:
mcs51/ - Intel 8051 系列支持
pic14/ - Microchip PIC14 系列支持
pic16/ - Microchip PIC16 系列支持
z80/ - Z80 系列支持
avr/ - Atmel AVR 系列支持
hc08/ - Motorola HC08 系列支持
stm8/ - STM8 系列支持
mos6502/ - MOS 6502 系列支持
pdk/ - Padauk PDK 系列支持
f8/ - Fairchild F8 系列支持
ds390/ - Dallas DS390 系列支持
2. device/ - 设备支持文件
功能: 包含各种微控制器的头文件、库文件和设备特定代码。
device/include/ - 标准头文件
通用头文件:
stdio.h - 标准输入输出
stdlib.h - 标准库函数
string.h - 字符串处理
math.h - 数学函数
stdint.h - 整数类型定义
float.h - 浮点数定义
limits.h - 数据类型限制
ctype.h - 字符类型
assert.h - 断言宏
stdbool.h - 布尔类型
time.h - 时间函数
signal.h - 信号处理
架构特定头文件目录:
mcs51/ - 8051 系列头文件
pic14/ - PIC14 系列头文件
pic16/ - PIC16 系列头文件
z80/ - Z80 系列头文件
hc08/ - HC08 系列头文件
ds390/ - DS390 系列头文件
ds400/ - DS400 系列头文件
z180/ - Z180 系列头文件
xa51/ - XA51 系列头文件
rab/ - RAB 系列头文件
device/lib/ - 标准库文件
通用库文件:
- 数学运算库 (
_fsadd.c, _fsmul.c, _fsdiv.c 等)
- 字符串处理库 (
strlen.c, strcpy.c, strcmp.c 等)
- 内存操作库 (
_memset.c, _memcpy.c 等)
- 类型转换库 (
_fs2sint.c, _sint2fs.c 等)
- 算术运算库 (
_divsint.c, _modsint.c 等)
架构特定库目录:
mcs51/ - 8051 系列库
pic14/ - PIC14 系列库
pic16/ - PIC16 系列库
z80/ - Z80 系列库
hc08/ - HC08 系列库
stm8/ - STM8 系列库
mos6502/ - MOS 6502 系列库
pdk13/, pdk14/, pdk15/ - PDK 系列库
ds390/ - DS390 系列库
ds400/ - DS400 系列库
device/non-free/ - 非自由软件组件
包含可能受版权保护的设备特定代码。
3. sdas/ - 汇编器
功能: 包含各种架构的汇编器实现。
架构特定汇编器:
as8051/ - 8051 汇编器
aspdk/ - PDK 汇编器
aspdk13/, aspdk14/, aspdk15/, aspdk16/ - 不同版本PDK汇编器
asz80/ - Z80 汇编器
asstm8/ - STM8 汇编器
as6808/ - HC08 汇编器
as6500/ - 6500 系列汇编器
asf8/ - F8 汇编器
asrab/ - RAB 汇编器
asgb/ - Game Boy 汇编器
astlcs90/ - TLCS90 汇编器
as8xcxxx/ - 8XCxxx 汇编器
xa51/ - XA51 汇编器
4. support/ - 支持工具
功能: 包含编译过程中使用的各种工具和脚本。
主要组件:
cpp/ - C预处理器
scripts/ - 构建和工具脚本
sdbinutils/ - 二进制工具集
makebin/ - 二进制文件生成工具
packihx/ - Intel HEX 文件处理工具
util/ - 通用工具
tests/ - 测试套件
valdiag/ - 验证诊断工具
regression/ - 回归测试
5. bin/ - 可执行文件模板
功能: 包含各种工具的可执行文件模板。
主要工具:
sdcc.in - 主编译器
sdcpp.in - C预处理器
sdar.in - 静态库管理器
sdnm.in - 符号表工具
sdobjcopy.in - 目标文件复制工具
sdranlib.in - 静态库索引工具
6. doc/ - 文档
功能: 项目文档和用户手册。
主要文档:
sdccman.lyx - 用户手册 (LyX格式)
INSTALL.txt - 安装说明
README.txt - 项目说明
- 各种架构的调用约定图 (SVG格式)
7. sim/ - 模拟器
功能: 包含硬件模拟器。
主要组件:
8. debugger/ - 调试器
功能: 包含调试器相关代码。
主要组件:
构建系统
主要构建文件
Makefile.in - 主构建文件
Makefile.common.in - 通用构建规则
main_in.mk - 主构建规则
port.mk - 端口特定构建规则
clean.mk - 清理规则
配置系统
configure - 自动配置脚本
configure.ac - 配置源文件
aclocal.m4 - 自动工具宏
config.guess - 系统类型猜测
config.sub - 系统类型验证
支持的架构
SDCC 支持多种微控制器架构:
- Intel 8051 系列 - 经典8位微控制器
- Microchip PIC - PIC14, PIC16 系列
- Zilog Z80 - Z80, Z180, Z80N 系列
- Atmel AVR - 8位微控制器
- Motorola HC08 - 8位微控制器
- STM8 - STMicroelectronics 8位微控制器
- MOS 6502 - 经典8位处理器
- Padauk PDK - 低成本微控制器
- Fairchild F8 - 早期微控制器
- Dallas DS390/DS400 - 高速微控制器
开发工具链
SDCC 提供完整的开发工具链:
- 编译器 - 将C代码编译为汇编代码
- 汇编器 - 将汇编代码转换为目标文件
- 链接器 - 将目标文件链接为可执行文件
- 库管理器 - 管理静态库
- 调试器 - 提供调试支持
- 模拟器 - 硬件模拟和测试
这个目录结构展示了SDCC作为一个完整的嵌入式开发工具链的复杂性,支持多种微控制器架构,并提供从编译到调试的完整解决方案。