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作为一个完整的嵌入式开发工具链的复杂性,支持多种微控制器架构,并提供从编译到调试的完整解决方案。